vendor: 3,628 bytes, lines 1-88
1/******/ (function(modules) { // webpackBootstrap 2/******/ // The module cache 3/******/ var installedModules = {}; 4/******/ 5/******/ // The require function 6/******/ function __webpack_require__(moduleId) { 7/******/ 8/******/ // Check if module is in cache 9/******/ if(installedModules[moduleId]) { 10/******/ return installedModules[moduleId].exports; 11/******/ } 12/******/ // Create a new module (and put it into the cache) 13/******/ var module = installedModules[moduleId] = { 14/******/ i: moduleId, 15/******/ l: false, 16/******/ exports: {} 17/******/ }; 18/******/ 19/******/ // Execute the module function 20/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21/******/ 22/******/ // Flag the module as loaded 23/******/ module.l = true; 24/******/ 25/******/ // Return the exports of the module 26/******/ return module.exports; 27/******/ } 28/******/ 29/******/ 30/******/ // expose the modules object (__webpack_modules__) 31/******/ __webpack_require__.m = modules; 32/******/ 33/******/ // expose the module cache 34/******/ __webpack_require__.c = installedModules; 35/******/ 36/******/ // define getter function for harmony exports 37/******/ __webpack_require__.d = function(exports, name, getter) { 38/******/ if(!__webpack_require__.o(exports, name)) { 39/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 40/******/ } 41/******/ }; 42/******/ 43/******/ // define __esModule on exports 44/******/ __webpack_require__.r = function(exports) { 45/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 46/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 47/******/ } 48/******/ Object.defineProperty(exports, '__esModule', { value: true }); 49/******/ }; 50/******/ 51/******/ // create a fake namespace object 52/******/ // mode & 1: value is a module id, require it 53/******/ // mode & 2: merge all properties of value into the ns 54/******/ // mode & 4: return value when already ns object 55/******/ // mode & 8|1: behave like require 56/******/ __webpack_require__.t = function(value, mode) { 57/******/ if(mode & 1) value = __webpack_require__(value); 58/******/ if(mode & 8) return value; 59/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 60/******/ var ns = Object.create(null); 61/******/ __webpack_require__.r(ns); 62/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 63/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 64/******/ return ns; 65/******/ }; 66/******/ 67/******/ // getDefaultExport function for compatibility with non-harmony modules 68/******/ __webpack_require__.n = function(module) { 69/******/ var getter = module && module.__esModule ? 70/******/ function getDefault() { return module['default']; } : 71/******/ function getModuleExports() { return module; }; 72/******/ __webpack_require__.d(getter, 'a', getter); 73/******/ return getter; 74/******/ }; 75/******/ 76/******/ // Object.prototype.hasOwnProperty.call 77/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 78/******/ 79/******/ // __webpack_public_path__ 80/******/ __webpack_require__.p = ""; 81/******/ 82/******/ 83/******/ // Load entry module and return exports 84/******/ return __webpack_require__(__webpack_require__.s = "./.tmp/app_col_eu_core/js/main.js"); 85/******/ }) 86/************************************************************************/ 87/******/ ({ 88
89/***/ "./.tmp/app_col_eu_core/js/aem/globalMarketingBanner.js": 90/*!**************************************************************!*\ 91 !*** ./.tmp/app_col_eu_core/js/aem/globalMarketingBanner.js ***! 92 \**************************************************************/ 93/*! no static exports found */ 94/***/ (function(module, exports, __webpack_require__) { 95 96"use strict"; 97 98 99/** 100 * Contains Functionality for Global Marketing Banner 101 * Comprised of the AEM Marketing Banner Controller component and one or multiple Marketing Banner Child components 102 * This is slotted in the nav-1 content slot on all brands 103 */ 104module.exports = { 105 init: function init() { 106 if (!$('.js-global-marketing-banner').length) { 107 return; 108 } 109 var $mobileMessages = $('.global-marketing-banner-messages .mobileMessage'); 110 var $desktopMessages = $('.global-marketing-banner-messages .desktopMessage'); 111 var $bannerIcon = $('.marketing-banner__details'); 112 $mobileMessages.first().show(); // show the first message - mobile 113 $desktopMessages.first().show(); // show the first message - desktop 114 115 var totalBannerMessages = $mobileMessages.length; // equates to total number of marketing banner child components in aem 116 var currentMessageIndex = 0; 117 var setIntervalMarketingBannerId; 118 var nextMessageIndex; 119 120 /** 121 * Starts the banner message rotation animation 122 * Animation also will not run unless there is more than one marketing banner child message 123 */ 124 function playMessageRotation() { 125 nextMessageIndex = (currentMessageIndex + 1) % totalBannerMessages; 126 $mobileMessages.filter(':visible').fadeOut(null, function () { 127 $mobileMessages.eq(nextMessageIndex).fadeIn(); // fadeIn the matching index message 128 currentMessageIndex = nextMessageIndex; 129 }); 130 $desktopMessages.filter(':visible').fadeOut(null, function () { 131 $desktopMessages.eq(nextMessageIndex).fadeIn(); // fadeIn the matching index message 132 currentMessageIndex = nextMessageIndex; 133 }); 134 $bannerIcon.fadeOut(null, function () { 135 $bannerIcon.fadeIn(); // fadeIn the matching index message 136 }); 137 } 138 139 /** 140 * Stops the banner message rotation animation 141 */ 142 function pauseMessageRotation() { 143 clearInterval(setIntervalMarketingBannerId); 144 } 145 /** 146 * Starts the interval and calls the animation function - interval is set to 5 seconds 147 */ 148 function startInterval() { 149 if (totalBannerMessages > 1) { 150 // only start rotation if more than one message 151 setIntervalMarketingBannerId = setInterval(playMessageRotation, 5000); 152 } 153 } 154 startInterval(); // start rotation 155 156 /** 157 * If the drawer is opened, shows a span that reads 'Hide Offers'. 158 * Customized mobile and desktop messages are hidden when drawer is opened. 159 * When the drawer is closed, the mobile/desktop messages & spans are shown, then the 'Hide Offers' message is hidden. 160 * @param {boolean} isPaused controls if the animation is playing or paused 161 */ 162 function toggleBannerText(isPaused) { 163 if (isPaused) { 164 // if drawer is open 165 // display the hide offers text span and hide rotating message els 166 $('.global-marketing-banner-messages__hide-offers').removeClass('d-none'); 167 // hide the rotating messages 168 $('.global-marketing-banner-messages span').addClass('d-none'); 169 // updates svg 170 $('.marketing-banner__details').attr('aria-expanded', 'true'); 171 } else { 172 // if drawer is closed 173 // hide the hide offers text span 174 $('.global-marketing-banner-messages__hide-offers').addClass('d-none'); 175 // display the mobile/desktop text spans 176 $('.global-marketing-banner-messages span').removeClass('d-none'); 177 // updates svg 178 $('.marketing-banner__details').attr('aria-expanded', 'false'); 179 } 180 } 181 182 // Controls what the banner reads when the drawer is opened vs closed 183 $('body').on('show.drawer', '.marketing-banner__drawer', function () { 184 // drawer opens 185 pauseMessageRotation(); // pause rotation of messages 186 toggleBannerText(true); // show the "Hide Offer" message, hide the rotating banner messages 187 }).on('hidden.drawer', '.marketing-banner__drawer', function () { 188 // drawer closes 189 startInterval(); // start rotation 190 toggleBannerText(false); // show the rotating banner messages, hide the "Hide Offers" message 191 }); 192 } 193}; 194 195/***/ }), 196
197/***/ "./.tmp/app_col_eu_core/js/aem/modalComponent.js": 198/*!*******************************************************!*\ 199 !*** ./.tmp/app_col_eu_core/js/aem/modalComponent.js ***! 200 \*******************************************************/ 201/*! no static exports found */ 202/***/ (function(module, exports, __webpack_require__) { 203 204"use strict"; 205/* WEBPACK VAR INJECTION */(function(global) { 206 207var Cookies = global.Cookies = __webpack_require__(/*! js-cookie/src/js.cookie */ "./node_modules/js-cookie/src/js.cookie.js"); 208var sizefitJs = __webpack_require__(/*! ../sizefit/sizefit */ "./.tmp/app_col_eu_core/js/sizefit/sizefit.js"); 209 210/** 211 * Checks if the modal content will be the size fit guide, if so grab the contents and insert them into the modal body 212 * @param {JQuery} $modalContentWrapper JQuery object that represents the root node of the modal 213 * @returns {int} length of data attribute value 214 */ 215function isSizeFitModal($modalContentWrapper) { 216 return $modalContentWrapper.find('.modal-body').data('sizefitguide-url'); 217} 218 219/** 220 * Sets up the event behavior and shows the modal with the desired content 221 * @param {JQuery} $modalContentWrapper JQuery object that represents the root node of the modal 222 */ 223function triggerModal($modalContentWrapper) { 224 $modalContentWrapper.on('show.bs.modal', function () { 225 var $this = $(this); 226 $this.find('.modal-dialog').css({ 227 height: 'auto' 228 }); 229 if (isSizeFitModal($this)) { 230 sizefitJs.getSizeFitGuideContent($this, $this.find('.modal-body').data('sizefitguide-url')); 231 } 232 }).on('hidden.bs.modal', function () { 233 var $this = $(this); 234 235 // reset modal body innerHTML if the content we retrieved required Ajax 236 if (isSizeFitModal($this)) { 237 $this.find('.modal-body').html(''); 238 } 239 240 // remove the modal markup completely from the DOM 241 $this.remove(); 242 243 // also remove the backdrop 244 $('.modal-backdrop').remove(); 245 }); 246 $modalContentWrapper.appendTo('body'); 247 $modalContentWrapper.modal('show'); 248} 249module.exports = { 250 init: function init() { 251 var pageLoadModalClassName = 'js-modal-on-load'; 252 var $pageLoadPositionedModalClassName = $('.js-positioned-modal-on-load'); 253 var onClickModalClassName = 'js-modal-on-click'; 254 var domain = window.location.host.replace('www.', ''); 255 256 // check if we're in AEM by looking at the domain. 257 // PROD, STAGE: author-columbiasc-XXX-64.adobecqms.net 258 // DEV, QA: aemXXX.colmdev.com:4502 259 // SANDBOX: localhost:4502 260 if (domain.indexOf('adobe') > -1 || domain.indexOf(':4502') > -1) { 261 // Just show all the modals. (don't set cookies) 262 $('.' + pageLoadModalClassName).modal('show'); 263 } else { 264 /** 265 * Show a Boostrap modal on page load. 266 * HTML should be structured this way: 267 * <div class="modal js-modal-on-load" role="dialog" 268 * data-cookie="laborDaySaleModal" 269 * data-expires="session"> 270 * ... 271 * </div> 272 * 273 * data-cookie is the name of the cookie. We can have multiple page-load modals, but only one will be displayed per page load. 274 * data-expires can be number of days until the cookie expires, or 0 or 'session' or omitted for a session cookie. 275 * 276 * In the above example, the laborDaySaleModal will be displayed once per session. 277 * 278 * Another example: 279 * <div class="modal js-modal-on-load" role="dialog" 280 * data-cookie="loyaltySignUpModal" 281 * data-expires="20"> 282 * ... 283 * </div> 284 * 285 * The loyaltySignUpModal will be displayed once per 20 days. If both of these modals exist on the page, only the first modal 286 * that does not have a cookie will be shown. On the next page load, the first modal will be cookied, so the next modal will be shown. 287 */ 288 $('.' + pageLoadModalClassName).each(function () { 289 // get data-cookie 290 var $this = $(this); 291 var cookieName = $this.data('cookie') || 'unnamedModal'; 292 var cookieDays = $this.data('expires') || 'session'; // days until cookie expires (or 'session') 293 var cookieOptions = { 294 // path: '/', // the default path is '/'. 295 domain: domain 296 }; 297 if (cookieDays !== 'session') {
298 cookieOptions.expires = cookieDays; 299 } // if cookieDays IS 'session', do NOT set expires on the cookieOptions object. 300 301 if (Cookies.get(cookieName)) { 302 // eslint-disable-line 303 // cookie already exists. skip this modal. 304 return true; // continue 305 } 306 307 triggerModal($this); 308 309 // set the cookie 310 Cookies.set(cookieName, 1, cookieOptions); // eslint-disable-line 311 312 // skip all other .js-modal-on-load 313 return false; // break 314 }); 315 316 /** 317 * Show a Bootstrap positioned modal upon a set timer to trigger. 318 * HTML should be structured this way: 319 * <div id="myModal" div class="modal fade js-positioned-modal-on-load" 320 * data-timer="3" data-backdrop="false"> 321 */ 322 if ($pageLoadPositionedModalClassName.length) { 323 var $this = $pageLoadPositionedModalClassName; 324 var modalPopupTimer = $this.data('timer'); 325 if (modalPopupTimer) { 326 modalPopupTimer = (modalPopupTimer || 7) * 1000; // default set to 7 seconds if data-timer="${true}" 327 setTimeout(function () { 328 triggerModal($this); 329 }, modalPopupTimer); 330 } else { 331 triggerModal($this); // no data-timer set, show the modal immediately 332 } 333 334 // allow background scrolling while positioned modal is open 335 $this.on('shown.bs.modal', function () { 336 $('body').addClass('modal-open-scroll'); 337 }); 338 $this.on('hidden.bs.modal', function () { 339 $('body').removeClass('modal-open-scroll'); 340 }); 341 } 342 } 343 344 /** 345 * Show a Bootstrap modal upon click of a trigger element. 346 * HTML should be structured this way: 347 * <a href="#myModal" id="someLink">Click Me</a> 348 * <div id="myModal" class="modal js-modal-on-click" role="dialog" 349 * data-trigger="#someLink"> 350 * ... 351 * </div> 352 * 353 * Above, the modal and trigger are associated by the data-trigger attribute. 354 * The modal will be displayed each time #someLink is clicked. 355 * 356 * <a href="#myModal" class="js-modal-on-click" data-target="#myModal">Click Me</a> 357 * <div id="myModal" class="modal" role="dialog"> 358 * ... 359 * </div> 360 * 361 * This time, the js-modal-on-click is applied to the trigger. The script recognizes that it is 362 * not a modal (does not have the modal class), so it looks for the data-target attribute to 363 * connect it to the modal content. 364 * Each time the link is clicked, #myModal will be displayed. 365 */ 366 $('.' + onClickModalClassName).each(function () { 367 var $this = $(this); 368 var $trigger; 369 var $target; 370 if ($this.hasClass('modal')) { 371 // this is the modal - find the trigger element. 372 $trigger = $($this.data('trigger')); 373 $target = $this; 374 } else { 375 // this is the trigger - find the element to be the modal. 376 $trigger = $this; 377 $target = $($this.data('target') || $this.attr('href')); 378 $target.addClass('modal'); 379 } 380 381 // launch the modal when the trigger is clicked. 382 $trigger.on('click', function (e) { 383 e.preventDefault(); 384 triggerModal($target); 385 }); 386 }); 387 } 388}; 389/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) 390 391/***/ }), 392
393/***/ "./.tmp/app_col_eu_core/js/aem/overflowSlider.js": 394/*!*******************************************************!*\ 395 !*** ./.tmp/app_col_eu_core/js/aem/overflowSlider.js ***! 396 \*******************************************************/ 397/*! no static exports found */ 398/***/ (function(module, exports, __webpack_require__) { 399 400"use strict"; 401 402 403module.exports = function () { 404 /** 405 * overflowSlider - a jQuery plugin that allows for content to be dragged by 406 * the mouse or by touch if it overflows the container. 407 * 408 * Struction of the markup: 409 * <div class="overflow-slider"> 410 * <div class="ofs__container"> 411 * <div class="ofs__slider"> 412 * <div>Item</div> 413 * <div>Item</div> 414 * <div>...</div> 415 * </div> 416 * </div> 417 * </div> 418 * 419 * @param {Object} options JSON object containing optional settings. 420 * @return {Object} jQuery object of the selected element. 421 */ 422 $.fn.overflowSlider = function (options) { 423 var settings = $.extend({}, $.fn.overflowSlider.defaults, options); 424 var collection = this; 425 426 // TODO: define these per instance, not on the collection. 427 var containerSelector = '.' + settings.containerClass; 428 var sliderSelector = '.' + settings.sliderClass; 429 var arrowLeftSelector = '.' + settings.arrowLeftClass; 430 var arrowRightSelector = '.' + settings.arrowRightClass; 431 432 // functions (avoid no-use-before-define lint errors) 433 var slideByAmount; 434 var slideToItem; 435 var slideToX; 436 var dragStart; 437 var dragging; 438 var dragEnd; 439 var toggleArrows; 440 var listenForArrowClicks; 441 var setHeight; 442 var _init; 443 var clamp; 444 445 /** 446 * Slides the slider by the given percentage of the overflow-slider. 447 * @param {Object} $ofs This instance of the overflow slider. 448 * @param {number} percentToSlide The amount to slide the slider within the container. 0 - 1. 449 */ 450 slideByAmount = function slideByAmount($ofs, percentToSlide) { 451 var newXPos = 0; 452 var endX = $ofs.prop('ofs').endX; 453 var startXPos = parseFloat($ofs.find(sliderSelector).css('left')) || 0; // parse float to drop the 'px' 454 var containerSize = $ofs.find(containerSelector).innerWidth(); 455 var sliderSize = $ofs.find(sliderSelector).outerWidth(true); 456 if ($ofs.prop('ofs').settings.centered && containerSize > sliderSize) { 457 // center the slider within the container 458 newXPos = (containerSize - sliderSize) / 2; 459 $ofs.find(sliderSelector).stop().animate({ 460 left: newXPos 461 }, { 462 always: function always() { 463 toggleArrows($ofs, newXPos, 0, endX); 464 } 465 }); 466 } else { 467 var slideSize = $ofs.innerWidth() * percentToSlide; 468 newXPos = startXPos + slideSize; 469 slideToX($ofs, newXPos); 470 } 471 }; 472 473 /** 474 * Slide the slider to the specified item if it is overflowing the slider. 475 * @param {Object} $ofs This instance of the overflow slider. 476 * @param {Object} $item jQuery object of the item within the slider. 477 */ 478 slideToItem = function slideToItem($ofs, $item) { 479 var itemLeft = $item.position().left; 480 var $slider = $ofs.find(sliderSelector); 481 var currentSliderXPos = parseFloat($slider.css('left')) || 0; 482 var sliderMargin = parseFloat($slider.css('margin-left')); 483 var endX = $ofs.prop('ofs').endX; 484 var arrowSize = 0; 485 if ($ofs.prop('ofs').settings.showArrows) { 486 // add the width of the arrows 487 arrowSize = $ofs.find(arrowRightSelector).outerWidth(true) || $ofs.find(arrowLeftSelector).outerWidth(true) || 0; 488 } 489 var containerSize = $ofs.find(containerSelector).innerWidth(); 490 var sliderSize = $ofs.find(sliderSelector).outerWidth(true); 491 if (containerSize > sliderSize) { 492 // there's enough space to show the entire slider 493 if ($ofs.prop('ofs').settings.centered) { 494 // center the slider within the container 495 var newXPos = (containerSize - sliderSize) / 2; 496 $ofs.find(sliderSelector).stop().animate({ 497 left: newXPos 498 }, { 499 always: function always() { 500 toggleArrows($ofs, newXPos, 0, endX); 501 } 502 }); 503 } else { 504 slideToX($ofs, 0); 505 } 506 } else if (itemLeft + currentSliderXPos < 0 + arrowSize) { 507 // the active item is off to the left 508 slideToX($ofs, itemLeft * -1 - (sliderMargin - arrowSize)); 509 } else { 510 var itemRight = itemLeft + $item.outerWidth(true); 511 var ofsWidth = $ofs.find(containerSelector).innerWidth(); 512 if (itemRight + currentSliderXPos + sliderMargin > ofsWidth - arrowSize) { 513 // the active item is off to the right 514 slideToX($ofs, ofsWidth - itemRight - sliderMargin - arrowSize); 515 } else { 516 // the slider is wider than the container, but the active item is in view. 517 toggleArrows($ofs, currentSliderXPos, 0, endX); 518 } 519 } 520 }; 521 522 /** 523 * Slide the slider to the specified x position. 524 * @param {Object} $ofs This instance of the overflow slider. 525 * @param {number} x The slider left position to slide to.
526 */ 527 slideToX = function slideToX($ofs, x) { 528 var endX = $ofs.prop('ofs').endX; 529 var newXPos = clamp(x, endX, 0); 530 $ofs.find(sliderSelector).stop().animate({ 531 left: newXPos 532 }, { 533 always: function always() { 534 toggleArrows($ofs, newXPos, 0, endX); 535 } 536 }); 537 }; 538 539 /** 540 * when the user initiates a mouse click or touch dragging event 541 * @param {Event} e The event that triggered the start of a drag. 542 */ 543 dragStart = function dragStart(e) { 544 // 'this' is the .overflow-slider element 545 var $ofs = $(this); 546 if ($ofs.prop('ofs').settings.preventDefault && e.type !== 'touchstart') { 547 e.preventDefault(); 548 } 549 if ($ofs.prop('ofs').settings.centered) { 550 var containerSize = $ofs.find(containerSelector).innerWidth(); 551 var sliderSize = $ofs.find(sliderSelector).outerWidth(true); 552 if (containerSize > sliderSize) { 553 // The slider fits within the container. No dragging needed. 554 return; 555 } 556 } 557 558 // mouse is down on the slider. get data. 559 if (e.type === 'touchstart') { 560 this.ofs.mouseX = e.touches[0].clientX; 561 } else { 562 this.ofs.mouseX = e.clientX; 563 } 564 this.ofs.sliderX = parseFloat($ofs.find(sliderSelector).css('left')) || 0; 565 566 // start listening for movement 567 $ofs.on('mousemove.ofs', dragging); 568 $ofs.on('touchmove.ofs', dragging); 569 // $ofs.on('pointermove.ofs', dragging); // for IE 570 571 // start listening for a mouse up anywhere on the page 572 $(document).one('mouseup.ofs', dragEnd); 573 $(document).one('touchend.ofs', dragEnd); 574 // $(document).one('pointerup.ofs', dragEnd); // for IE 575 }; 576 577 /** 578 * "on dragging" functionality that takes in either touch event or on click event types and updates the x position of the slider within the container. 579 * @param {Event} e The event triggering the drag. 580 */ 581 dragging = function dragging(e) { 582 // 'this' is the .overflow-slider element 583 var $ofs = $(this); 584 if ($ofs.prop('ofs').settings.preventDefault) { 585 e.preventDefault(); 586 } 587 this.ofs.isDragging = true; 588 var clientX; 589 if (e.type === 'touchmove') { 590 clientX = e.touches[0].clientX; 591 } else { 592 clientX = e.clientX; 593 } 594 // update the left postion 595 var currentSliderXPos = this.ofs.sliderX; 596 var mouseDownXPos = this.ofs.mouseX; 597 var endX = this.ofs.endX; 598 var newXPos = currentSliderXPos + (clientX - mouseDownXPos); 599 newXPos = clamp(newXPos, endX, 0); 600 $ofs.find(sliderSelector).css('left', newXPos); 601 }; 602 603 /**
604 * This is called when the user releases the mouse click or touch dragging event 605 * @param {Event} e The mouseup/touchend event. 606 */ 607 dragEnd = function dragEnd() { 608 // 'this' is document 609 // stop listening for movement 610 $(collection).off('mousemove.ofs'); 611 $(collection).off('touchmove.ofs'); 612 // $ofs.off('pointermove.ofs'); // for IE 613 614 $(collection).each(function () { 615 if (this.ofs.isDragging) { 616 this.ofs.isDragging = false; 617 var newXPos = parseFloat($(this).find(sliderSelector).css('left')) || 0; 618 var endX = this.ofs.endX; 619 // this.ofs.sliderX = newXPos; 620 toggleArrows($(this), newXPos, 0, endX); 621 } else { 622 // mouse did not move. this is a regular click. 623 this.ofs.isDragging = false; 624 } 625 }); 626 }; 627 628 /** 629 * Uses the x position of the slider to hide or show the left and right arrows. 630 * If we're within 3px (see threshold) of the left or right position, the arrow will be hidden. 631 * @param {Object} $ofs This instance of the overflow slider. 632 * @param {number} x The current x position of the slider. 633 * @param {number} left The minimum x position of the slider. 634 * @param {number} right The maximum x position of the slider. 635 */ 636 toggleArrows = function toggleArrows($ofs, x, left, right) { 637 // threshold is an arbitrary minimum distance the slider must travel 638 // before the arrows will show. If the slider is within 3px of the min 639 // or max, the arrow will not show. 640 var threshold = 3; 641 $ofs.find(arrowLeftSelector).toggle(x < left - threshold); 642 $ofs.find(arrowRightSelector).toggle(x > right + threshold); 643 }; 644 645 /** 646 * this binds a click event to the arrows. The settings for slideAmount are defined in the .overflowSlider.defaults 647 * @param {Object} $ofs This instance of the overflow slider. 648 */ 649 listenForArrowClicks = function listenForArrowClicks($ofs) { 650 var slideAmount = $ofs.prop('ofs').settings.slideAmount; 651 $ofs.on('click.ofs', arrowLeftSelector, function () { 652 slideByAmount($ofs, slideAmount); // slide 75% of the swiper width to the right (positive is right) 653 }); 654 655 $ofs.on('click.ofs', arrowRightSelector, function () { 656 slideByAmount($ofs, -1 * slideAmount); // slide 75% of the swiper width to the left (negative is left) 657 }); 658 }; 659 660 /** 661 * Set the height of the slider container. 662 * @param {Object} $ofs This instance of the overflow slider. 663 * @param {Object} instanceSettings Options this instance of the overflow slider; if undefined, $.extend will be ignore it 664 */ 665 setHeight = function setHeight($ofs, instanceSettings) { 666 var sliderHeight = $ofs.find(sliderSelector).outerHeight(); 667 var $sliderContainer = $ofs.find(containerSelector); 668 settings = $.extend({}, $.fn.overflowSlider.defaults, instanceSettings); 669 if (settings.expectedHeight && parseInt(settings.expectedHeight, 10) > 0) { 670 $sliderContainer.css('height', settings.expectedHeight); 671 } else if (sliderHeight) { 672 $sliderContainer.css('height', sliderHeight); 673 } else { 674 // oh well, we tried. 675 // the height is still 0 and we don't have an expectedHeight. Is the slider hidden? 676 } 677 }; 678 679 /** 680 * Initialiizing function that establishes defaults for each instance of selected colletion. 681 * @param {Object} $ofs This instance of the overflow slider. 682 */ 683 _init = function init($ofs) { 684 var instanceSettings = settings; 685 // get settings from a data attribute 686 // this will override any settings set in JS. 687 if ($ofs.data('ofs-options')) { 688 // var attrOptions = JSON.parse($ofs.data('ofs-options')); // TODO: error handling 689 var attrOptions = $ofs.data('ofs-options'); 690 instanceSettings = $.extend({}, settings, attrOptions); 691 } 692 var elem = $ofs[0]; // this is needed to avoid the no-param-reassign eslint error. 693 694 // var itemSelector = '.' + instanceSettings.itemClass; 695 elem.containerSelector = '.' + instanceSettings.containerClass; 696 elem.sliderSelector = '.' + instanceSettings.sliderClass; 697 elem.arrowLeftSelector = '.' + instanceSettings.arrowLeftClass; 698 elem.arrowRightSelector = '.' + instanceSettings.arrowRightClass; 699 var endX = $ofs.find(elem.containerSelector).innerWidth() - $ofs.find(elem.sliderSelector).outerWidth(true); // had to place this value here because endX was diplaying the incorrect value or NaN value 700 701 $ofs.addClass('overflow-slider'); // in case a different selector was used. 702 703 // the slider is positioned absolutely, so the $ofs has a height of 0. 704 // it should match the height of the slider. 705 setHeight($ofs, instanceSettings); 706 var $imgsInSlider = $ofs.find(elem.sliderSelector).find('img'); 707 var imgLoadedTimeoutID; 708 $imgsInSlider.each(function () { 709 if (!this.complete) { 710 // the image has not finished loading. 711 $(this).one('load', function () { 712 clearTimeout(imgLoadedTimeoutID); 713 imgLoadedTimeoutID = setTimeout(function () { 714 elem.ofs.setHeight($ofs); 715 }, 100); 716 }); 717 } 718 }); 719 720 // elem.ofs = $.extend({}, $ofs.prop('ofs'), { 721 elem.ofs = { 722 settings: instanceSettings, 723 isDragging: false, 724 sliderX: 0, 725 // keep track of the x position of the slider 726 mouseX: null, 727 // the x position of the mouse at the time of the last mouseDown 728 endX: endX, 729 // the x position of the slider when it is slid to the left. 0 is the start, the right position. 730 clickedTab: null, 731 // record clicked tab, so we can activate it if we don't drag. 732 init: _init, 733 setHeight: setHeight, 734 toggleArrows: toggleArrows, 735 slideToX: slideToX, 736 slideToItem: slideToItem 737 }; 738 var $items = $ofs.find(elem.sliderSelector).children(); 739 $items.addClass(instanceSettings.itemClass); 740 if (instanceSettings.showArrows) { 741 // check for arrows, add if not found. 742 if ($ofs.find(elem.arrowRightSelector).length < 1) { 743 var arrowBtns = "\n <button aria-label=\"".concat(instanceSettings.arrowLeftLabel, "\" class=\"").concat(instanceSettings.arrowClass, " ").concat(instanceSettings.arrowLeftClass, "\"></button>\n <button aria-label=\"").concat(instanceSettings.arrowRightLabel, "\" class=\"").concat(instanceSettings.arrowClass, " ").concat(instanceSettings.arrowRightClass, "\"></button>\n "); 744 $ofs.append(arrowBtns); 745 } 746 listenForArrowClicks($ofs); 747 if (instanceSettings.alignArrowsToImgs) { 748 // try to center the left/right arrows on the images 749 var firstImg = $ofs.find('img:first'); 750 if (firstImg) { 751 var imgHeight = firstImg.height(); 752 $ofs.find('.' + instanceSettings.arrowClass).css('top', imgHeight / 2); 753 } 754 } 755 } 756 setTimeout(function () { 757 // ensure the slider is properly positioned at the start. 758 var $activeItem = $ofs.find('.' + instanceSettings.activeItem
758Class); 759 if ($activeItem.length) { 760 slideToItem($ofs, $activeItem); 761 } else { 762 slideByAmount($ofs, 0); 763 } 764 }, 0); 765 }; 766 767 /** 768 * Resize listener to re-initalize the sliders, and to adjust position if necessary. 769 */ 770 var windowResizeTimeoutId; 771 var resizeHandler = function resizeHandler() { 772 clearTimeout(windowResizeTimeoutId); 773 windowResizeTimeoutId = setTimeout(function () { 774 $(collection).each(function () { 775 var $ofs = $(this); 776 _init($ofs); 777 }); 778 }, 500); 779 }; 780 $(window).on('resize.ofs', resizeHandler); 781 782 /** 783 * This constrains x btween two numbers. min <= x <= max 784 * @param {number} x The number to clamp within the min and max 785 * @param {number} min The minimum allowed value 786 * @param {number} max The maximum allowed value 787 * @return {number} x, clamped between min and max. This will be equal to min, x, or max. 788 */ 789 clamp = function clamp(x, min, max) { 790 var c = Math.min(Math.max(x, min), max); 791 return c; 792 }; 793 794 /** 795 * This is the start of the functionality which supports multiple instances of .overflowSlider. 796 * "this" is a jQuery object containing one or more matching element. For each element, an overflow slider is created. 797 */ 798 return this.each(function () { 799 // "this" is one of the selected elements 800 var $ofs = $(this); 801 _init($ofs); // why is this miscalculating the endX? 802 // setTimeout(init($ofs), 0); // why do I need to init twice?! 803 804 // on mouse down within the overflowSlider... 805 $ofs.on('mousedown.ofs', dragStart); 806 $ofs.on('touchstart.ofs', dragStart); 807 // $ofs.on('pointerdown.ofs', dragStart); // for IE 808 809 var itemSelector = '.' + $ofs.prop('ofs').settings.itemClass; 810 $ofs.on('focus', itemSelector, function () { 811 slideToItem($ofs, $(this)); 812 }); 813 return this; 814 }); 815 }; 816 817 /** 818 * Default settings for the overflow sliders. 819 */ 820 $.fn.overflowSlider.defaults = { 821 arrowClass: 'ofs__arrow', 822 arrowLeftClass: 'ofs__arrow--left', 823 arrowRightClass: 'ofs__arrow--right', 824 arrowLeftLabel: 'Slide Right', 825 arrowRightLabel: 'Slide Left', 826 containerClass: 'ofs__container', 827 sliderClass: 'ofs__slider', 828 itemClass: 'ofs__item', 829 showArrows: true, 830 alignArrowsToImgs: false, 831 // attempt to align left/right arrows to the images 832 slideAmount: 0.75, 833 // slide up to 75% of the container width when left/right buttons are clicked 834 centered: true, 835 // when the slider fits within the container, should it be centered or left-aligned? 836 activeItemClass: 'active', 837 // active and selected item at overflowSlider 838 expectedHeight: 0, 839 // set to the approximate height of the slider content, to prevent a 0 height slider when the height is measured before content has finished loading. 840 preventDefault: true // should be prevented default events? 841 }; 842 843 /** 844 * For each element having the "overflow-slider" class, initialize the overflowSlider 845 * with the default settings. 846 */ 847 $(function () { 848 // set up the overflow sliders 849 // this one line will initialize multiple sliders all having the same settings. 850 $('.overflow-slider').overflowSlider(); 851 }); 852}; 853 854/***/ }), 855
856/***/ "./.tmp/app_col_eu_core/js/aem/tabbedContainer.js": 857/*!********************************************************!*\ 858 !*** ./.tmp/app_col_eu_core/js/aem/tabbedContainer.js ***! 859 \********************************************************/ 860/*! no static exports found */ 861/***/ (function(module, exports, __webpack_require__) { 862 863"use strict"; 864 865 866var breakpoints = __webpack_require__(/*! ../components/breakpoints */ "./.tmp/app_col_eu_core/js/components/breakpoints.js"); 867var debounce = __webpack_require__(/*! lodash/debounce */ "./node_modules/lodash/debounce.js"); 868 869/** 870 * Updates the tab and content state for the item that was clicked 871 * @param {selector} clickedTabSelector for example: .ofs-item 872 */ 873function updateTabbedContainerContent(clickedTabSelector) { 874 var $clickedTab = $(clickedTabSelector); 875 var $tabbedContainer = $clickedTab.closest('.tabbed-container'); 876 var $contentContainer = $tabbedContainer.children('.tabbed-container__content-container'); 877 var targetContentSelector = $clickedTab.data('target') || $clickedTab.attr('href'); 878 var $targetContent = $(targetContentSelector); 879 880 // Show clicked tab's contents, hide all sibling tabs' contents. 881 // This prevents white space below the footer when very long tab content is hidden 882 $targetContent.show(); 883 if (breakpoints.isHighRes() || !$targetContent.closest('.responsive-tabs').length) { 884 // only apply this style class when the tabbed container is being rendered as tabs (e.g. hybrid view at desktop width, or tab-only view at any width) 885 $targetContent.siblings().hide(); 886 } 887 888 // toggle active class on the content 889 $contentContainer.children('.tabbed-container__content').removeClass('active'); 890 $targetContent.addClass('active'); 891} 892 893/** 894 * Reinitializes any carousels within tabbed content of any variation (e.g. tabs, accordions, hybrid) 895 * @param {JQuery<HTMLElement>} $clickedItem for example: .ofs-item or .card-header 896 */ 897function reinitializeCarousels($clickedItem) { 898 var targetContentSelector = $clickedItem.data('target') || $clickedItem.attr('href'); 899 $(targetContentSelector).find('.slick-initialized').slick('unslick').slick('reinit'); 900} 901module.exports = { 902 init: function init() { 903 // set initial height of all content containers to the size of their active content. 904 $('.tabbed-container__content-container').each(function () { 905 var $this = $(this); 906 var $hybridTabbedContainer = $this.closest('.responsive-tabs'); // may or may not exist depending on which $('.tabbed-container__content-container') we are in 907 908 // wait for window.onLoad and try setting the height again, for those instances that weren't ready the first time. 909 $(window).on('load', function () { 910 if (breakpoints.isHighRes() || !$hybridTabbedContainer.length) { 911 // only apply this style class when the tabbed container is being rendered as tabs (e.g. hybrid view at desktop width, or tab-only view at any width) 912 $this.find('.active').siblings().hide(); 913 } 914 }); 915 916 // make sure that we don't lose content if someone rotates their tablet or phone back and forth and the tabbed container transitions between accordion and tab view 917 $(window).on('resize', debounce(function () { 918 if ($hybridTabbedContainer.length) { 919 $this.find('.active').siblings().toggle(breakpoints.isLowRes()); 920 } 921 }, 200)); 922 }); 923 $('.tabbed-container__tabs').on('click', '.ofs__item', function (e) { 924 e.preventDefault(); 925 var $thisItem = $(this); 926 927 // toggle active classes on the tabs 928 $thisItem.siblings('.ofs__item').removeClass('active'); 929 $thisItem.addClass('active'); 930 var $ofs = $thisItem.closest('.overflow-slider'); 931 $ofs.prop('ofs').slideToItem($ofs, $thisItem); 932 933 // reinitialize the carousels in case they got cut short on initial page load and tab content hiding 934 reinitializeCarousels($thisItem); 935 updateTabbedContainerContent($thisItem); 936 }); 937 $('.accordions').on('click', '.card-header', function () { 938 var $thisItem = $(this); 939 940 // reinitialize the carousels in case they got cut short on initial page load and tab content hiding 941 reinitializeCarousels($thisItem); 942 }); 943 var hash = location.hash; 944 if (hash) { 945 // check if any of the ofs__items have this href or target. 946 $('.tabbed-container__tabs .ofs__item').each(function () { 947 var $thisItem = $(this); 948 var targetContentSelector = $thisItem.data('target') || $thisItem.attr('href'); 949 if (targetContentSelector === hash) { 950 // go to this item 951 $thisItem.trigger('click'); // this will call the event handler above to make this item active. 952 return false; // break out of the .each() loop. 953 } 954 955 return true; 956 }); 957 } 958 } 959}; 960 961/***/ }), 962
963/***/ "./.tmp/app_col_eu_core/js/brand/main.js": 964/*!***********************************************!*\ 965 !*** ./.tmp/app_col_eu_core/js/brand/main.js ***! 966 \***********************************************/ 967/*! no static exports found */ 968/***/ (function(module, exports, __webpack_require__) { 969 970/** 971 * Main Script File 972 * 973 * This is loaded in the footer of all pages. This is the preferred place to 974 * load all script files. 975 */ 976 977var processInclude = __webpack_require__(/*! ../components/processInclude */ "./.tmp/app_col_eu_core/js/components/processInclude.js"); 978processInclude(__webpack_require__(/*! ../components/rewardsTracker */ "./.tmp/app_col_eu_core/js/components/rewardsTracker.js")); 979 980/***/ }), 981
982/***/ "./.tmp/app_col_eu_core/js/checkout/formErrors.js": 983/*!********************************************************!*\ 984 !*** ./.tmp/app_col_eu_core/js/checkout/formErrors.js ***! 985 \********************************************************/ 986/*! no static exports found */ 987/***/ (function(module, exports, __webpack_require__) { 988 989"use strict"; 990 991 992/** 993 * Display error messages and highlight form fields with errors. 994 * @param {string} parentSelector - the form which contains the fields 995 * @param {Object} fieldErrors - the fields with errors 996 * @param {number} index - index of current form, default is 0 997 */ 998function loadFormErrors(parentSelector, fieldErrors, index) { 999 // eslint-disable-line 1000 // Display error messages and highlight form fields with errors. 1001 var currIndex = index || 0; 1002 $.each(fieldErrors, function (attr) { 1003 $(parentSelector).find('*[name=' + attr + ']').eq(currIndex).addClass('is-invalid').siblings('.invalid-feedback').html(fieldErrors[attr]); 1004 }); 1005} 1006 1007/** 1008 * Clear the form errors. 1009 * @param {string} parentSelector - the parent form selector. 1010 */ 1011function clearPreviousErrors(parentSelector) { 1012 $(parentSelector).find('.form-control.is-invalid').removeClass('is-invalid'); 1013 $('.error-message').hide(); 1014} 1015/** 1016 * Activates invalid class to payment information when there is a payment error 1017 */ 1018function paymentError() { 1019 var $paymentInfo = $('#holderName, #cardNumber, #expirationMonth, #expirationYear, #securityCode'); 1020 $paymentInfo.addClass('is-invalid'); 1021 $paymentInfo.parent().addClass('is-invalid'); 1022 // clears the CVV value 1023 $('#securityCode').val(''); 1024} 1025module.exports = { 1026 loadFormErrors: loadFormErrors, 1027 clearPreviousErrors: clearPreviousErrors, 1028 paymentError: paymentError 1029}; 1030 1031/***/ }), 1032
vendor: 2,153 bytes, lines 1033-1052
1033/***/ "./.tmp/app_col_eu_core/js/components/AuthWizard.js": 1034/*!**********************************************************!*\ 1035 !*** ./.tmp/app_col_eu_core/js/components/AuthWizard.js ***! 1036 \**********************************************************/ 1037/*! no static exports found */ 1038/***/ (function(module, exports, __webpack_require__) { 1039 1040"use strict"; 1041 1042 1043function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 1044function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 1045function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } 1046function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 1047function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } 1048function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } 1049var utils = __webpack_require__(/*! ../components/utils */ "./.tmp/app_col_eu_core/js/components/utils.js"); 1050 1051/** 1052 * Sets or clears the redirect data attributes on the Log In and
1052Sign Up forms. 1053 * @param {string} redirectUrl The url to be redirected to after loging in or signing up. 1054 * @param {JQuery} $wizardContainer the wizard container 1055 */ 1056function _setFormRedirectData(redirectUrl, $wizardContainer) { 1057 $wizardContainer.find('form.login').data('redirect', redirectUrl); 1058 $wizardContainer.find('form.registration').data('redirect', redirectUrl); 1059} 1060 1061/** 1062 * Initialize the Authorization Gateway Wizard 1063 * @param {JQuery} $wizardContainer container for the wizard 1064 * @param {string} redirectUrl The url to be redirected to after loging in or signing up. 1065 * @param {boolean} reauthenticate boolean flag for reauthentication experience 1066 * @param {JQuery} $accountDrawer the account drawer that contains the wizard 1067 */ 1068function initNewWizard($wizardContainer, redirectUrl, reauthenticate, $accountDrawer) { 1069 $wizardContainer.wizard({ 1070 init: function init($wiz) { 1071 var $authGatewayForm = $wiz.find('form.authGateway'); 1072 $authGatewayForm.trigger('form:created'); 1073 1074 // Register Auth Gateway form's submission button 1075 $wiz.on('submit', 'form.authGateway', function (e) { 1076 e.preventDefault(); 1077 $accountDrawer.spinner().start(); 1078 var isSuccess; 1079 $.ajax({ 1080 url: $authGatewayForm.attr('action'), 1081 type: 'post', 1082 data: $authGatewayForm.serialize(), 1083 success: function success(response) { 1084 // Handle bad input 1085 var $invalidField = $authGatewayForm.find('.invalid-feedback'); 1086 if (response.error) { 1087 $invalidField.text(response.msg).show(); 1088 return; 1089 } 1090 $invalidField.text('').hide(); 1091 $authGatewayForm.trigger('form:preauth:success'); 1092 var $signInOrCreateAccountStep = $wiz.find('[data-step-id=signInOrCreateAccount]'); 1093 $signInOrCreateAccountStep.empty(); 1094 $signInOrCreateAccountStep.append($(response)); 1095 1096 // Identify the form shown & set up respective listeners 1097 var isLoginFlow = $wizardContainer.find('.account-drawer__login').length; 1098 if (isLoginFlow) { 1099 $wizardContainer.find('form.login').trigger('form:created'); 1100 } else { 1101 $wizardContainer.find('form.registration').trigger('form:created'); 1102 $wizardContainer.on('click', '.js-btn-registration', function (clickEvent) { 1103 $wizardContainer.find('.js-rewards-terms').prop('checked', !$(this).hasClass('js-btn-registration-no-rewards')); 1104 if ($(this).hasClass('js-explicit-consent-required')) { 1105 var $explicitConsent = $wizardContainer.find('.js-explicit-privacy-consent'); 1106 if ($explicitConsent.length && !$explicitConsent.prop('checked')) { 1107 clickEvent.preventDefault(); 1108 clickEvent.stopPropagation(); 1109 $explicitConsent.addClass('is-invalid'); 1110 } else { 1111 $explicitConsent.removeClass('is-invalid'); 1112 } 1113 } 1114 }); 1115 } 1116 1117 // Set form redirect data regardless of form provided 1118 if (redirectUrl) { 1119 _setFormRedirectData(redirectUrl, $wizardContainer); 1120 } 1121 isSuccess = true; 1122 }, 1123 complete: function complete() { 1124 $accountDrawer.spinner().stop(); 1125 if (isSuccess) { 1126 /** 1127 * formsDataLayer.js depends upon the 'ajaxSuccess' event. 1128 * As such, we should not move to the next step until the ajax call is 'complete' 1129 * to avoid timing issues. Especially with form field focus, which updates the data layer. 1130 */ 1131 $wiz.nextStep(); 1132 } 1133 }, 1134 error: function error() { 1135 $accountDrawer.spinner().stop(); 1136 var url = window.location.pathname; 1137 url = utils.appendParamToURL(url, 'signin', 'true'); 1138 url = utils.appendParamToURL(url, 'autherror', 'true'); 1139 window.location.href = url; 1140 } 1141 }); 1142 }); 1143 $wiz.on('click', '.js-auth-wizard-back', function () { 1144 $wiz.prevStep(); 1145 }); 1146 1147 // Store Email id of customer in session when using forgot password 1148 $wizardContainer.on('click', '.account-content .forgot-password a, #password-reset', function (e) { 1149 e.preventDefault(); 1150 var $currentElement = $(e.currentTarget); 1151 var emailId = $currentElement.closest('form').find('input[name=loginEmail]').val(); 1152 if (emailId && emailId.length && !window.IsKiosk) { 1153 sessionStorage.setItem('userEmailId', emailId); 1154 } 1155 window.location = $currentElement.attr('href'); 1156 }); 1157 }, 1158 afterStepEnter: function afterStepEnter(stepId, $wiz) { 1159 // After steping into the second step, focus on the first non-email input 1160 if (stepId === 'signInOrCreateAccount') { 1161 var $signInOrCreateAccountStep = $wiz.find('[data-step-id=signInOrCreateAccount]'); 1162 // For Login, find the password field. For Registration, find first name 1163 var selector = $wizardContainer.find('.account-drawer__login').length ? 'input[type=password]' : 'input#firstName'; 1164 $signInOrCreateAccountStep.find(selector).focus(); 1165 } 1166 } 1167 }); 1168} 1169var AuthWizard = /*#__PURE__*/function () { 1170 function AuthWizard($wizardContainer, redirect, reauthenticate, $accountDrawer) { 1171 _classCallCheck(this, AuthWizard); 1172 this.$accountDrawer = $accountDrawer; 1173 initNewWizard($wizardContainer, redirect, reauthenticate, $accountDrawer); 1174 } 1175 _createClass(AuthWizard, [{ 1176 key: "setFormRedirectData", 1177 value: function setFormRedirectData(redirect) { 1178 _setFormRedirectData(redirect, this.$accountDrawer); 1179 } 1180 }]); 1181 return AuthWizard; 1182}(); 1183module.exports = AuthWizard; 1184 1185/***/ }), 1186
1187/***/ "./.tmp/app_col_eu_core/js/components/SMSConsentDrawer.js": 1188/*!****************************************************************!*\ 1189 !*** ./.tmp/app_col_eu_core/js/components/SMSConsentDrawer.js ***! 1190 \****************************************************************/ 1191/*! no static exports found */ 1192/***/ (function(module, exports, __webpack_require__) { 1193 1194"use strict"; 1195/** 1196 * SMS Consent Form Submission Handler 1197 * 1198 * This module handles the form submission process for the SMS consent form. 1199 * It is validates the form, and sends the form data to the server using an AJAX POST request. 1200 */ 1201 1202 1203 1204var clientSideValidation = __webpack_require__(/*! ./clientSideValidation */ "./.tmp/app_col_eu_core/js/components/clientSideValidation.js"); 1205module.exports = { 1206 init: function init() { 1207 $(document).on('submit', '.js-smsConsentForm', function (e) { 1208 e.preventDefault(); 1209 var $form = $(this); 1210 var url = $form.attr('action'); 1211 var $drawer = $form.closest('.drawer'); 1212 if (!$form.validateForm()) { 1213 return; 1214 } 1215 $.spinner().start(); 1216 $.ajax({ 1217 url: url, 1218 type: 'post', 1219 dataType: 'json', 1220 data: $form.serialize(), 1221 success: function success(data) { 1222 if (data.success) { 1223 if (data.nextStepMarkup) { 1224 $form.closest('.drawer__body').html(data.nextStepMarkup); 1225 $drawer.on('hide.drawer', function () { 1226 window.location.reload(); 1227 }); 1228 } else { 1229 $drawer.find('.close').click(); 1230 } 1231 $.spinner().stop(); 1232 } else { 1233 $drawer.find('.close').click(); 1234 $.modal({ 1235 title: data.title, 1236 content: "<p class='py-2 m-0'>".concat(data.msg, "</p>"), 1237 modalSizeClass: 'modal-md', 1238 centeredClass: 'modal-dialog-centered', 1239 buttons: ['<button class="btn btn-primary" data-dismiss="modal">Ok</button>'] 1240 }).one('shown.bs.modal', function () { 1241 $(this).find('.modal-body').addClass('py-0'); 1242 }); 1243 $.spinner().stop(); 1244 } 1245 }, 1246 error: function error() { 1247 // Show the invalid state of the input field 1248 var $inputWraper = $form.find('.form-group'); 1249 $inputWraper.addClass('is-invalid'); 1250 $form.find('.form-control').addClass('is-invalid'); 1251 $inputWraper.find('.invalid-feedback').text('An error occurred.'); 1252 $inputWraper.find('.form-help-text').hide(); 1253 $.spinner().stop(); 1254 } 1255 }); 1256 }); 1257 $(document).on('click', '.js-smsDrawerOpen', function () { 1258 var $this = $(this); 1259 var phoneNumber = $this.data('phonenumber'); 1260 var drawerSettings = $this.data('settings'); 1261 if (drawerSettings && drawerSettings.src) { 1262 $.drawer(drawerSettings).on('contentAsyncLoaded.drawer', function () { 1263 var $phoneInput = $(this).find('#smsConsentPhoneField'); 1264 if ($phoneInput.length) { 1265 var cleave = __webpack_require__(/*! ../components/cleave */ "./.tmp/app_col_eu_core/js/components/cleave.js"); 1266 cleave.formatPhoneField($phoneInput[0]); 1267 if (phoneNumber) { 1268 $phoneInput.val(phoneNumber).parent().addClass('focus-fill'); 1269 } 1270 } 1271 }); 1272 } 1273 }); 1274 $(document).on('change', '.js-sms-consent-field', function () { 1275 var $requiredField = $('.js-optin-requred-field'); 1276 if ($requiredField.length) { 1277 $requiredField.prop('required', this.checked).attr('aria-required', this.checked); 1278 $requiredField.closest('.form-group').toggleClass('required', this.checked); 1279 clientSideValidation.functions.setSubmitButtonState(this); 1280 } 1281 }); 1282 } 1283}; 1284 1285/***/ }), 1286
1287/***/ "./.tmp/app_col_eu_core/js/components/accessibility.js": 1288/*!*************************************************************!*\ 1289 !*** ./.tmp/app_col_eu_core/js/components/accessibility.js ***! 1290 \*************************************************************/ 1291/*! no static exports found */ 1292/***/ (function(module, exports, __webpack_require__) { 1293 1294"use strict"; 1295 1296 1297var breakpoints = __webpack_require__(/*! ../components/breakpoints */ "./.tmp/app_col_eu_core/js/components/breakpoints.js"); 1298// Accessibility Enhancements 1299 1300var KEYCODES = { 1301 UP: 38, 1302 DOWN: 40, 1303 LEFT: 37, 1304 RIGHT: 39, 1305 TAB: 9, 1306 ESCAPE: 27, 1307 ENTER: 13 1308}; 1309 1310/** 1311 * Adds a "keyboard-focus" event to body if the keyboard is being used to navigate 1312 */ 1313function highlightFocus() { 1314 $('body').data('last-device-used', ''); 1315 $('body').on('mousedown', function () { 1316 $(this).data('last-device-used', 'mouse'); 1317 $(this).data('last-device-used-when', new Date().getTime()); 1318 }).on('keydown', function () { 1319 $(this).data('last-device-used', 'keyboard'); 1320 }).on('focusin', function () { 1321 if ($(this).data('last-device-used') !== 'mouse' || new Date().getTime() - 50 > $(this).data('last-device-used-when')) { 1322 $(this).addClass('keyboard-focus'); 1323 } else { 1324 $(this).removeClass('keyboard-focus'); 1325 } 1326 }).on('focusout', function () { 1327 $(this).removeClass('keyboard-focus'); 1328 }); 1329} 1330 1331/** 1332 * Basic keyboard navigation. Single level <ul><li><a> format: 1333 * 1334 * <div id="skip-link-nav" aria-label="Skip Menu" role="navigation"> 1335 * <ul role="menu"> <-- parentSelector should point to this... Whatever has a role of menu or menubar 1336 * <li role="presentation"><a role="menuitem" href="${'#content-wrapper'}">Skip to Content</a></li> 1337 * <li role="presentation"><a role="menuitem" href="${'#main-menu'}">Skip to Main Nav</a></li> 1338 * <li role="presentation"><a role="menuitem" href="${'#sidebar-wrapper'}">Skip to Category Nav</a></li> 1339 * <li role="presentation"><a role="menuitem" href="${'#searchPopover_fieldInput'}">Skip to Search</a></li> 1340 * <li role="presentation"><a role="menuitem" href="${URLUtils.https('Cart-Show')}">Go to Cart</a></li> 1341 * <li role="presentation"><a role="menuitem" href="${URLUtils.https('Account-Show')}">Go to Login</a></li> 1342 * </ul> 1343 * </div> 1344 * 1345 * leftRightArrows is optional. If the role is menubar, then it will be true (otherwise false) 1346 * 1347 * @param {string} containerSelector - Selector for the menu 1348 * @param {boolean} leftRightArrows - Use Left/Right for navigation or Up/Down for navigation 1349 */ 1350function basicKeyboardNavigation(containerSelector, leftRightArrows) { 1351 // parentSelector must point to UL or Container. 1352 jQuery(containerSelector).each(function () { 1353 var parentSelector = this; 1354 var isMenuBar = false; // A horizontal menu bar uses Left/Right for navigation. Otherwise Up/Down. 1355 if (leftRightArrows !== undefined) { 1356 isMenuBar = leftRightArrows; 1357 } else { 1358 var menuRole = $(this).attr('role'); 1359 if (menuRole !== undefined) { 1360 if (menuRole === 'menubar') { 1361 isMenuBar = true; 1362 } else if (menuRole === 'menu') { 1363 isMenuBar = false; 1364 } 1365 } 1366 } 1367 $(parentSelector).on('keydown', function (e) { 1368 // Focus will on the PREVIOUS element, when the key was pressed. 1369 var el = $('a:focus', parentSelector); 1370 1371 /** 1372 * Focus on last visible link inside sub menu. 1373 */ 1374 function keyPreviousLink() { 1375 var allLinks = $('a:visible', parentSelector); 1376 if (allLinks.length) { 1377 var indexOfEl = $(allLinks).index(el); 1378 if (indexOfEl >= 0) { 1379 indexOfEl--; 1380 indexOfEl = indexOfEl < 0 ? allLinks.length - 1 : indexOfEl; // Wrap 1381 var el2 = $(allLinks).get(indexOfEl); 1382 if (el2 !== undefined) { 1383 $(el2).focus(); 1384 e.preventDefault(); 1385 } 1386 } 1387 } 1388 } 1389 1390 /** 1391 * Focus on first visible link inside sub menu. 1392 */ 1393 function keyNextLink() { 1394 var allLinks = $('a:visible', parentSelector); 1395 if (allLinks.length) { 1396 var indexOfEl = $(allLinks).index(el); 1397 if (indexOfEl >= 0) { 1398 indexOfEl++; 1399 indexOfEl = indexOfEl >= allLinks.length ? 0 : indexOfEl; // Wrap 1400 var el2 = $(allLinks).get(indexOfEl); 1401 if (el2 !== undefined) { 1402 $(el2).focus(); 1403 e.preventDefault(); 1404 } 1405 } 1406 } 1407 } 1408 switch (e.keyCode) { 1409 case KEYCODES.UP: 1410 if (!isMenuBar) { 1411 keyPreviousLink(); 1412 } 1413 break; 1414 case KEYCODES.DOWN: 1415 if (!isMenuBar) { 1416 keyNextLink(); 1417 } 1418 break; 1419 case KEYCODES.LEFT: 1420 if (isMenuBar) { 1421 keyPreviousLink(); 1422 } 1423 break; 1424 case KEYCODES.RIGHT: 1425 if (isMenuBar) { 1426 keyNextLink(); 1427 } 1428 break; 1429 case KEYCODES.TAB: 1430 // Allow the default browser behavior to take over 1431 break; 1432 case KEYCODES.ESCAPE: 1433 // Allow the default browser behavior to take over 1434 break; 1435 default: 1436 break; 1437 } 1438 }); 1439 }); 1440} 1441 1442/** 1443 * Events for skiplinks menu 1444 */ 1445function skipLinks() { 1446 basicKeyboardNavigation('#skip-link-nav ul', false); 1447 $('#skip-link-nav').focusin(function () { 1448 $(this).removeClass('aria-offscreen'); 1449 }); 1450 $('#skip-link-nav').focusout(function () { 1451 $(this).addClass('aria-offscreen'); 1452 }); 1453 $('#skip-link-nav a').click(function (e) { 1454 var anchor = $(this).attr('href'); 1455 if (anchor.indexOf('#') === 0) { 1456 var el; 1457 if (anchor === '#main') { 1458 /* 1459 If an el with id equal to login or register and class tab pane exists find the first active nav link tag or 1460 find the first visible anchor or input inside the first div immediately after <header> element. 1461 */ 1462 var elAfterHeader = $('header').nextAll('div:visible'); 1463 if (elAfterHeader.find('#login', '#register').hasClass('tab-pane')) { 1464 el = elAfterHeader.first().find('.nav-link.active'); 1465 } else { 1466 el = elAfterHeader.first().find('a[href]:visible, input:visible, button:not(:disabled):visible').first(); 1467 } 1468 1469 /* 1470 // Might need to add more rules for specific page. 1471 if (el.length === 0) { 1472 var arr = []; 1473 arr.push('#product-search-results'); // Product Search Results 1474 arr.push('.container'); // Generic 1475 for (var i=0; i<arr.length; i++) { 1476 el = $(arr[i]).find('a[href]:visible:first, input:visible:first').first(); 1477 if (el.length > 0) { 1478 break; 1479 } 1480 } 1481 } 1482 */ 1483 } else if (anchor === '#main-menu') { 1484 if (breakpoints.isLowRes()) { 1485 $('.js-action__menuopen:visible').first().trigger('click'); 1486 el = $('#main-menu li:visible').first(); 1487 } else { 1488 // Put the focus on the first visible anchor in the main menu. 1489 el = $('#main-menu li:visible').first(); 1490 } 1491 } else if (anchor === '#searchPopover_fieldInput') {
1492 // Click the search icon, put the focus on the search field. 1493 $('.js-action-search:visible').first().trigger('click'); 1494 el = $('.js-search-field:visible').first(); 1495 } else { 1496 // Fallback 1497 el = $(anchor).find('a[href]:visible:first, input:visible:first, button:not(:disabled):first').first(); 1498 } 1499 if (el !== undefined && el.length > 0) { 1500 $(el).focus(); 1501 } 1502 e.preventDefault(); 1503 } else { 1504 // Follow link 1505 // e.preventDefault(); 1506 } 1507 }); 1508} 1509module.exports = { 1510 init: function init() { 1511 highlightFocus(); 1512 skipLinks(); 1513 }, 1514 basicKeyboardNavigation: basicKeyboardNavigation 1515}; 1516 1517/***/ }), 1518
1519/***/ "./.tmp/app_col_eu_core/js/components/accountDrawers.js": 1520/*!**************************************************************!*\ 1521 !*** ./.tmp/app_col_eu_core/js/components/accountDrawers.js ***! 1522 \**************************************************************/ 1523/*! no static exports found */ 1524/***/ (function(module, exports, __webpack_require__) { 1525 1526"use strict"; 1527/* global registerButtonAsRecaptchaTrigger */ 1528 1529 1530function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 1531function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } 1532function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 1533function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } 1534function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } 1535function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } 1536function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } 1537function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 1538function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } 1539function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 1540function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } 1541function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } 1542var rewardsTracker = __webpack_require__(/*! ./rewardsTracker */ "./.tmp/app_col_eu_core/js/components/rewardsTracker.js"); 1543var keyboardAccessibility = __webpack_require__(/*! ./keyboardAccessibility */ "./.tmp/app_col_eu_core/js/components/keyboardAccessibility.js"); 1544var utils = __webpack_require__(/*! ./utils */ "./.tmp/app_col_eu_core/js/components/utils.js"); 1545var initProfilingCpi = __webpack_require__(/*! ./progressiveProfiling */ "./.tmp/app_col_eu_core/js/components/progressiveProfiling.js").initProfilingCpi; 1546var openAccountDrawerKey = 'oad'; 1547var signInKey = 'signin'; 1548var authErrorKey = 'autherror'; 1549var openAccountDrawer = false; 1550var mainDrawer; 1551var reAuthDrawer; 1552var AccountDrawer = /*#__PURE__*/function () { 1553 function AccountDrawer(drawerEvent, reauthenticate, redirectUrl, forcePageReauth) { 1554 _classCallCheck(this, AccountDrawer); 1555 var thisDrawer = this; 1556 this.drawerId = crypto.randomUUID(); 1557 this.isOpen = true; 1558 var currentPageParams = new URLSearchParams(window.location.search); 1559 var authErrorEncountered = currentPageParams.has(authErrorKey); 1560 var queryParams = [].concat(_toConsumableArray(reauthenticate ? ['reauthenticate=true'] : []), _toConsumableArray(authErrorEncountered ? ["".concat(authErrorKey, "=true")] : [])).join('&'); 1561 var queryString = queryParams ? "?".concat(queryParams) : ''; 1562 1563 // Removing auth error indicator from prior auth attempt from the URL now that the drawer is being reopened 1564 utils.removeQueryParamFromCurrentUrl(authErrorKey); 1565 this.$drawer = $.drawer({
1566 src: $('.siteheader').data('lazy-load-account-drawer-url') + queryString, 1567 size: 'sm', 1568 class: 'account-drawer', 1569 destroyOnClose: false, 1570 returnFocusTo: drawerEvent ? drawerEvent.currentTarget : 'body', 1571 closeBtn: !forcePageReauth, 1572 closeOnBackdropClick: !forcePageReauth 1573 }).on('hide.drawer', function (e, closeEvent) { 1574 thisDrawer.isOpen = false; 1575 var $quickviewModal = $('.quickview-modal'); 1576 if ($quickviewModal.length && $quickviewModal.hasClass('hide-scroll-bar')) { 1577 $quickviewModal.removeClass('hide-scroll-bar'); 1578 } 1579 // also close mobile nav 1580 var $clickedButton = closeEvent && $(closeEvent.currentTarget); 1581 if (!($clickedButton && $clickedButton.hasClass('js-action__menuback'))) { 1582 // if we click the mobile "back" button, just close the account drawer. 1583 // otherwise, also close the mobile nav drawer. 1584 $('.sitenav').closeMenuItem(); 1585 $('html').removeClass('menu-active'); 1586 $.enableScroll(); 1587 1588 // SOREL: also toggle the close button back to hamburger menu 1589 $('.js-action__menutoggle').removeClass('close'); 1590 } 1591 }).on('shown.drawer', function () { 1592 thisDrawer.isOpen = true; 1593 window.dispatchEvent(new Event('accountPopover:shown:dtm')); 1594 window.dispatchEvent(new Event('accountDrawer:shown:dtm')); 1595 }).on('contentAsyncLoaded.drawer', function () { 1596 var $authWizardContainer = thisDrawer.$drawer.find('.js-auth-wizard'); 1597 if ($authWizardContainer.length) { 1598 var AuthWizard = __webpack_require__(/*! ./AuthWizard */ "./.tmp/app_col_eu_core/js/components/AuthWizard.js"); 1599 this.authWizard = new AuthWizard($authWizardContainer, redirectUrl, reauthenticate, thisDrawer.$drawer); 1600 1601 // Set up listener to remove 'oad' queryparam if registration form is submitted 1602 if (openAccountDrawer) { 1603 $('body').one("login:register:success.".concat(this.drawerId), function (e, data) { 1604 if (data.redirectUrl) { 1605 // eslint-disable-next-line no-param-reassign 1606 data.redirectUrl = utils.removeQueryParam(openAccountDrawerKey, data.redirectUrl).toString(); 1607 } 1608 utils.removeQueryParamFromCurrentUrl(openAccountDrawerKey); 1609 }); 1610 } 1611 } else { 1612 // Progressive Profiling Setup 1613 initProfilingCpi(thisDrawer.$drawer.find('.progress')); 1614 1615 // Load My Account Drawer Content 1616 rewardsTracker.loadRewardsTracker(thisDrawer.$drawer.find('.account-content')); 1617 1618 // After user is logged in, prevent additional openings of account drawer 1619 if (openAccountDrawer) { 1620 utils.removeQueryParamFromCurrentUrl(openAccountDrawerKey); 1621 } 1622 } 1623 }); 1624 $(document).on("keydown.".concat(this.drawerId), function (e) { 1625 if (e.key === 'Escape') { 1626 thisDrawer.close(); 1627 } 1628 }); 1629 } 1630 _createClass(AccountDrawer, [{ 1631 key: "open", 1632 value: function open(redirectUrl) { 1633 if (this.authWizard) { 1634 this.authWizard.setFormRedirectData(redirectUrl); 1635 } 1636 if (this.isOpen) { 1637 return; 1638 } 1639 this.isOpen = true; 1640 this.$drawer.open(); 1641 } 1642 }, { 1643 key: "remove", 1644 value: function remove() { 1645 $(document).off(".".concat(this.drawerId)); 1646 this.$drawer.next('.drawer__backdrop').remove(); 1647 this.$drawer.remove(); 1648 } 1649 }, { 1650 key: "close", 1651 value: function close() { 1652 if (!this.isOpen) { 1653 return; 1654 } 1655 this.$drawer.close(); 1656 this.isOpen = false; 1657 } 1658 }]); 1659 return AccountDrawer; 1660}(); 1661/** 1662 * Open Account Drawer 1663 * @param {event} drawerEvent The click event that called this funtion 1664 * @param {boolean} reAuthenticate query param to flag for reauthentication 1665 * @param {boolean} forcePageReauth boolean to flag for enforcing page reauthentication experience 1666 */ 1667function openDrawer(drawerEvent, reAuthenticate, forcePageReauth) { 1668 var redirectUrl = drawerEvent && $(drawerEvent.currentTarget).data('redirect') || ''; 1669 var drawerManager = { 1670 get targetDrawer() { 1671 return reAuthenticate ? reAuthDrawer : mainDrawer; 1672 }, 1673 set targetDrawer(value) { 1674 if (reAuthenticate) { 1675 reAuthDrawer = value; 1676 } else { 1677 mainDrawer = value; 1678 } 1679 } 1680 }; 1681 if (drawerManager.targetDrawer) { 1682 // the drawer has already been created, just show it. 1683 drawerManager.targetDrawer.open(redirectUrl); 1684 } else { 1685 // load the account drawer 1686 drawerManager.targetDrawer = new AccountDrawer(drawerEvent, reAuthenticate, redirectUrl, forcePageReauth); 1687 } 1688} 1689 1690/** 1691 * Keyboard events 1692 */ 1693function keyboardEvents() { 1694 keyboardAccessibility('.navbar-header .siteheader__account', { 1695 // Escape key (27) is handled below - ESC on any element will close the drawer if it's open. 1696 38: function _() { 1697 // up 1698 mainDrawer.close(); 1699 return true; 1700 }, 1701 40: function _() { 1702 // down 1703 openDrawer(); 1704 return true; 1705 } 1706 }, function () { 1707 return this; 1708 }); 1709} 1710module.exports = {
1711 init: function init() { 1712 keyboardEvents(); 1713 1714 // Open the Account Drawer if the request contains a queryparam to do so 1715 var searchParams = new URLSearchParams(window.location.search); 1716 var openForSignIn = searchParams.has(signInKey); 1717 openAccountDrawer = searchParams.has(openAccountDrawerKey); 1718 if (openAccountDrawer || openForSignIn && !window.clientData.user.isAuthenticated) { 1719 openDrawer(); 1720 } 1721 1722 // Remove signin from queryparam if present 1723 if (openForSignIn) { 1724 utils.removeQueryParamFromCurrentUrl(signInKey); 1725 } 1726 $(document).on('click', '.js-drawer-login, .js-drawer-registration, .js-action__account', function (e) { 1727 e.preventDefault(); 1728 openDrawer(e); 1729 1730 // hide a scroll bar for quickview when account drawer is open 1731 var $quickviewModal = $('.quickview-modal'); 1732 if ($quickviewModal.length) { 1733 $quickviewModal.addClass('hide-scroll-bar'); 1734 } 1735 }).on('accountDrawer:show', function () { 1736 openDrawer(); 1737 }).on('accountDrawer:hide', function () { 1738 if (mainDrawer) { 1739 mainDrawer.close(); 1740 } 1741 if (reAuthDrawer) { 1742 reAuthDrawer.close(); 1743 } 1744 }).on('accountDrawer:reauthenticate', function (e, data) { 1745 var originalOpenDrawers = $('.drawer.show').map(function (i, element) { 1746 var $element = $(element); 1747 var $openDrawer = $element.data('drawer'); 1748 return $openDrawer; 1749 }); 1750 if (originalOpenDrawers.length) { 1751 originalOpenDrawers.each(function (i, $openDrawer) { 1752 $openDrawer.close(undefined, true); 1753 }); 1754 } 1755 var forcePageReauth = data.forcePageReauth ? data.forcePageReauth : false; 1756 openDrawer(e, true, forcePageReauth); 1757 reAuthDrawer.$drawer.one('login:success', 'form.login', function () { 1758 var isNavigatingAway = false; 1759 $(window).on('beforeunload', function () { 1760 isNavigatingAway = true; 1761 }); 1762 data.onAuthenticated.call(this); 1763 1764 /** 1765 * Close the reauth drawer in case the customer remains on the same page. 1766 * Need to wait for login:success to finish so it properly incorporates data set via onAuthenticated. 1767 * It also gives the page a chance to redirect if applicable before affecting the UI. 1768 */ 1769 setTimeout(function () { 1770 if (!isNavigatingAway) { 1771 reAuthDrawer.close(); 1772 } 1773 }); 1774 }); 1775 reAuthDrawer.$drawer.one('hide.drawer', function () { 1776 if (originalOpenDrawers.length) { 1777 originalOpenDrawers.each(function (i, $openDrawer) { 1778 // Let the hide operation finish then reopen 1779 $openDrawer.open(); 1780 }); 1781 } 1782 1783 // Remove drawer so on next access, its in a default/original state 1784 reAuthDrawer.remove(); 1785 reAuthDrawer = undefined; 1786 }); 1787 }); 1788 } 1789}; 1790 1791/***/ }), 1792
1793/***/ "./.tmp/app_col_eu_core/js/components/authStateValidator.js": 1794/*!******************************************************************!*\ 1795 !*** ./.tmp/app_col_eu_core/js/components/authStateValidator.js ***! 1796 \******************************************************************/ 1797/*! no static exports found */ 1798/***/ (function(module, exports, __webpack_require__) { 1799 1800"use strict"; 1801 1802 1803/** 1804 * Returns the value of an auth permission. 1805 * @param {string} permission - the permission to check 1806 * @returns {boolean} value of the permission 1807 */ 1808function customerHasPermission(permission) { 1809 var value = window.clientData && window.clientData.user && window.clientData.user.permissionsForCurrentAuthState && window.clientData.user.permissionsForCurrentAuthState[permission]; 1810 return !!value; // force to boolean 1811} 1812 1813/** 1814 * Checks permissions and adds click event listeners to a specified target to handle reauthentication logic. 1815 * 1816 * When the target is clicked, the function prevents the default action and triggers 1817 * an authentication event. If authentication is successful, it either redirects to 1818 * the specified URL or triggers a click on the target element. 1819 * 1820 * @param {string} selector - A selector for the target elements to attach the click event listener. 1821 * @param {string} permission - The permission key to check in the current authentication state. 1822 */ 1823function registerClickAuthValidator(selector, permission) { 1824 if (customerHasPermission(permission)) { 1825 return; 1826 } 1827 $(document).on('click.reauth', selector + ':not(body)', function (e) { 1828 e.preventDefault(); 1829 e.stopImmediatePropagation(); 1830 var $target = $(e.currentTarget); 1831 $(document).trigger('accountDrawer:reauthenticate', { 1832 onAuthenticated: function onAuthenticated() { 1833 try { 1834 $(document).off('.reauth'); 1835 1836 /** 1837 * Re-trigger the original button click. 1838 * Calling JQuery trigger('click') will not work, must use the native click function. 1839 * Reference: https://stackoverflow.com/a/18654635 1840 */ 1841 $target[0].click(); 1842 1843 // 'this' references the login form in the callback. We add a data attribute to allow early exit from redirect behaviors upon successful login. 1844 $(this).data('skip-default-nav', true); 1845 } catch (error) { 1846 // eslint-disable-next-line no-console 1847 console.error('Original click was not propely routed after re-authentication:', error.message); 1848 } 1849 } 1850 }); 1851 }); 1852} 1853 1854/** 1855 * Registers page load event handlers for a specified target to handle reauthentication logic. 1856 * 1857 * @param {string} selector - A selector for the target elements to attach the click event listener. 1858 * @param {string} permission - The permission key to check in the current authentication state. 1859 * 1860 */ 1861function registerPageAuthValidator(selector, permission) { 1862 if (!$(selector).length || customerHasPermission(permission)) { 1863 return; 1864 } 1865 $(window).on('load', function () { 1866 $(document).trigger('accountDrawer:reauthenticate', { 1867 onAuthenticated: function onAuthenticated() { 1868 $(document).off('.reauth'); 1869 }, 1870 forcePageReauth: true 1871 }); 1872 }); 1873} 1874 1875/** 1876 * For HTML elements that are loaded/rendered from external sources via iFrames and such, 1877 * this registers overlay event handlers to trigger reauthentication. 1878 * @param {string} promptSelector - A selector for the prompt that should be clicked to trigger reauthentication 1879 * @param {string} overlaySelector - A selector for the overlay that blocks the external HTML elements 1880 */ 1881function registerExternalElementsOverlayValidator(promptSelector, overlaySelector) { 1882 /** 1883 * ATTENTION: 1884 * We cannot abort event registration based upon whether or not the user has a given permission. 1885 * 1886 * Why? 1887 * The overlay should be server rendered. In the case of lazy loading, a permission that was granted upon page load, 1888 * may not be granted still when lazy load fires. As such, the click handler always needs to be registered 1889 * but it will have no effect if there's no overlays. 1890 * 1891 * Why is this different than other validators? 1892 * The other validation scenarios don't render elements that block a user's access to functionality, they just intercept clicks.
1893 * Also, the other scenarios are not for external HTML elements so if they accidentally get clicked... server-side auth validation 1894 * works as fallback to redirect them to a log in prompt. 1895 */ 1896 1897 // Note: intentionally not using the 'reauth' event namespace here so the click handler is never unregistered 1898 $(document).on('click', promptSelector, function () { 1899 var $overlays = $(overlaySelector); 1900 var $prompts = $(promptSelector); 1901 $(document).trigger('accountDrawer:reauthenticate', { 1902 onAuthenticated: function onAuthenticated() { 1903 var $loginForm = $(this); 1904 1905 // Since we've reauthenticated, other reauth click handlers can be disabled for normal interaction 1906 $(document).off('.reauth'); 1907 1908 // Skip nav so user can click the original button/link 1909 $loginForm.data('skip-default-nav', true); 1910 1911 // Remove the existing prompts and overlay(s) 1912 $overlays.parent().removeClass('disabled'); 1913 $overlays.remove(); 1914 $prompts.remove(); 1915 } 1916 }); 1917 }); 1918 $(document).on('click', overlaySelector, function () { 1919 var $prompts = $(promptSelector); 1920 $prompts.each(function () { 1921 var $this = $(this); 1922 1923 // Alert already setup 1924 if ($this.find('.alert').length) { 1925 return; 1926 } 1927 var html = $this.html(); 1928 $this.empty(); 1929 $this.alert({ 1930 content: html, 1931 theme: 'warning', 1932 autoClose: false, 1933 transition: '', 1934 dismissible: false 1935 }); 1936 }); 1937 }); 1938} 1939 1940/** 1941 * Registers event handlers for elements requiring PII and Checkout authentication. 1942 */ 1943function initAuthValidators() { 1944 /** 1945 * If they're not allowed to at least view their basic customer info 1946 * then their state is not applicable to re-authentication. 1947 */ 1948 if (!customerHasPermission('canViewBasicPersonalInfo')) { 1949 // This allows an error message to be logged without blocking CMS previews 1950 if (!window.clientData || !window.clientData.user) { 1951 console.error('authStateValidator.initAuthValidators: Client user data is missing'); 1952 } else if (window.clientData.user.isRegistered) { 1953 // Logs out remembered customers when the feature is disabled and customer is unathenticated 1954 $.ajax({ 1955 url: window.resources.account.logoutURL, 1956 type: 'get', 1957 success: function success() { 1958 window.location.reload(); 1959 }, 1960 error: function error() { 1961 console.error('Ajax request to log out remembered customer failed'); 1962 } 1963 }); 1964 } 1965 return; 1966 } 1967 registerClickAuthValidator('.js-pii_auth-required', 'canViewAndEditPii'); 1968 registerClickAuthValidator('.js-checkout_auth-required', 'canPlaceOrder'); 1969 registerPageAuthValidator('body.js-checkout_auth-required', 'canPlaceOrder'); 1970 registerExternalElementsOverlayValidator('.js-express-payment_auth-required', '.js-express-payment_auth-required-overlay'); 1971} 1972module.exports = { 1973 initAuthValidators: initAuthValidators 1974}; 1975 1976/***/ }), 1977
1978/***/ "./.tmp/app_col_eu_core/js/components/breakpoints.js": 1979/*!***********************************************************!*\ 1980 !*** ./.tmp/app_col_eu_core/js/components/breakpoints.js ***! 1981 \***********************************************************/ 1982/*! no static exports found */ 1983/***/ (function(module, exports, __webpack_require__) { 1984 1985"use strict"; 1986 1987 1988/** 1989* Checks if the current bootstrap UI breakpoint matches the breakpoint abbreviation. 1990* @param {string} breakpointAbbreviation Breakpoint abbreviations. Options are: xs, sm, md, lg, xl 1991* @returns {boolean} True if the breakpoint abbreviation is the current breakpoint. 1992*/ 1993function isCurrentBreakpointAbbreviation(breakpointAbbreviation) { 1994 if (!['xs', 'sm', 'md', 'lg', 'xl', '2xl'].includes(breakpointAbbreviation)) { 1995 throw new Error('Invalid breakpoint abbreviation: ' + breakpointAbbreviation); 1996 } 1997 var selector = '.bootstrap-breakpoints-' + breakpointAbbreviation; 1998 var $breakpointIndicator = $(selector); 1999 if ($breakpointIndicator.length === 0) { 2000 throw new Error('Breakpoint indicator not found for: ' + breakpointAbbreviation); 2001 } 2002 return $breakpointIndicator.css('display') === 'block'; 2003} 2004 2005/** 2006 * Finds the current breakpoint from the hidden .bootstrap-breakpoints element. 2007 * @returns {string} The currently active breakpoint abbreviation. ('xs', 'sm', 'md', 'lg', or 'xl') 2008 */ 2009function getCurrentBreakpoint() { 2010 var $breakpointIndicators = $('.bootstrap-breakpoints > div'); 2011 var currentBP; 2012 $breakpointIndicators.each(function () { 2013 var $bpIndicator = $(this); 2014 if ($bpIndicator.css('display') === 'block') { 2015 currentBP = $bpIndicator.data('bp'); 2016 return false; // break out of the each loop 2017 } 2018 2019 return true; // continue to next item in loop 2020 }); 2021 2022 return currentBP; 2023} 2024module.exports = { 2025 /** 2026 * This check is only for the resolution of the screen, it should 2027 * not be used to infer device type or user interaction (touch/click). 2028 * @returns {boolean} True if the screen is low resolution. 2029 */ 2030 isLowRes: function isLowRes() { 2031 return this.isCurrentBreakpoint('xs', 'sm', 'md'); 2032 }, 2033 /** 2034 * This check is only for the resolution of the screen, it should 2035 * not be used to infer device type or user interaction (touch/click). 2036 * @returns {boolean} True if the screen is high resolution. 2037 */ 2038 isHighRes: function isHighRes() { 2039 return this.isCurrentBreakpoint('lg', 'xl', '2xl'); 2040 }, 2041 /** 2042 * Checks if the current bootstrap UI breakpoint matches a parameter. 2043 * @example isCurrentBreakpoint('xs', 'sm') 2044 * @param {arguments} breakpointAbbreviations One of more comma separated string breakpoint parameters. Options are: xs, sm, md, lg, xl 2045 * @returns {boolean} True if any of the breakpoint abbreviations are the current breakpoint. 2046 */ 2047 isCurrentBreakpoint: function isCurrentBreakpoint() { 2048 if (arguments.length === 0) { 2049 throw new Error('No breakpoint abbreviations specified.'); 2050 } 2051 for (var i = 0, len = arguments.length; i < len; i++) { 2052 var abbreviation = arguments[i]; 2053 if (isCurrentBreakpointAbbreviation(abbreviation)) { 2054 return true; 2055 } 2056 } 2057 2058 /** 2059 * NOTE: it is explicitly intentional that this function accepts the breakpoint abbreviations and returns a boolean. 2060 * If the function was instead 'getCurrentBreakpoint' where it returns the breakpoint abbreviation... 2061 * then it might make future refactors and bootstrap updates more difficult if the abbreviations change 2062 * because the return value may not be consumed near the function call (difficult to track/update). 2063 */ 2064 return false; 2065 }, 2066 getCurrentBreakpoint: getCurrentBreakpoint 2067}; 2068 2069/***/ }), 2070
2071/***/ "./.tmp/app_col_eu_core/js/components/carousel.js": 2072/*!********************************************************!*\ 2073 !*** ./.tmp/app_col_eu_core/js/components/carousel.js ***! 2074 \********************************************************/ 2075/*! no static exports found */ 2076/***/ (function(module, exports, __webpack_require__) { 2077 2078"use strict"; 2079 2080 2081__webpack_require__(/*! slick-carousel/slick/slick.min */ "./node_modules/slick-carousel/slick/slick.min.js"); 2082module.exports = function () { 2083 var defaultSlickSettings = { 2084 infinite: false, 2085 mobileFirst: true, 2086 adaptiveHeight: true, 2087 responsive: [{ 2088 breakpoint: 0, 2089 settings: { 2090 dots: true, 2091 centerMode: true, 2092 centerPadding: '2.5rem' 2093 } 2094 }, { 2095 breakpoint: 1024, 2096 settings: { 2097 dots: true, 2098 centerMode: true, 2099 centerPadding: '3.75rem' 2100 } 2101 }] 2102 }; 2103 $('.carousel-container').slick(defaultSlickSettings); 2104}; 2105 2106// eslint-disable-next-line no-unused-vars 2107window.initCarousel = function (selector, classes, settings) { 2108 var slickAttempts = 0; 2109 var checkForSlick = function checkForSlick() { 2110 if (typeof $.fn.slick !== 'function' && slickAttempts < 30) { 2111 slickAttempts++; 2112 setTimeout(checkForSlick, 100); 2113 } else { 2114 var $carousel = $(selector);
2115 $carousel.addClass(classes); 2116 $carousel.children('div').each(function () { 2117 var $slide = $(this); 2118 if ($slide.text().trim() === '' && $slide.find('img').length === 0) { 2119 $slide.remove(); 2120 } 2121 }); 2122 $carousel.slick(settings); 2123 } 2124 }; 2125 checkForSlick(); 2126}; 2127 2128/***/ }), 2129
2130/***/ "./.tmp/app_col_eu_core/js/components/cleave.js": 2131/*!******************************************************!*\ 2132 !*** ./.tmp/app_col_eu_core/js/components/cleave.js ***! 2133 \******************************************************/ 2134/*! no static exports found */ 2135/***/ (function(module, exports, __webpack_require__) { 2136 2137"use strict"; 2138 2139 2140var Cleave = __webpack_require__(/*! cleave.js */ "./node_modules/cleave.js/dist/cleave-esm.js").default; 2141__webpack_require__(/*! cleave.js/dist/addons/cleave-phone.i18n.js */ "./node_modules/cleave.js/dist/addons/cleave-phone.i18n.js"); 2142var countryPhoneCodes = { 2143 AT: '+43', 2144 BE: '+32', 2145 DE: '+49', 2146 ES: '+34', 2147 FI: '+358', 2148 FR: '+33', 2149 IE: '+353', 2150 IT: '+39', 2151 NL: '+31', 2152 GB: '+44' 2153}; 2154module.exports = { 2155 handleCreditCardNumber: function handleCreditCardNumber(cardFieldSelector, cardTypeSelector) { 2156 var cleave = new Cleave(cardFieldSelector, { 2157 creditCard: true, 2158 creditCardStrictMode: true, 2159 onCreditCardTypeChanged: function onCreditCardTypeChanged(type) { 2160 var creditCardTypes = { 2161 visa: 'Visa', 2162 mastercard: 'Master Card', 2163 amex: 'Amex', 2164 discover: 'Discover', 2165 maestro: 'Maestro', 2166 unknown: 'Unknown' 2167 }; 2168 var cardType = creditCardTypes[Object.keys(creditCardTypes).indexOf(type) > -1 ? type : 'unknown']; 2169 $(cardTypeSelector).val(cardType); 2170 $('.card-number-wrapper').attr('data-type', type); 2171 if (type === 'visa' || type === 'mastercard' || type === 'discover') { 2172 $('#securityCode').attr('maxlength', 3); 2173 $('#securityCode').attr('minlength', 3); 2174 } else { 2175 $('#securityCode').attr('maxlength', 4); 2176 $('#securityCode').attr('minlength', type === 'amex' ? 4 : 3); 2177 } 2178 2179 /** 2180 * Update Credit Card Images 2181 */ 2182 $('.payment-method-image .selected').addClass('d-none').removeClass('d-inline-block'); 2183 $('.payment-method-image .unselected').removeClass('d-none').addClass('d-inline-block'); 2184 $("[data-card-type=\"".concat(type, "\"] .selected")).removeClass('d-none').addClass('d-inline-block'); 2185 $("[data-card-type=\"".concat(type, "\"] .unselected")).removeClass('d-inline-block').addClass('d-none'); 2186 } 2187 }); 2188 $(cardFieldSelector).data('cleave', cleave); 2189 }, 2190 serializeData: function serializeData(form) { 2191 var serializedArray = form.serializeArray(); 2192 serializedArray.forEach(function (item) { 2193 if (item.name.indexOf('cardNumber') > -1) { 2194 item.value = $('#cardNumber').data('cleave').getRawValue(); // eslint-disable-line 2195 } 2196 }); 2197 2198 return $.param(serializedArray); 2199 }, 2200 formatPhoneField: function formatPhoneField(field) { 2201 if (!field.dataset.cleaveEnabled) { 2202 var loc = window.digitalData ? window.digitalData.page.pageInfo.country : ''; 2203 var cleave; // eslint-disable-line no-unused-vars 2204 var settings; 2205 if (loc === 'US' || loc === 'CA') { 2206 settings = { 2207 numericOnly: true, 2208 blocks: [0, 3, 0, 3, 4], 2209 delimiters: ['(', ')', ' ', '-'] 2210 }; 2211 } else if (countryPhoneCodes[loc]) { 2212 settings = { 2213 phone: true, 2214 phoneRegionCode: loc, 2215 rawValue: countryPhoneCodes[loc] 2216 }; 2217 } else { 2218 // loc not found in countryPhoneCodes array 2219 settings = { 2220 numericOnly: true, 2221 prefix: '+', 2222 noImmediatePrefix: true 2223 }; 2224 } 2225 // eslint-disable-next-line no-unused-vars 2226 cleave = new Cleave(field, settings); 2227 // ensure that we only apply cleave to this field once. 2228 field.dataset.cleaveEnabled = true; // eslint-disable-line no-param-reassign 2229 } 2230 }, 2231 2232 formatPhone: function formatPhone() { 2233 var selectors = ['.shippingPhoneNumber', '.js-ups-contact-phone', '.upsSelectedAddressPhone', '.profilePhoneNumber', '.billingPhoneNumber', '#pbl_phone']; 2234 var $phoneFields = $(selectors.join(', ')); 2235 if ($phoneFields.length > 0) { 2236 $phoneFields.each(function (index, field) { 2237 module.exports.formatPhoneField(field); 2238 }); 2239 } 2240 } 2241}; 2242 2243/***/ }), 2244
2245/***/ "./.tmp/app_col_eu_core/js/components/clientRequest.js": 2246/*!*************************************************************!*\ 2247 !*** ./.tmp/app_col_eu_core/js/components/clientRequest.js ***! 2248 \*************************************************************/ 2249/*! no static exports found */ 2250/***/ (function(module, exports, __webpack_require__) { 2251 2252"use strict"; 2253 2254 2255var ua = window.navigator.userAgent; 2256var $siteheader = $('.siteheader'); 2257var url = $siteheader.data('request-url'); 2258 2259/** 2260 * function validates if the browser user agent is from an Internet Explorer 11 or lower version 2261 * @param {string} userAgent user-agent of the http request 2262 * @return {boolean} true if the browser user agent is from an an Internet Explorer 11 or lower version. 2263 */ 2264function isInternetExplorer11(userAgent) { 2265 var ie11Regex = /(msie|trident)/i; // 'i' at the end for case-invariant regex 2266 return ie11Regex.test(userAgent); 2267} 2268module.exports = { 2269 init: function init() { 2270 if (isInternetExplorer11(ua)) { 2271 $.get(url, function (data) { 2272 $.alert({ 2273 content: data.message, 2274 theme: 'danger', 2275 placement: 'banner' 2276 }); 2277 }); 2278 } 2279 } 2280}; 2281 2282/***/ }), 2283
2284/***/ "./.tmp/app_col_eu_core/js/components/clientSideValidation.js": 2285/*!********************************************************************!*\ 2286 !*** ./.tmp/app_col_eu_core/js/components/clientSideValidation.js ***! 2287 \********************************************************************/ 2288/*! no static exports found */ 2289/***/ (function(module, exports, __webpack_require__) { 2290 2291"use strict"; 2292 2293 2294var passwordChecker = __webpack_require__(/*! ../passwordChecker/passwordChecker */ "./.tmp/app_col_eu_core/js/passwordChecker/passwordChecker.js"); 2295 2296/** 2297 * Clear invalid classes, show help text, clear setCustomValidity. 2298 * @param {element} formField - Form to be cleared 2299 * @returns {void} 2300 */ 2301function clearFieldInvalidState(formField) { 2302 var $formField = $(formField); 2303 $formField.removeClass('is-invalid'); 2304 $formField.attr('aria-invalid', false); 2305 formField.setCustomValidity(''); 2306 $formField.closest('.form-group').removeClass('is-invalid').find('.form-help-text').show(); 2307} 2308 2309/** 2310 * Handle event. 2311 * @param {jQuery.element} $formField - Input element to be updated 2312 * @returns {void} 2313 */ 2314function updateFocusFillState($formField) { 2315 var formFieldIsActive = $formField.is($(document.activeElement)); 2316 if ($formField && $formField.val() !== null) { 2317 // Select boxes can return null for value 2318 if ($formField.val().length > 0 || formFieldIsActive) { 2319 $formField.closest('.form-group').addClass('focus-fill'); 2320 } else { 2321 $formField.closest('.form-group').removeClass('focus-fill'); 2322 } 2323 } 2324} 2325 2326/** 2327 * Validate whole form. Requires `this` to be set to form object 2328 * @param {jQuery.event} event - Event to be canceled if form is invalid. 2329 * @returns {boolean} - Flag to indicate if form is valid 2330 */ 2331function _validateForm(event) { 2332 var valid = true; 2333 var $form = $(this); // this can be not a form element; can be a container of fields. 2334 var $formFields = $form.find('input, select, textarea'); 2335 if (this.checkValidity && !this.checkValidity()) { 2336 // safari 2337 valid = false; 2338 if (event) { 2339 event.preventDefault(); 2340 event.stopPropagation(); 2341 event.stopImmediatePropagation(); 2342 } 2343 $form.trigger('invalidForm'); 2344 } 2345 $formFields.each(function () { 2346 var $formField = $(this); 2347 2348 // set or clear error state for each field 2349 $formField.trigger('invalid', this.validity); 2350 2351 // add or remove the focus-fill class 2352 updateFocusFillState($formField); 2353 }); 2354 2355 // if $form is not a form element this.checkValidity is undefined so valid will be true. Set valid according to if there are invalid fields in the container. 2356 var $invalidFields = $formFields.filter('.is-invalid'); 2357 valid = valid && !$invalidFields.length; 2358 if (!valid) { 2359 var $firstInvalid = $invalidFields.first(); 2360 if ($firstInvalid.prop('tagName') === 'INPUT') { 2361 $firstInvalid.trigger('select'); 2362 } 2363 $firstInvalid.trigger('focus'); 2364 } 2365 return valid; 2366} 2367 2368/** 2369 * Remove all validation. Should be called every time before revalidating form 2370 * @param {element} form - Form to be cleared 2371 * @returns {void} 2372 */ 2373function clearForm(form) { 2374 $(form).find('.is-invalid').removeClass('is-invalid was-validated'); 2375} 2376 2377/** 2378 * Special handler for numeric fields which don't get validated until onSubmit 2379 * @returns {void} 2380 */ 2381function handleNumericOnBlur() { 2382 var $formControl = $(this); 2383 var valid = true; 2384 var rangeError = $formControl.data('range-error'); 2385 var patternError = $formControl.data('pattern-mismatch'); 2386 var val = $formControl.val(); 2387 this.setCustomValidity(''); // clear previous invalid state 2388 2389 if ($formControl.attr('type') === 'number') { 2390 val = parseInt(val, 10); 2391 } 2392 if (rangeError) { 2393 var min = parseInt($formControl.attr('min'), 10); 2394 var max = parseInt($formControl.attr('max'), 10); 2395 var minLength = $formControl.attr('minlength'); 2396 var maxLength = $formControl.attr('maxlength'); 2397 if (val < min || val > max || val.length < minLength || val.length > maxLength) { 2398 this.setCustomValidity(rangeError); 2399 valid = false; 2400 } 2401 } 2402 if (valid && patternError) { 2403 var regex = new RegExp($formControl.attr('pattern')); 2404 if (!regex.test(val)) { 2405 this.setCustomValidity(patternError); 2406 valid = false;
2407 } 2408 } 2409} 2410 2411/** 2412 * Handle on focus in event. 2413 * @returns {void} 2414 */ 2415function handleOnFocus() { 2416 $(this).closest('.form-group').addClass('focus-fill'); 2417} 2418 2419/** 2420 * Handle on focus out event. 2421 * @returns {void} 2422 */ 2423function handleOnBlur() { 2424 var $formControl = $(this); 2425 updateFocusFillState($formControl); 2426 2427 // skip validation if the field is empty. This prevents "required" errors from popping up if you tab through the form 2428 if ($formControl.val() === '') { 2429 clearFieldInvalidState($formControl[0]); 2430 return; 2431 } 2432 if ($formControl.data('enforce-uppercase')) { 2433 $formControl.val($formControl.val().toUpperCase()); 2434 } 2435 var mismatchError = $formControl.data('mismatch-error'); 2436 var $mismatchField = $formControl.data('mismatch-field') && $('#' + $formControl.data('mismatch-field')); 2437 if ($formControl.attr('type') === 'number' || $formControl.attr('type') === 'tel') { 2438 handleNumericOnBlur.apply(this); 2439 } else if (mismatchError && $mismatchField && $mismatchField.length) { 2440 if ($formControl.val() && $mismatchField.val() !== $formControl.val()) { 2441 this.setCustomValidity(mismatchError); 2442 if ($mismatchField.attr('type') === 'password') { 2443 $mismatchField.trigger('select'); 2444 } 2445 } else if (this.validationMessage === mismatchError) { 2446 // if the fields previously did not match, but they do now, remove the custom validity. 2447 this.setCustomValidity(''); 2448 } 2449 } 2450 2451 // Check to see if a password is invalid when focus is lost on the field 2452 if ($formControl.hasClass('password-field')) { 2453 var validPassword = passwordChecker.checkPasswordValidity($formControl); 2454 if (!validPassword) { 2455 var $invalidPasswordField = $formControl.closest('.form-group').find('.invalid-password'); 2456 $invalidPasswordField.removeClass('d-none'); 2457 this.setCustomValidity('Password does not meet requirements'); 2458 } else { 2459 this.setCustomValidity(''); 2460 } 2461 } 2462 $formControl.trigger('invalid', this.validity); 2463} 2464 2465/** 2466 * Handle on input event. 2467 * @returns {void} 2468 */ 2469function handleOnInput() { 2470 updateFocusFillState($(this)); 2471} 2472 2473/** 2474 * Check if the field is visible and valid, or if not visible. For when we only want to validate visible fields, 2475 * and we don't care if the hidden fields are invalid. 2476 * @param {element} field The form field of which to check validity. 2477 * @returns {boolean} whether the field is hidden or valid and visible. 2478 */ 2479function isVisibleFieldValid(field) { 2480 return field.validity.valid || !$(field).is(':visible'); 2481} 2482 2483/** 2484 * Quietly validate required form elements without triggering invalid ui states. 2485 * See login.js for an example. 2486 * @param {element} $form - Form to be validated 2487 * @returns {boolean} - required elements are filled in 2488 */ 2489function quietValidation($form) { 2490 return $form[0].checkValidity(); 2491} 2492 2493/** 2494 * Handles proper UI display after autofill. 2495 * @param {JQuery} $forms - forms to examine for autofill 2496 */ 2497function _empty($forms) { 2498 try { 2499 var hasAutoFill = $forms.find(':-webkit-autofill').length; 2500 if (hasAutoFill) { 2501 $(':-webkit-autofill').closest('.form-group').addClass('focus-fill'); 2502 } 2503 } catch (e) { 2504 // eslint-disable-next-line no-trailing-spaces 2505 } 2506} 2507 2508/** 2509 * Helper function to validate the current state of submit CTA for registration form 2510 * @param {HTMLElement} thisField the field in the registration forms that was changed 2511 */ 2512function setSubmitButtonState(thisField) { 2513 var $form = $(thisField).closest('form'); 2514 var isValid = quietValidation($form); 2515 var $button = $form.find('button[type=submit]'); 2516 if (isValid) { 2517 $button.attr('disabled', false); 2518 $button.removeClass('disabled'); 2519 } else { 2520 $button.attr('disabled', true); 2521 } 2522} 2523 2524/** 2525 * Toggles submit button state if valid. 2526 * @param {JQuery} $validSubmitForms - forms to examine for submit 2527 */ 2528function _toggleSubmitButtonIfValid($validSubmitForms) { 2529 // check if page has form which valid submit is active 2530 if (!$validSubmitForms.length) { 2531 return; 2532 } 2533 2534 /** 2535 * toggle submit button when all the fields checked vaidate correctly 2536 * @param {Object} form the form that is going to be validated 2537 * @param {Object} $submit is the name of the button that is enabled/disabled 2538 */ 2539 var toggleSubmit = function toggleSubmit(form, $submit) { 2540 var isValid = form.checkValidity(); 2541 $submit.toggleClass('disabled', !isValid).prop('disabled', !isValid); 2542 }; 2543 2544 // execute for each form with js-form-valid-submit class 2545 $validSubmitForms.each(function () { 2546 var $form = $(this); 2547 var $submit = $form.find('button[type=submit], input[type=submit]'); 2548 2549 // check form validity for each input/select/textarea keyup blur and change events 2550 $form.find('input, select, textarea').filter('[required]').on('keyup blur change', function () { 2551 toggleSubmit($form[0], $submit); 2552 }); 2553 2554 // initial toggle 2555 toggleSubmit(this, $submit); 2556 }); 2557} 2558module.exports = { 2559 validateForm: function validateForm() { 2560 $.fn.validateForm = function (event) { 2561 return _validateForm.call(this[0], event || null); 2562 }; 2563 },
2564 invalid: function invalid() { 2565 $('body').on('invalid', 'input, select, textarea', function (e) { 2566 e.preventDefault(); 2567 var $formControl = $(this); 2568 if (this.tagName.toLowerCase() === 'textarea' && $formControl.attr('pattern') && $formControl.data('pattern-mismatch')) { 2569 // textareas do not support the pattern attribute. 2570 var regEx = new RegExp($formControl.attr('pattern')); 2571 var patternError = $formControl.data('pattern-mismatch'); 2572 if (!regEx.test($formControl.val())) { 2573 this.setCustomValidity(patternError); 2574 } else if (this.validationMessage === patternError) { 2575 // it passed the test and the custom validation message is the same. 2576 this.setCustomValidity(''); 2577 } 2578 } 2579 if (!this.validity.valid) { 2580 var validationMessage = this.validationMessage; 2581 $formControl.addClass('is-invalid'); 2582 $formControl.attr('aria-invalid', true); 2583 if (this.validity.valueMissing && $formControl.data('missing-error')) { 2584 validationMessage = $formControl.data('missing-error'); 2585 } else if (this.value.length < parseInt(this.getAttribute('minlength'), 10) // for IE: doesn't support validity.tooShort 2586 && $formControl.data('range-error')) { 2587 validationMessage = $formControl.data('range-error'); 2588 } else if ((this.validity.tooLong || this.validity.tooShort // works with minlength and maxlength attribtues (except for IE) 2589 ) && $formControl.data('range-error')) { 2590 validationMessage = $formControl.data('range-error'); 2591 } else if ((this.validity.rangeOverflow || this.validity.rangeUnderflow // works with min and max attributes 2592 ) && $formControl.data('range-error')) { 2593 validationMessage = $formControl.data('range-error'); 2594 } else if (this.validity.patternMismatch && $formControl.data('pattern-mismatch')) { 2595 validationMessage = $formControl.data('pattern-mismatch'); 2596 } 2597 if ($formControl.siblings('.btn-icon').length || $formControl.is('select') || $formControl.closest('.form-group').hasClass('form-group--icon-append')) { 2598 $formControl.closest('.form-group').addClass('icon-buffer'); 2599 } 2600 2601 // Set invalid state 2602 $formControl.closest('.form-group').find('.invalid-feedback').text(validationMessage); 2603 $formControl.closest('.form-group').addClass('is-invalid'); 2604 $formControl.closest('.form-group').find('.form-help-text').hide(); 2605 } else { 2606 clearFieldInvalidState(this); 2607 } 2608 }); 2609 }, 2610 valid: function valid() {}, 2611 empty: function empty() { 2612 $(window).on('load', function () { 2613 var formsSelector = 'form'; 2614 var $forms = $(formsSelector); 2615 _empty($forms); 2616 $('body').on('form:created', formsSelector, function () { 2617 _empty($(this)); 2618 }); 2619 }); 2620 }, 2621 submit: function submit() { 2622 $('body').on('submit', 'form', function (e) { 2623 return _validateForm.call(this, e); 2624 }); 2625 }, 2626 buttonClick: function buttonClick() { 2627 $('body').on('click', 'form button[type="submit"], form input[type="submit"]', function (e) { 2628 var isFullyCoveredByAny = $('.billing-payment-options-block').data('fully-covered'); 2629 var paymentMethod = $('#selectedPaymentMethod').val() || $('#selectedPaymentOption').val(); 2630 if (!(isFullyCoveredByAny === true || paymentMethod === 'PayByLink')) { 2631 // clear all errors when trying to submit the form 2632 var theForm = this.form; 2633 clearForm(theForm); 2634 _validateForm.call(theForm, e); 2635 } 2636 }); 2637 }, 2638 /** 2639 * Support for Material style form inputs 2640 */ 2641 inlineLabels: function inlineLabels() { 2642 var textInputFields = 'input, select, textarea'; 2643 $('body').on('focus', textInputFields, function (event) { 2644 handleOnFocus.apply(this, [event]); 2645 }).on('blur', textInputFields, function (event) { 2646 handleOnBlur.apply(this, [event]); 2647 }).on('input', textInputFields, function (event) { 2648 handleOnInput.apply(this, [event]); // Update when autofill happens 2649 }); 2650 2651 // Event for adding or removing the "focus-fill" class, which makes the label move. 2652 $(document).on('validation.updateFocusFillState', function () { 2653 $(textInputFields).each(function () { 2654 updateFocusFillState($(this)); 2655 }); 2656 }); 2657 2658 // Set initial states 2659 $(document).trigger('validation.updateFocusFillState'); 2660 }, 2661 /** 2662 * Setup enable/disable submit button feature to a form with js-form-valid-submit cssclass
2663 * If the form is invalid then submit button will be disabled 2664 * If the form is valid then submit button will be enabled 2665 */ 2666 toggleSubmitButtonIfValid: function toggleSubmitButtonIfValid() { 2667 var formsSelector = 'form.js-form-valid-submit'; 2668 var $forms = $(formsSelector); 2669 _toggleSubmitButtonIfValid($forms); 2670 $('body').on('form:created', formsSelector, function () { 2671 _toggleSubmitButtonIfValid($(this)); 2672 }); 2673 }, 2674 /** 2675 * Toggle the disabled state on the submit button if any of the form elements are empty. 2676 * Used on small forms where the fields are not required unless submitting the form. 2677 * (ie: we don't want to show an error if blurring an empty field, but can't submit unless all fields are filled) 2678 * Used on: 2679 * Apply Promo Code on the cart page 2680 * Apply Promo Code on the checkout page 2681 * Gift Card on the checkout page 2682 */ 2683 toggleSubmitOnEmptyForm: function toggleSubmitOnEmptyForm() { 2684 var noEmptyFormSelector = '.js-no-empty-submit'; // this behavior should only apply to elements with this class. 2685 /** 2686 * If any of the form elements are empty, disable the submit button. 2687 * @param {jQuery} $form The container of the fields that determine the disabled state of the button. (not necessarily a form element) 2688 */ 2689 var toggleSubmit = function toggleSubmit($form) { 2690 var isIncomplete = false; 2691 var btnSelector = $form.data('submit-btn-selector'); 2692 var $submitBtn = btnSelector ? $(btnSelector) : $form.find('button[type=submit]'); 2693 var $formElements = $form.find('input, select, textarea'); 2694 $formElements.each(function () { 2695 // eslint-disable-line consistent-return 2696 // look for empty fields 2697 if (!$(this).val()) { 2698 isIncomplete = true; 2699 return false; // No need to keep checking all fields. Break out of .each() loop 2700 } 2701 }); 2702 2703 $submitBtn.prop('disabled', isIncomplete); 2704 }; 2705 2706 // on page load, disable empty forms 2707 $(noEmptyFormSelector).each(function () { 2708 var $form = $(this); 2709 toggleSubmit($form); 2710 }); 2711 2712 // on input, check if the form is empty 2713 $(noEmptyFormSelector).find('input, select, textarea').on('input change blur', function () { 2714 var $form = $(this).closest(noEmptyFormSelector); 2715 toggleSubmit($form); 2716 }); 2717 }, 2718 functions: { 2719 isVisibleFieldValid: isVisibleFieldValid, 2720 quietValidation: quietValidation, 2721 // todo: remove this from login.js and stores.js, replace with form.checkValidity(); 2722 clearFieldInvalidState: clearFieldInvalidState, 2723 clearForm: clearForm, 2724 setSubmitButtonState: setSubmitButtonState 2725 } 2726}; 2727 2728/***/ }), 2729
2730/***/ "./.tmp/app_col_eu_core/js/components/collapsibleItem.js": 2731/*!***************************************************************!*\ 2732 !*** ./.tmp/app_col_eu_core/js/components/collapsibleItem.js ***! 2733 \***************************************************************/ 2734/*! no static exports found */ 2735/***/ (function(module, exports, __webpack_require__) { 2736 2737"use strict"; 2738 2739 2740var breakpoints = __webpack_require__(/*! ./breakpoints */ "./.tmp/app_col_eu_core/js/components/breakpoints.js"); 2741var keyboardAccessibility = __webpack_require__(/*! ../components/keyboardAccessibility */ "./.tmp/app_col_eu_core/js/components/keyboardAccessibility.js"); 2742module.exports = function () { 2743 var sizes = ['xs', 'sm', 'md', 'lg', 'xl', '2xl']; 2744 var selector = ''; 2745 sizes.forEach(function (size) { 2746 selector = '.collapsible-' + size + ' .title'; 2747 2748 // fire click event on enter 2749 keyboardAccessibility(selector, { 2750 13: function _(selected) { 2751 // enter 2752 $(selected).click(); 2753 } 2754 }, function () { 2755 return this; // this is the scope of the jQuery event handler in keyboardAccessibility 2756 }, 'body'); 2757 $('body').on('click', selector, function (e) { 2758 if (size === '2xl' || size === 'xl' && breakpoints.isCurrentBreakpoint('sm', 'md', 'lg', 'xl') || size === 'lg' && breakpoints.isCurrentBreakpoint('sm', 'md', 'lg') || size === 'md' && breakpoints.isCurrentBreakpoint('sm', 'md') || size === 'sm' && breakpoints.isCurrentBreakpoint('sm') || breakpoints.isCurrentBreakpoint('xs')) { 2759 e.preventDefault(); 2760 $(this).closest('.collapsible-' + size).toggleClass('active'); 2761 if ($(this).closest('.collapsible-' + size).hasClass('active')) { 2762 $(this).attr('aria-expanded', true); 2763 } else { 2764 $(this).attr('aria-expanded', false); 2765 } 2766 $(this).trigger('filter:click'); 2767 } 2768 }); 2769 }); 2770}; 2771 2772/***/ }), 2773
2774/***/ "./.tmp/app_col_eu_core/js/components/cookie.js": 2775/*!******************************************************!*\ 2776 !*** ./.tmp/app_col_eu_core/js/components/cookie.js ***! 2777 \******************************************************/ 2778/*! no static exports found */ 2779/***/ (function(module, exports, __webpack_require__) { 2780 2781"use strict"; 2782 2783 2784/** 2785 * Get cookie value by cookie name from browser 2786 * @param {string} cookieName - name of the cookie 2787 * @returns {string} cookie value of the found cookie name 2788 */ 2789function getCookie(cookieName) { 2790 var name = cookieName + '='; 2791 var decodedCookie = decodeURIComponent(document.cookie); 2792 var cookieArray = decodedCookie.split(';'); 2793 for (var i = 0; i < cookieArray.length; i++) { 2794 var cookieItem = cookieArray[i]; 2795 while (cookieItem.charAt(0) === ' ') { 2796 cookieItem = cookieItem.substring(1); 2797 } 2798 if (cookieItem.indexOf(name) === 0) { 2799 return cookieItem.substring(name.length, cookieItem.length); 2800 } 2801 } 2802 return ''; 2803} 2804module.exports = function () { 2805 if ($('.valid-cookie-warning').length > 0) { 2806 var previousSessionID = window.localStorage.getItem('previousSid'); 2807 var currentSessionID = getCookie('sid'); 2808 if (!previousSessionID && currentSessionID) { 2809 // When a user first time visit the home page, 2810 // set the previousSessionID to currentSessionID 2811 // and Show the cookie alert 2812 previousSessionID = currentSessionID; 2813 window.localStorage.setItem('previousSid', previousSessionID); 2814 $('.cookie-warning-messaging').show(); 2815 } else if (previousSessionID && previousSessionID === currentSessionID) { 2816 // Hide the cookie alert if user is in the same session 2817 $('.cookie-warning-messaging').hide(); 2818 } else { 2819 // Clear the previousSessionID from localStorage 2820 // when user session is changed or expired 2821 window.localStorage.removeItem('previousSid'); 2822 } 2823 } 2824}; 2825 2826/***/ }), 2827
2828/***/ "./.tmp/app_col_eu_core/js/components/countdown.js": 2829/*!*********************************************************!*\ 2830 !*** ./.tmp/app_col_eu_core/js/components/countdown.js ***! 2831 \*********************************************************/ 2832/*! no static exports found */ 2833/***/ (function(module, exports, __webpack_require__) { 2834 2835"use strict"; 2836 2837 2838if (!window.timerIDs) { 2839 window.timerIDs = {}; 2840} 2841// PDP-specific selectors in countdown.isml 2842var COUNTDOWN_CONTAINER = '.countdown'; 2843var COUNTDOWN_ACTIVE = '.countdown__prompt, .countdown__clock'; 2844var COUNTDOWN_PROMPT = '.countdown__prompt'; 2845var COUNTDOWN_FINISH_MSG = '.countdown__finished'; 2846var COUNTDOWN_CLOCK = '.countdown__clock'; 2847 2848/** 2849 * Calculate time remaining for countdown 2850 * @param {DateTime} targetTime Time when countdown will hit 0 2851 * @return {number} Difference between target time and now 2852 */ 2853function calcRemainingTime(targetTime) { 2854 return targetTime - new Date(); 2855} 2856 2857/** 2858 * Update unit label 2859 * @param {string} unit Days, hours, minutes, 2860 * @param {boolean} isPlural true passed if count is greater than 1 2861 */ 2862function updateUnitLabel(unit, isPlural) { 2863 if (window.resources && window.resources.countdown && window.resources.countdown[unit]) { 2864 var $unit = $('.countdown__label--' + unit); 2865 if (isPlural) { 2866 $unit.text(window.resources.countdown[unit]); 2867 } else { 2868 // Drop 's' from days, hours, minutes, seconds 2869 $unit.text(window.resources.countdown[unit.substring(0, unit.length - 1)]); 2870 } 2871 } 2872} 2873 2874/** 2875 * Updates countdown clock/timer values and handles end state. 2876 * @param {string} contentContainer Selector containing the timer 2877 * @param {string} timerId Selector for the timer 2878 * @param {DateTime} targetTime Time when countdown will hit 0 2879 * @param {string} selectorsActive Selector of content to show 2880 * @param {string} selectorsFinished Selector of content to hide 2881 */ 2882function updateCountdownTimer(contentContainer, timerId, targetTime, selectorsActive, selectorsFinished) { 2883 var $target = $(contentContainer); 2884 var remainingTime = calcRemainingTime(targetTime); 2885 if (remainingTime <= 0) { 2886 clearInterval(window.timerIDs[timerId]); 2887 2888 // Show end state 2889 $(selectorsFinished).show(); 2890 $(selectorsActive).hide(); 2891 } else { 2892 // Show active state 2893 $(selectorsFinished).hide(); 2894 $(selectorsActive).show(); 2895 var days = Math.floor(remainingTime / (1000 * 60 * 60 * 24)); 2896 var hours = Math.floor(remainingTime / (1000 * 60 * 60)) % 24; 2897 var minutes = Math.floor(remainingTime / (1000 * 60)) % 60; 2898 var seconds = Math.floor(remainingTime / 1000) % 60; 2899 2900 // Leading zeros 2901 minutes = minutes < 10 ? '0' + minutes : minutes; 2902 seconds = seconds < 10 ? '0' + seconds : seconds; 2903 var $countdownValues = $target.find('.hours, .minutes, .seconds'); 2904 $countdownValues.eq(0).text(hours); 2905 $countdownValues.eq(1).text(minutes); 2906 $countdownValues.eq(2).text(seconds); 2907 2908 // Dynamic 'day(s)' unit and label 2909 var $days = $target.find('.days'); 2910 var $unit = $target.find('.countdown__label--days'); 2911 if (days) { 2912 $days.text(days).show(); 2913 updateUnitLabel('days', days > 1); 2914 $unit.show(); 2915 } else { 2916 $days.hide(); 2917 $unit.hide(); 2918 } 2919 } 2920} 2921 2922/** 2923 * Initiates countdown timer 2924 * @param {string} contentContainer Selector containing the timer 2925 * @param {string} timerId Selector for the timer 2926 * @param {string} dateStr target date 2927 * @param {number} freq Frequency, in ms, at which timer updates, eg. 1000 2928 * @param {string} selectorsActive Selector of content to show 2929 * @param {string} selectorsFinished Selector of content to hide 2930 */ 2931function initCountdownTimer(contentContainer, timerId, dateStr, freq, selectorsActive, selectorsFinished) { 2932 var targetTime = new Date(dateStr); 2933 var remainingTime = calcRemainingTime(targetTime); 2934 if (remainingTime > 0 && selectorsActive && selectorsActive !== '') { 2935 $(contentContainer).removeClass('countdown--hidden').data('timerDisplayClasses', ''); 2936 $(selectorsActive).show(); 2937 } 2938 clearInterval(window.timerIDs[timerId]); 2939 updateCountdownTimer(contentContainer, 2940 // content container 2941 timerId, targetTime, 2942 // target date (date object) 2943 selectorsActive, 2944 // active countdown selectors 2945 selectorsFinished // finished countdown selectors 2946 ); 2947 2948 window.timerIDs[timerId] = setInterval(updateCountdownTimer, 2949 // callback function 2950 freq, 2951 // frequency 2952 contentContainer, 2953 // content container 2954 timerId, targetTime, 2955 // target date (date object) 2956 selectorsActive, 2957 // active countdown selectors 2958 selectorsFinished // finished countdown selectors 2959 ); 2960} 2961 2962/** 2963 * Initiate PDP countdown based on data attribute and pre-specified selectors 2964 */ 2965function initPDPCountdown() { 2966 var $countdownContainer = $(COUNTDOWN_CONTAINER); 2967 var endTime = $countdownContainer.data('endTime'); 2968 endTime = endTime === 'null' ? null : endTime; // Fix for null being sometimes passed to ISML as a string 2969 2970 if (endTime) {
2971 initCountdownTimer(COUNTDOWN_CONTAINER, COUNTDOWN_CLOCK, endTime, 1000, COUNTDOWN_ACTIVE, 2972 // Show 2973 COUNTDOWN_FINISH_MSG // Hide 2974 ); 2975 } else { 2976 $countdownContainer.addClass('countdown--hidden'); 2977 } 2978} 2979 2980/** 2981 * Update data attribute based on active promotion for selected variant 2982 * @param {Object} response pdict data object 2983 */ 2984function updateCountdownData(response) { 2985 if (response.data && response.data.product) { 2986 // Update endTime data attribute 2987 $(COUNTDOWN_CONTAINER).data('endTime', response.data.product.countdownEndDate); 2988 2989 // Update prompt and finish message 2990 if (response.data.product.countdownPrompt) { 2991 $(COUNTDOWN_PROMPT).text(response.data.product.countdownPrompt); 2992 } 2993 if (response.data.product.countdownFinishMsg) { 2994 $(COUNTDOWN_FINISH_MSG).text(response.data.product.countdownFinishMsg); 2995 } 2996 } 2997} 2998module.exports = { 2999 init: function init() { 3000 $(window).on('load.countdown', function () { 3001 initPDPCountdown(); 3002 }); 3003 $('body').on('product:afterAttributeSelect', function (e, response) { 3004 // Update counter end date / status 3005 updateCountdownData(response); 3006 initPDPCountdown(); 3007 }); 3008 } 3009}; 3010 3011/***/ }), 3012
3013/***/ "./.tmp/app_col_eu_core/js/components/countrySelectorKeyboardNav.js": 3014/*!**************************************************************************!*\ 3015 !*** ./.tmp/app_col_eu_core/js/components/countrySelectorKeyboardNav.js ***! 3016 \**************************************************************************/ 3017/*! no static exports found */ 3018/***/ (function(module, exports, __webpack_require__) { 3019 3020"use strict"; 3021 3022 3023var keyboardAccessibility = __webpack_require__(/*! ./keyboardAccessibility */ "./.tmp/app_col_eu_core/js/components/keyboardAccessibility.js"); 3024 3025/** 3026 * Keyboard navigation for region list 3027 */ 3028function regionEvents() { 3029 keyboardAccessibility('.js-action__showregion', { 3030 13: function _() { 3031 // enter 3032 var $currentExpandedMenu = $('button.js-action__showregion[aria-expanded*=true]'); 3033 if ($currentExpandedMenu.length) { 3034 $currentExpandedMenu.attr('aria-expanded', 'false'); 3035 } 3036 if (!$(this).is($currentExpandedMenu)) { 3037 $(this).attr('aria-expanded', 'true'); 3038 } 3039 }, 3040 40: function _() { 3041 // down 3042 var regionDataTarget = $(this).data('target'); 3043 var $countryLink = $('.countries').find(regionDataTarget + ' .country-link').first(); 3044 if ($countryLink.length) { 3045 $countryLink.trigger('focus'); 3046 } 3047 return true; 3048 } 3049 }, function () { 3050 return $(this); 3051 }); 3052} 3053 3054/** 3055 * Keyboard navigation for country list 3056 */ 3057function countryEvents() { 3058 keyboardAccessibility('.country-link', { 3059 9: function _($this, event) { 3060 // tab 3061 var id = $this.closest('.region-countries').attr('id'); 3062 var $currentRegion = $('[aria-controls*=' + id + ']').first(); 3063 var $regionToTarget = $currentRegion.parent().next().children('.js-action__showregion').first(); 3064 if (event.shiftKey) { 3065 $regionToTarget = $currentRegion.parent().prev().children('.js-action__showregion').first(); 3066 } 3067 if ($regionToTarget.length) { 3068 $regionToTarget.trigger('focus'); 3069 } 3070 return true; 3071 }, 3072 38: function _() { 3073 // up 3074 var $prevCountryLink = $(this).prev('a:visible'); 3075 if ($prevCountryLink.length) { 3076 $prevCountryLink.trigger('focus'); 3077 } else { 3078 var $prevColumnCountryLink = $(this).parent().prev().find('a:visible').last(); 3079 if ($prevColumnCountryLink.length) { 3080 $prevColumnCountryLink.trigger('focus'); 3081 } else { 3082 var id = $(this).closest('.region-countries').attr('id'); 3083 var $prevRegion = $('[aria-controls*=' + id + ']').first(); 3084 if ($prevRegion.length) { 3085 $prevRegion.trigger('focus'); 3086 } 3087 } 3088 } 3089 return true; 3090 }, 3091 40: function _() { 3092 // down 3093 var $nextCountryLink = $(this).next('a:visible'); 3094 if ($nextCountryLink.length) { 3095 $nextCountryLink.trigger('focus'); 3096 } else { 3097 var $nextColumnCountryLink = $(this).parent().next().find('a:visible').first(); 3098 if ($nextColumnCountryLink.length) { 3099 $nextColumnCountryLink.trigger('focus'); 3100 } 3101 } 3102 return true; 3103 }, 3104 37: function _() { 3105 // left 3106 var $prevColumnCountryLink = $(this).parent().prev().find('a:visible').first(); 3107 if ($prevColumnCountryLink.length) { 3108 $prevColumnCountryLink.trigger('focus'); 3109 } 3110 return true; 3111 }, 3112 39: function _() { 3113 // right 3114 var $nextColumnCountryLink = $(this).parent().next().find('a:visible').first(); 3115 if ($nextColumnCountryLink.length) { 3116 $nextColumnCountryLink.trigger('focus'); 3117 } 3118 return true; 3119 } 3120 }, function () { 3121 return $(this); 3122 }); 3123} 3124 3125/** 3126 * Initialize keyboard event listeners 3127 */ 3128function init() { 3129 module.exports.regionEvents(); 3130 module.exports.countryEvents(); 3131} 3132module.exports = { 3133 init: init, 3134 regionEvents: regionEvents, 3135 countryEvents: countryEvents 3136}; 3137 3138/***/ }), 3139
3140/***/ "./.tmp/app_col_eu_core/js/components/countrySelectorOverlay.js": 3141/*!**********************************************************************!*\ 3142 !*** ./.tmp/app_col_eu_core/js/components/countrySelectorOverlay.js ***! 3143 \**********************************************************************/ 3144/*! no static exports found */ 3145/***/ (function(module, exports, __webpack_require__) { 3146 3147"use strict"; 3148/* WEBPACK VAR INJECTION */(function(global) {/* global dataLayer, homeLanguage */ 3149 3150 3151var Cookies = global.Cookies = __webpack_require__(/*! js-cookie/src/js.cookie */ "./node_modules/js-cookie/src/js.cookie.js"); // for manipulating / retrieving cookies 3152 3153/** 3154 * Country Selector 3155 * This module can be used to facilitate the country selection dialog 3156 * if the site being browsed is for a different country than the users 3157 * GeoIP location 3158 */ 3159 3160var cookieName = 'countrySelectionCookie'; 3161 3162/** 3163 * Get Home Country Code 3164 * 3165 * @returns {string} Home Country Code 3166 */ 3167function getVisitingCountry() { 3168 return $('.country-language-selection-overlay').attr('data-country-selector-visiting'); 3169} 3170 3171/** 3172 * Hide Overlay 3173 */ 3174function hideOverlay() { 3175 $('.country-selection-background').hide(); 3176 $('.country-language-selection-overlay').css({ 3177 display: 'none' 3178 }); 3179 $('.modal.country-selection-modal').modal('hide').remove(); 3180} 3181 3182/** 3183 * Close the Overlay and Cookie the user for the home country 3184 * 3185 * @param {event} event DOM Event 3186 */ 3187function closeOverlay(event) { 3188 event.preventDefault(); 3189 3190 /** 3191 * Get the country code for the home country 3192 */ 3193 var visitingCountryCountryCode = getVisitingCountry(); 3194 Cookies.set(cookieName, visitingCountryCountryCode, { 3195 expires: 30 3196 }); 3197 hideOverlay(); 3198} 3199 3200/** 3201 * Go to Country 3202 * Cookie the user and follow the link 3203 * @param {string} selectedElement Optional parameter, eg. URL string 3204 */ 3205function goToCountry($countryLink) { 3206 Cookies.set(cookieName, $countryLink.data('country-code'), { 3207 expires: 30 3208 }); 3209 if ($countryLink.attr('href')) { 3210 window.location = $countryLink.attr('href'); 3211 } 3212} 3213 3214/** 3215 * Go to Home Country 3216 * Cookie the user and follow the link 3217 */ 3218function goToVisitingCountry() { 3219 Cookies.set(cookieName, getVisitingCountry(), { 3220 expires: 30 3221 }); 3222} 3223 3224/** 3225 * Show Overlay 3226 */ 3227function showOverlay() { 3228 var $countryOverlay = $('.country-language-selection-overlay'); 3229 if ($countryOverlay.length) { 3230 // If overlay content already exists in DOM, use it directly 3231 $.modal({ 3232 title: '', 3233 content: $countryOverlay[0].outerHTML, 3234 customClasses: 'country-selection-modal', 3235 modalSizeClass: 'modal-lg', 3236 backdrop: false 3237 }).one('shown.bs.modal', function () { 3238 $('body').removeClass('modal-open').css('padding-right', ''); 3239 3240 // Bind country link events after modal is shown 3241 $('.modal.country-selection-modal .js-action__gotocountry').each(function () { 3242 var $thisLink = $(this); 3243 var visitingCountryLang = $thisLink.attr('data-visiting-language'); 3244 var thisLinkCountryCode = $thisLink.attr('data-country-code'); 3245 if ($thisLink[0].hostname === window.location.hostname && visitingCountryLang === homeLanguage && thisLinkCountryCode === getVisitingCountry()) { 3246 $thisLink.on('click', closeOverlay); 3247 } else { 3248 $thisLink.on('click', function (event) { 3249 event.preventDefault(); 3250 if ($thisLink[0].hostname === window.location.hostname && visitingCountryLang !== homeLanguage) { 3251 $thisLink.attr('href', $thisLink.attr('href') + window.location.search); 3252 } 3253 goToCountry($thisLink); 3254 }); 3255 } 3256 }); 3257 var viewAllLink = $('.country-language-selection-overlay').find('.js-action__viewall'); // Bind using direct selector instead of $countryOverlay 3258 viewAllLink.on('click', goToVisitingCountry); 3259 3260 // Bind close events 3261 $('.modal.country-selection-modal').on('hidden.bs.modal', closeOverlay); 3262 $('.modal.country-selection-modal, .country-selection-background').on('click', closeOverlay); 3263 $('.modal.country-selection-modal .country-language-selection-overlay').on('click', function (e) { 3264 e.stopPropagation(); 3265 }); 3266 }); 3267 } 3268 3269 // Show the country overlay content 3270 $('.modal.country-selection-modal .country-language-selection-overlay').css({ 3271 display: 'block' 3272 }); 3273 3274 /**
3275 * Show the Background 3276 */ 3277 $('.country-selection-background').show(); 3278} 3279 3280/** 3281 * Has Popup Modal URL 3282 * grabs a tag by class, then on click adds href of the country's url 3283 * and dynamically renders title, content and buttons 3284 */ 3285function getPopUpModalURL() { 3286 $('.js-action__showpopupmodaltoexternalsite').on('click', function (e) { 3287 e.preventDefault(); 3288 var externalUrl = $(this).data('url'); 3289 $.modal({ 3290 title: window.resources.leavingSiteModal.title, 3291 content: "<p>".concat(window.resources.leavingSiteModal.body, "</p><p>").concat(window.resources.leavingSiteModal.proceed, "</p>"), 3292 modalSizeClass: 'modal-md', 3293 buttons: ["<a href=\"".concat(externalUrl, "\" class=\"btn btn-primary btn-country__link\" role=\"button\" target=\"_blank\">").concat(window.resources.leavingSiteModal.buttonOK, "</a>"), "<button type=\"button\" class=\"btn btn-primary d-block\" data-dismiss=\"modal\">".concat(window.resources.leavingSiteModal.buttonCancel, "</button>")] 3294 }); 3295 }); 3296} 3297module.exports = function () { 3298 getPopUpModalURL(); 3299 var countrySelectorOverlay = $('.country-language-selection-overlay'); 3300 3301 /** 3302 * Checks 3303 * ========================= 3304 */ 3305 3306 /** 3307 * If the overlay doesn't exist, return because there is nothing for us to do 3308 */ 3309 if (countrySelectorOverlay.length <= 0) { 3310 return; 3311 } 3312 3313 /** 3314 * Check for Country Selection Cookie 3315 * If cookie exists and matches the visiting country, return 3316 */ 3317 if (Cookies.get(cookieName) !== undefined) { 3318 var cookieCountryCode = Cookies.get(cookieName); 3319 if (cookieCountryCode === getVisitingCountry()) { 3320 return; 3321 } 3322 } 3323 3324 /** 3325 * Show Overlay 3326 * ========================= 3327 */ 3328 showOverlay(); 3329}; 3330/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) 3331 3332/***/ }), 3333
3334/***/ "./.tmp/app_col_eu_core/js/components/custom/spinnerCustom.js": 3335/*!********************************************************************!*\ 3336 !*** ./.tmp/app_col_eu_core/js/components/custom/spinnerCustom.js ***! 3337 \********************************************************************/ 3338/*! no static exports found */ 3339/***/ (function(module, exports, __webpack_require__) { 3340 3341"use strict"; 3342 3343 3344/** 3345 * Show a spinner inside a given element 3346 * @param {element} $target - Element to block by the veil and spinner. 3347 * Pass body to block the whole page. 3348 */ 3349function addSpinner($target) { 3350 var $veil = $('<div class="veil"><div class="underlay"></div></div>'); 3351 var ua = window.navigator.userAgent; 3352 if (ua.indexOf('MSIE ') > -1 || ua.indexOf('Trident/') > -1 || ua.indexOf('Edge/') > -1) { 3353 $veil.append('<div class="spinner"><div class="dot1"></div><div class="dot2"></div></div>'); 3354 } else { 3355 $veil.append('<div class="loader-animation"><svg><g class="columbia-group__one"><rect x="0" y="0" rx="6" ry="6" width="18" height="40" /><rect x="22" y="0" rx="6" ry="6" width="18" height="40" /></g><g class="columbia-group__two"><rect x="45" y="0" rx="6" ry="6" width="40" height="18" /><rect x="45" y="22" rx="6" ry="6" width="40" height="18" /></g><g class="columbia-group__four"><rect x="0" y="45" rx="6" ry="6" width="40" height="18" /><rect x="0" y="67" rx="6" ry="6" width="40" height="18" /></g><g class="columbia-group__three"><rect x="45" y="45" rx="6" ry="6" width="18" height="40" /><rect x="67" y="45" rx="6" ry="6" width="18" height="40" /></g></svg></div>'); 3356 } 3357 if ($target.get(0).tagName === 'IMG') { 3358 $target.after($veil); 3359 $veil.css({ 3360 width: $target.width(), 3361 height: $target.height() 3362 }); 3363 if ($target.parent().css('position') === 'static') { 3364 $target.parent().css('position', 'relative'); 3365 } 3366 } else { 3367 $target.append($veil); 3368 if ($target.css('position') === 'static') { 3369 $target.parent().css('position', 'relative'); 3370 $target.parent().addClass('veiled'); 3371 } 3372 if ($target.get(0).tagName === 'BODY') { 3373 $veil.css('position', 'fixed'); 3374 $veil.find('.spinner').css('position', 'fixed'); 3375 } 3376 } 3377 $veil.click(function (e) { 3378 e.stopPropagation(); 3379 }); 3380} 3381 3382/** 3383 * Remove existing spinner 3384 * @param {element} $veil - jQuery pointer to the veil element 3385 */ 3386function removeSpinner($veil) { 3387 if ($veil.parent().hasClass('veiled')) { 3388 $veil.parent().css('position', ''); 3389 $veil.parent().removeClass('veiled'); 3390 } 3391 $veil.off('click'); 3392 $veil.remove(); 3393} 3394 3395// element level spinner: 3396$.fn.spinner = function () { 3397 var $element = $(this); 3398 var Fn = function Fn() { 3399 this.start = function () { 3400 if ($element.length) { 3401 addSpinner($element); 3402 } 3403 }; 3404 this.stop = function () { 3405 if ($element.length) { 3406 var $veil = $('.veil'); 3407 removeSpinner($veil); 3408 } 3409 }; 3410 }; 3411 return new Fn(); 3412}; 3413 3414// page-level spinner: 3415$.spinner = function () { 3416 var Fn = function Fn() { 3417 this.start = function () { 3418 addSpinner($('body')); 3419 }; 3420 this.stop = function () { 3421 removeSpinner($('.veil')); 3422 }; 3423 }; 3424 return new Fn(); 3425}; 3426 3427/***/ }), 3428
3429/***/ "./.tmp/app_col_eu_core/js/components/footer.js": 3430/*!******************************************************!*\ 3431 !*** ./.tmp/app_col_eu_core/js/components/footer.js ***! 3432 \******************************************************/ 3433/*! no static exports found */ 3434/***/ (function(module, exports, __webpack_require__) { 3435 3436"use strict"; 3437 3438 3439var formHelpers = __webpack_require__(/*! ../checkout/formErrors */ "./.tmp/app_col_eu_core/js/checkout/formErrors.js"); 3440 3441/** 3442 * Auto-update copyright year 3443 */ 3444var updateNowYear = function updateNowYear() { 3445 var jsNowYear = document.querySelector('.js-now-year'); 3446 if (jsNowYear) { 3447 var now = new Date(); 3448 jsNowYear.innerText = now.getFullYear(); 3449 } 3450}; 3451 3452/** 3453 * Format Zip/Postal code 3454 */ 3455var formatZipCode = function formatZipCode() { 3456 $('.js-footer-email-zip').on('keyup blur keypress change', function () { 3457 var $targetInput = $(this); 3458 var enteredValue = $targetInput.val(); 3459 var valueToDisplay = enteredValue; 3460 if (enteredValue) { 3461 valueToDisplay = enteredValue.toUpperCase(); 3462 } 3463 var isPostalCodeCA = $targetInput.is('[name$="_emailSignup_postalCodes_CA"]'); 3464 if (isPostalCodeCA && enteredValue.length === 6 && enteredValue.indexOf(' ') === -1) { 3465 var tp = enteredValue.split(''); 3466 tp.splice(3, 0, ' '); 3467 valueToDisplay = tp.join(''); 3468 } 3469 var isPostalCodeHK = $targetInput.is('[name$="_emailSignup_postalCodes_HK"]'); 3470 if (isPostalCodeHK) { 3471 if (enteredValue.trim() === '-') { 3472 valueToDisplay = '00000'; 3473 } 3474 } 3475 $targetInput.val(valueToDisplay); 3476 }); 3477}; 3478module.exports = function () { 3479 $('.foot-email form.email-signup__step1').submit(function (e) { 3480 e.preventDefault(); 3481 var $form = $(this); 3482 var $parent = $form.parent(); 3483 var url = $form.attr('action'); 3484 $.spinner().start(); 3485 $('.js-btn-email').prop('disabled', true); 3486 $.ajax({ 3487 url: url, 3488 type: 'post', 3489 dataType: 'json', 3490 data: $form.serialize(), 3491 success: function success(data) { 3492 var $emailInvalid = $parent.find('.js-footer-email-invalid'); 3493 var $step2 = $parent.find('div.email-signup__step2'); 3494 var $step3 = $parent.find('.email-signup__step3'); 3495 if (data.success) { 3496 if ($form.closest('.email-signup-modal').hasClass('show')) { 3497 $form.closest('.email-signup-modal').modal('hide'); 3498 } 3499 $emailInvalid.text('').hide(); 3500 $parent.find('.email-address-value').attr('value', data.email); 3501 if (data.allFieldsProvided) { 3502 $('.js-footer-zipcode').text(data.postalCode).show(); 3503 $('.js-footer-gender').text(data.gender).show(); 3504 $step3.drawer({ 3505 returnFocusTo: '.js-footer-email' 3506 }); 3507 } else if ($step2.hasClass('footer-prana-email')) { 3508 // show alert for prana immediately after successful submission 3509 $.alert({ 3510 content: "<div><h3>".concat(window.resources.emailSignupFormAlert.title, "</h3><br><span>").concat(window.resources.emailSignupFormAlert.content, "</span></div>"), 3511 placement: 'toaster', 3512 theme: 'success', 3513 dismissible: true, 3514 id: 'footersignup-banner-message' 3515 }); 3516 } else { 3517 $step2.drawer({ 3518 returnFocusTo: '.js-footer-email' 3519 }); 3520 } 3521 if ('dtmLayer' in data && 'digitalData' in window) { 3522 if (data.dtmLayer.page && data.dtmLayer.page.form && window.digitalData.page && window.digitalData.page.form) { 3523 window.digitalData.page.form.registrationType = data.dtmLayer.page.form.registrationType; 3524 } 3525 if (data.dtmLayer.user) { 3526 window.digitalData.user = data.dtmLayer.user; 3527 } 3528 } 3529 $('html, body').animate({ 3530 scrollTop: $form.offset().top - 100 3531 }, 1000); 3532 formatZipCode(); 3533 } else if (data.msg) { 3534 $parent.find('.email-signup__step2__success').collapse('hide'); 3535 $step2.collapse('hide'); 3536 $step3.collapse('hide'); 3537 $emailInvalid.text(data.msg).show(); 3538 } 3539 }, 3540 complete: function complete() { 3541 $('.js-btn-email').prop('disabled', false); 3542 $.spinner().stop(); 3543 } 3544 }); 3545 }); 3546 $('.foot-email form.email-signup__step2').on('change', function () { 3547 var $zipField = $(this).find('.js-footer-email-zip'); 3548 var $genderField = $(this).find('.custom-select'); 3549 var $signUpButton = $(this).find('.js-footer-email-submit'); 3550 // Handles duplicate sign up forms introduced by content assets 3551 if ($zipField.length && $zipField.val() === $zipField.prop('defaultValue') && $genderField.prop('selectedIndex' === 0)) { 3552 $signUpButton.prop('disabled', true); 3553 } else { 3554 $signUpButton.prop('disabled', false); 3555 } 3556 }); 3557 $('.foot-email form.email-signup__step2').submit(function (e) { 3558 e.preventDefault(); 3559 var $form = $(this); 3560 var formIndex = $('.foot-email form.email-signup__step2').index(this); 3561 var url = $form.attr('action'); 3562 $('.email-signup__step2 .js-footer-email-submit').eq(formIndex).prop('disabled', true); 3563 $.spinner().start(); 3564 $.ajax({ 3565 url: url, 3566 type: 'post', 3567 dataType: 'json', 3568 data: $form.serialize(), 3569 success: function success(data) { 3570 if (data.success) {
3571 // Properly close the drawer that contains the submitted form 3572 var $emailSignUpDrawer = $form.closest('.email-signup__step2.emailFooterSignup.drawer'); 3573 var $emailSignUpDrawerElement = $emailSignUpDrawer.length && $emailSignUpDrawer.data('drawer'); 3574 if ($emailSignUpDrawerElement) { 3575 $emailSignUpDrawerElement.close(); 3576 } 3577 if (data.successMessage) { 3578 $.alert({ 3579 content: data.successMessage, 3580 placement: 'toaster', 3581 theme: 'success', 3582 dismissible: true, 3583 id: 'footersignup-banner-message' 3584 }); 3585 } else { 3586 $('.email-signup__step2__success').eq(formIndex).collapse('show'); 3587 } 3588 if ('dtmLayer' in data && 'digitalData' in window) { 3589 if (data.dtmLayer.page && data.dtmLayer.page.form && window.digitalData.page && window.digitalData.page.form) { 3590 window.digitalData.page.form.registrationType = data.dtmLayer.page.form.registrationType; 3591 } 3592 if (data.dtmLayer.user) { 3593 window.digitalData.user = data.dtmLayer.user; 3594 } 3595 } 3596 } else { 3597 formHelpers.loadFormErrors('.email-signup__step2', data.fields, formIndex); 3598 } 3599 }, 3600 complete: function complete() { 3601 $('.email-signup__step2 .js-footer-email-submit').eq(formIndex).prop('disabled', false); 3602 $.spinner().stop(); 3603 } 3604 }); 3605 }); 3606 $('#hpEmailSignUp').on('focus', function () { 3607 $('.email-signup__step2__success').collapse('hide'); 3608 $('.invalid-feedback').hide(); 3609 }); 3610 3611 /** 3612 * Pre-populates the footer email box if the user is logged in and not already subscribed 3613 */ 3614 $(function () { 3615 var currentUser = window.digitalData && window.digitalData.user; 3616 if (currentUser && currentUser.emailId && currentUser.loggedIn && !currentUser.newsletterOptedIn) { 3617 $('.js-footer-email').val(currentUser.emailId); 3618 } 3619 }); 3620 3621 /** 3622 * Submits the loyalty registration form. 3623 * On successful registration, redirects to location defined in loyaltyRedirectURL. 3624 * If loyaltyRedirectURL is not present in response, refresh the page 3625 */ 3626 $('form.loyalty-registration').submit(function (e) { 3627 e.preventDefault(); 3628 var $form = $(this); 3629 var url = $form.attr('action'); 3630 $.ajax({ 3631 url: url, 3632 type: 'POST', 3633 dataType: 'json', 3634 data: $form.serialize(), 3635 success: function success(data) { 3636 if (data.success) { 3637 var location = typeof data.loyaltyRedirectURL !== 'undefined' ? data.loyaltyRedirectURL : window.location.href; 3638 window.location.href = location; 3639 } else { 3640 formHelpers.loadFormErrors('.loyalty-registration', data.fields); 3641 } 3642 }, 3643 error: function error(data) { 3644 formHelpers.loadFormErrors('.loyalty-registration', data.fields); 3645 } 3646 }); 3647 }); 3648 $('.rewards__link').on('click', function () { 3649 var $rewardsLinks = $(this); 3650 var $header = $('header'); 3651 $rewardsLinks.scrollTo($header.outerHeight() + 16 /* add some space between the header and link */); 3652 }); 3653 3654 /** 3655 * The show event first as soon as a request is made to display the pane. 3656 * As such, using the event so lazy load can happen earlier (faster experience). 3657 */ 3658 $('.js-rewards-signup-panel').on('show.bs.collapse.lazyload', function () { 3659 var $panel = $(this); 3660 if ($panel.data('is-loading')) { 3661 return; 3662 } 3663 3664 /** 3665 * Mark as loading before the call returns so rapid clicks by the user 3666 * doesn't load the form multiple times. 3667 */ 3668 $panel.data('is-loading', true); 3669 var $formContainer = $panel.find('.js-rewards-form-container'); 3670 var lazyLoadUrl = $panel.data('lazy-load-url'); 3671 var loadingSpinner = $formContainer.spinner(); 3672 loadingSpinner.start(); 3673 $.ajax({ 3674 url: lazyLoadUrl, 3675 method: 'GET', 3676 success: function success(responseHtml) { 3677 $formContainer.append(responseHtml); 3678 3679 // eslint-disable-next-line no-undef 3680 registerButtonAsRecaptchaTrigger($formContainer.find('.btn-recaptcha')); 3681 $formContainer.find('form').trigger('form:created'); 3682 $panel.off('show.bs.collapse.lazyload'); 3683 }, 3684 complete: function complete() { 3685 $panel.data('is-loading', false); 3686 loadingSpinner.stop(); 3687 } 3688 }); 3689 }); 3690 updateNowYear(); 3691}; 3692 3693/***/ }), 3694
3695/***/ "./.tmp/app_col_eu_core/js/components/headerKeyboardNav.js": 3696/*!*****************************************************************!*\ 3697 !*** ./.tmp/app_col_eu_core/js/components/headerKeyboardNav.js ***! 3698 \*****************************************************************/ 3699/*! no static exports found */ 3700/***/ (function(module, exports, __webpack_require__) { 3701 3702"use strict"; 3703 3704 3705var base = __webpack_require__(/*! brand_core/components/headerKeyboardNav */ "./cartridges/app_brand_core/cartridge/client/default/js/components/headerKeyboardNav.js"); 3706var keyboardAccessibility = __webpack_require__(/*! ./keyboardAccessibility */ "./.tmp/app_col_eu_core/js/components/keyboardAccessibility.js"); 3707 3708/** 3709 * keyboard events for secondary anchors inside open flyout menu 3710 */ 3711base.secondaryNav = function () { 3712 keyboardAccessibility('.sitenav-secondary__li', { 3713 13: function _() { 3714 // enter 3715 var $this = $(this); 3716 base.navigateLink(this); 3717 if ($this.children('ul').length) { 3718 // if there is a tertiary navigation 3719 $this.find('li:visible').first().trigger('focus'); 3720 } 3721 return true; 3722 }, 3723 37: function _() { 3724 // left 3725 $(this).closest('.sitenav-secondary__ul').prev('.sitenav-secondary__ul').find('li:visible').first().trigger('focus'); 3726 }, 3727 38: function _(parentLi) { 3728 // up 3729 var $prevTertiaryitems = $(this).prev('li:visible').find('li:visible'); 3730 if ($prevTertiaryitems.length) { 3731 $prevTertiaryitems.last().trigger('focus'); 3732 } else if ($(this).prevAll('li:visible').length) { 3733 base.previousMenuItem(this); 3734 } else { 3735 base.previousMenuLevel(parentLi); 3736 } 3737 return true; 3738 }, 3739 39: function _() { 3740 // right 3741 $(this).closest('.sitenav-secondary__ul').next('.sitenav-secondary__ul').find('li:visible').first().trigger('focus'); 3742 }, 3743 40: function _() { 3744 // down 3745 var $currentFocusedEl = $(document.activeElement); 3746 var $nextTertiaryItems; 3747 if ($currentFocusedEl.hasClass('sitenav-secondary__li')) { 3748 $nextTertiaryItems = $(this).find('.sitenav-secondary__a:visible'); 3749 } else if ($currentFocusedEl.hasClass('sitenav-secondary__a')) { 3750 $nextTertiaryItems = $(this).find('.sitenav-tertiary__a:visible'); 3751 } else { 3752 $nextTertiaryItems = $(this).next('a:visible'); 3753 } 3754 if ($nextTertiaryItems.length) { 3755 $nextTertiaryItems.first().trigger('focus'); 3756 } else if ($(this).nextAll('li:visible').length) { 3757 base.nextMenuItem(this); 3758 } 3759 return true; 3760 } 3761 }, function () { 3762 return $(this).closest('.sitenav-primary__li'); 3763 }); 3764}; 3765 3766/** 3767 * keyboard events for tertiary anchors inside open flyout menu 3768 */ 3769base.tertiaryNav = function () { 3770 keyboardAccessibility('.sitenav-tertiary__a', { 3771 13: function _() { 3772 // enter 3773 base.navigateLink(this); 3774 return true; 3775 }, 3776 38: function _() { 3777 // up 3778 var $prevItem = $(this).prev('a:visible'); 3779 if ($prevItem.length) { 3780 $prevItem.trigger('focus'); 3781 } else { 3782 $(this).closest('.sitenav-secondary__li').find('.sitenav-secondary__a').trigger('focus'); 3783 } 3784 return true; 3785 }, 3786 40: function _() { 3787 // down 3788 var $nextItem = $(this).next('a:visible'); 3789 if ($nextItem.length) { 3790 $nextItem.trigger('focus'); 3791 } else { 3792 var $nextSecondaryInColumn = $(this).closest('.sitenav-secondary__li').next('li:visible'); 3793 if ($nextSecondaryInColumn.length) { 3794 $nextSecondaryInColumn.find('.sitenav-secondary__a').first().trigger('focus'); 3795 } 3796 } 3797 return true; 3798 } 3799 }, function () { 3800 return $(this).closest('.sitenav-secondary__li'); 3801 }); 3802}; 3803module.exports = base; 3804 3805/***/ }), 3806
3807/***/ "./.tmp/app_col_eu_core/js/components/headerOffset.js": 3808/*!************************************************************!*\ 3809 !*** ./.tmp/app_col_eu_core/js/components/headerOffset.js ***! 3810 \************************************************************/ 3811/*! no static exports found */ 3812/***/ (function(module, exports) { 3813 3814module.exports = function () { 3815 var scrollToElement = function scrollToElement(target, offset, duration) { 3816 if (target.length > 1) { 3817 var $target = $(target); 3818 if ($target.length > 0 && $target.is(':visible')) { 3819 // if target is hidden, no way to get the position of the element 3820 var position = $target.offset(); 3821 var off = typeof offset !== 'undefined' ? offset : 0; 3822 var dur = typeof duration !== 'undefined' ? duration : 1000; 3823 $('body, html').stop().animate({ 3824 scrollTop: position.top - off 3825 }, dur); 3826 } 3827 } 3828 }; 3829 var headerOffset = $('.js-site-header').height(); 3830 $(function () { 3831 var hash = location.hash; 3832 var badChars = new RegExp('[?=&]'); 3833 if (!badChars.test(hash) && $(hash).length) { 3834 // ignore hashes that are misused. 3835 // if it's an accordion, open it 3836 $(hash).show(); 3837 // scroll to the element 3838 scrollToElement(hash, headerOffset, 1000); 3839 } 3840 }); 3841}; 3842 3843/***/ }), 3844
3845/***/ "./.tmp/app_col_eu_core/js/components/historyHooks.js": 3846/*!************************************************************!*\ 3847 !*** ./.tmp/app_col_eu_core/js/components/historyHooks.js ***! 3848 \************************************************************/ 3849/*! no static exports found */ 3850/***/ (function(module, exports, __webpack_require__) { 3851 3852"use strict"; 3853 3854 3855/** 3856 * Adds hooks for intercepting calls to window.history functions. 3857 */ 3858function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 3859module.exports = function () { 3860 var originalPushState = window.history.pushState; 3861 var originalReplaceState = window.history.replaceState; 3862 3863 /** 3864 * Amends the data that is stored as part of the browser history 3865 * @param {Object} data - the original state provided by the caller, if applicable 3866 * @param {string} url - change to page URL, if applicable 3867 * @returns {Object} - amended state data 3868 */ 3869 function amendStateData(data, url) { 3870 var pageVisitReferrer = __webpack_require__(/*! ./../dataLayer/pageVisitReferrer */ "./.tmp/app_col_eu_core/js/dataLayer/pageVisitReferrer.js"); 3871 var amendedData = data; 3872 3873 /* 3874 * Some page referers are only single-use in terms of analytics (the data layer). 3875 * When the client alters the URL by changing browser history state, the client still holds reference to the original referer. 3876 * As a result, the client essentially reuses a single-use referer without the following intervention. 3877 */ 3878 if (url && 3879 // only run this code when the page URL is being changed 3880 document.referrer && window.resources && window.resources.dataLayer && window.resources.dataLayer.singleReferralDomains && window.digitalData && window.digitalData.pageVisit) { 3881 var referrerIsSingleUse = pageVisitReferrer.isSingleUseReferrer(); 3882 if (referrerIsSingleUse) { 3883 // Referrer is no longer relevant on the current page due to the URL change 3884 window.digitalData.pageVisit.referrer = window.location.origin; 3885 3886 /** 3887 * Amend data related to the URL if its an object or no existing data 3888 * so mainHead.js can blank the referrer on page load. 3889 */ 3890 if (!amendedData || _typeof(amendedData) === 'object') { 3891 amendedData = amendedData || {}; 3892 amendedData.digitalData = amendedData.digitalData || {}; 3893 amendedData.digitalData.blankVisitReferrerOnLoad = true; 3894 } 3895 } 3896 } 3897 return amendedData; 3898 } 3899 window.history.pushState = function (data, title, url) { 3900 var amendedData = amendStateData(data, url); 3901 originalPushState.call(window.history, amendedData, title, url); 3902 }; 3903 window.history.replaceState = function (data, title, url) { 3904 var amendedData = amendStateData(data, url); 3905 originalReplaceState.call(window.history, amendedData, title, url); 3906 }; 3907}; 3908 3909/***/ }), 3910
3911/***/ "./.tmp/app_col_eu_core/js/components/keyboardAccessibility.js": 3912/*!*********************************************************************!*\ 3913 !*** ./.tmp/app_col_eu_core/js/components/keyboardAccessibility.js ***! 3914 \*********************************************************************/ 3915/*! no static exports found */ 3916/***/ (function(module, exports, __webpack_require__) { 3917 3918"use strict"; 3919 3920 3921var _ = __webpack_require__(/*! underscore */ "./node_modules/underscore/modules/index-all.js"); 3922 3923/** 3924 * Usage: 3925 * 3926 * var keyboardAccessibility = require('./keyboardAccessibility'); 3927 * 3928 * keyboardAccessibility('.main-menu .sitenav-primary-a', // <-- Selector for keydown event 3929 * { 3930 * // Keycode and function handler 3931 * 40: function (menuItem) { // down 3932 * if (menuItem.hasClass('nav-item')) { // top level 3933 * $('.navbar-nav .show').removeClass('show') 3934 * .children('.dropdown-menu') 3935 * .removeClass('show'); 3936 * menuItem.addClass('show').children('.dropdown-menu').addClass('show'); 3937 * $(this).attr('aria-expanded', 'true'); 3938 * menuItem.find('ul > li > a') 3939 * .first() 3940 * .focus(); 3941 * return true; // <-- Prevent default 3942 * } else { 3943 * menuItem.removeClass('show').children('.dropdown-menu').removeClass('show'); 3944 * $(this).attr('aria-expanded', 'false'); 3945 * menuItem.next().children().first().focus(); 3946 * return true; // <-- Prevent default 3947 * } 3948 * return false; // <-- Allow default 3949 * }, 3950 * 39: function (menuItem) { // right 3951 * // Another function 3952 * } 3953 * }, 3954 * function () { 3955 * // Prefunction call which passes a jQuery object to the above function. 3956 * return $(this).parent(); 3957 * } 3958 * ); 3959 */ 3960 3961var buildFunction = function buildFunction(keyFunctions, preFunction, event, scope) { 3962 var key = event.which; 3963 var returnedScope = preFunction.call(scope, event); 3964 if (keyFunctions[key]) { 3965 var preventEvent = keyFunctions[key].call(scope, returnedScope, event); 3966 if (preventEvent) { 3967 // Generally not needed to block keyboard event unless you want 3968 // to prevent browser behavior. Tab key is a good example. 3969 // Or blocking up/down to prevent window scrolling. 3970 event.stopPropagation(); 3971 event.preventDefault(); 3972 } 3973 } 3974}; 3975module.exports = function (selector, keyFunctions, preFunction, delegatedSelector) { 3976 if (delegatedSelector) { 3977 $(delegatedSelector).on('keydown', selector, function (e) { 3978 _.throttle(buildFunction(keyFunctions, preFunction, e, this), 100); 3979 }); 3980 } else { 3981 $(selector).on('keydown', function (e) { 3982 _.throttle(buildFunction(keyFunctions, preFunction, e, this), 100); 3983 }); 3984 } 3985}; 3986 3987/***/ }), 3988
3989/***/ "./.tmp/app_col_eu_core/js/components/languageSelectorOverlay.js": 3990/*!***********************************************************************!*\ 3991 !*** ./.tmp/app_col_eu_core/js/components/languageSelectorOverlay.js ***! 3992 \***********************************************************************/ 3993/*! no static exports found */ 3994/***/ (function(module, exports, __webpack_require__) { 3995 3996"use strict"; 3997/* WEBPACK VAR INJECTION */(function(global) { 3998 3999var Cookies = global.Cookies = __webpack_require__(/*! js-cookie/src/js.cookie */ "./node_modules/js-cookie/src/js.cookie.js"); // for manipulating / retrieving cookies 4000 4001var cookieLocaleName = 'preferredLanguageCookie'; 4002 4003/** 4004 * Lanugage Selector 4005 * This module can be used to facilitate the language selection dialog 4006 * if the site being browsed is for a different country than the users 4007 * GeoIP location 4008 */ 4009 4010/** 4011 * Show Overlay 4012 * 4013 * @param {Event} event JS Event for Link clicked 4014 */ 4015function showOverlay(event) { 4016 var numLocales = parseInt($(this).attr('data-num-locales'), 10); 4017 if (numLocales <= 1) { 4018 return; 4019 } 4020 event.preventDefault(); 4021 $('.language-selection-background').show(); 4022 var countrySelectorOverlay = $('.language-selection-overlay'); 4023 countrySelectorOverlay.css({ 4024 visibility: 'visible', 4025 bottom: (parseInt(countrySelectorOverlay.height(), 10) + 50) * -1 4026 }); 4027 countrySelectorOverlay.animate({ 4028 bottom: 0 4029 }, { 4030 duration: 1000 4031 }); 4032} 4033 4034/** 4035 * Hide Overlay 4036 */ 4037function hideOverlay() { 4038 $('.language-selection-background').hide(); 4039 $('.language-selection-overlay').css({ 4040 visibility: 'hidden' 4041 }); 4042} 4043 4044/** 4045 * Close the Overlay and Cookie the user for the home country 4046 * 4047 * @param {event} event DOM Event 4048 */ 4049function closeOverlay(event) { 4050 event.preventDefault(); 4051 hideOverlay(); 4052} 4053module.exports = function () { 4054 /** 4055 * When user change the country language from country selector then set cookie to prioritize clicked locale over browser's preferred language. 4056 */ 4057 $('.language-selection-overlay .js-action__gotocountry, #region-europe-countries-mobile .js-action__gotocountry, #region-europe-countries-desktop .js-action__gotocountry').on('click', function () { 4058 Cookies.set(cookieLocaleName, true); 4059 }); 4060 var languageSelectorOverlay = $('.language-selection-overlay'); 4061 4062 /** 4063 * Get cookie value 4064 */ 4065 var isClickCountryLink = Cookies.get(cookieLocaleName); 4066 4067 /** 4068 * Set cookie value is false 4069 */ 4070 if (typeof isClickCountryLink !== 'undefined') { 4071 Cookies.set(cookieLocaleName, false); 4072 } 4073 4074 /** 4075 * If the overlay doesn't exist, return because there is nothing for us to do 4076 */ 4077 if (languageSelectorOverlay.length <= 0) { 4078 return; 4079 } 4080 4081 /** 4082 * Event Listeners 4083 * ========================= 4084 */ 4085 var closeIcon = languageSelectorOverlay.find('.js-action__closeoverlay'); 4086 var countryFlagIcon = $('.js-action__language-selection'); 4087 var overlayBackground = $('.language-selection-background'); 4088 closeIcon.on('click', closeOverlay); 4089 countryFlagIcon.on('click', showOverlay); 4090 overlayBackground.on('click', hideOverlay); 4091}; 4092/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) 4093 4094/***/ }), 4095
4096/***/ "./.tmp/app_col_eu_core/js/components/loyalty.js": 4097/*!*******************************************************!*\ 4098 !*** ./.tmp/app_col_eu_core/js/components/loyalty.js ***! 4099 \*******************************************************/ 4100/*! no static exports found */ 4101/***/ (function(module, exports, __webpack_require__) { 4102 4103"use strict"; 4104 4105 4106/** 4107 * JS for Loyalty relates stuff (used by Columbia and MHW for now) 4108 */ 4109var formHelpers = __webpack_require__(/*! ../checkout/formErrors */ "./.tmp/app_col_eu_core/js/checkout/formErrors.js"); 4110module.exports = { 4111 /** 4112 * Setup handler for when a customer opts in to enroll for the rewards system, in My accounts dashboard 4113 */ 4114 onEnrollRewards: function onEnrollRewards() { 4115 $('body').on('submit', 'form.js-rewards-join-now-form', function (e) { 4116 e.preventDefault(); 4117 var $form = $(this); 4118 var url = $form.attr('action'); 4119 var redirectUrl = $form.data('redirect-url'); 4120 var isMobileMenu = $form.data('mobile-menu'); 4121 var $signUpBtn = $('.js-loyalty-banner-signup-btn'); 4122 $signUpBtn.prop('disabled', true); 4123 $.spinner().start(); 4124 $.ajax({ 4125 url: url, 4126 type: 'post', 4127 dataType: 'json', 4128 data: $form.serialize(), 4129 success: function success(data) { 4130 if (data.success) { 4131 var loyaltyEnrollSuccessMessage = $('.js-enroll-message-success').first().text(); 4132 var emailEnrollSuccessMessage = $('.js-enroll-email-success').first().text(); 4133 var successBanners = function successBanners() { 4134 sessionStorage.setItem('loyaltyEnrollSuccessMessage', loyaltyEnrollSuccessMessage); 4135 if (data.isEmailOptIn) { 4136 sessionStorage.setItem('emailEnrollSuccessMessage', emailEnrollSuccessMessage); 4137 } 4138 }; 4139 if (redirectUrl) { 4140 successBanners(); 4141 window.location.href = redirectUrl; 4142 } else { 4143 if (isMobileMenu) { 4144 $('.sitenav').removeClass('open'); 4145 } 4146 successBanners(); 4147 window.location.reload(true); 4148 } 4149 } else { 4150 var contentMessage = data.errorURL ? "<a href='".concat(data.errorURL, "'>").concat(data.errorMessage, "</a>") : data.errorMessage; 4151 $.alert({ 4152 content: contentMessage, 4153 placement: 'banner', 4154 theme: 'danger' 4155 }); 4156 $signUpBtn.prop('disabled', false); 4157 $.spinner().stop(); 4158 } 4159 }, 4160 error: function error(data) { 4161 $.alert({ 4162 content: data.errorMessage, 4163 placement: 'banner', 4164 theme: 'danger' 4165 }); 4166 $signUpBtn.prop('disabled', false); 4167 $.spinner().stop(); 4168 } 4169 }); 4170 return false; 4171 }); 4172 }, 4173 /** 4174 * Setup handler for when a customer opts out of the rewards system 4175 */ 4176 onOptOutRewards: function onOptOutRewards() { 4177 $('form.js-rewards-opt-out').on('submit', function (e) { 4178 e.preventDefault(); 4179 var $form = $(this); 4180 var $errorMsg = $form.find('.js-opt-out-error'); 4181 var url = $form.attr('action'); 4182 var redirect = $form.data('redirect'); 4183 var closeModalBtn = $('#loyaltyOptOutModal'); 4184 4185 // Remove Error Message 4186 $errorMsg.addClass('d-none'); 4187 $.spinner().start(); 4188 closeModalBtn.modal('hide'); 4189 $.ajax({ 4190 url: url, 4191 type: 'post', 4192 dataType: 'json', 4193 success: function success(data) { 4194 if (data.success) { 4195 if (redirect) { 4196 window.location.href = redirect; 4197 } else { 4198 window.location.reload(true); 4199 } 4200 } else { 4201 // Show Error Message 4202 $errorMsg.removeClass('d-none'); 4203 $.spinner().stop(); 4204 closeModalBtn.modal('show'); 4205 } 4206 }, 4207 error: function error() { 4208 // Show Error Message 4209 $errorMsg.removeClass('d-none'); 4210 $.spinner().stop(); 4211 closeModalBtn.modal('show'); 4212 } 4213 }); 4214 return false;
4215 }); 4216 }, 4217 /** 4218 * Setup handler for optin banners 4219 */ 4220 onLoyaltyEnroll: function onLoyaltyEnroll() { 4221 var loyaltyEnrollSuccessMessage = sessionStorage.getItem('loyaltyEnrollSuccessMessage'); 4222 var emailEnrollSuccessMessage = sessionStorage.getItem('emailEnrollSuccessMessage'); 4223 if (loyaltyEnrollSuccessMessage || emailEnrollSuccessMessage) { 4224 $(function () { 4225 if (loyaltyEnrollSuccessMessage) { 4226 $.alert({ 4227 content: loyaltyEnrollSuccessMessage, 4228 placement: 'banner', 4229 theme: 'success' 4230 }); 4231 sessionStorage.removeItem('loyaltyEnrollSuccessMessage'); 4232 } 4233 if (emailEnrollSuccessMessage) { 4234 $.alert({ 4235 content: emailEnrollSuccessMessage, 4236 placement: 'banner', 4237 theme: 'success' 4238 }); 4239 sessionStorage.removeItem('emailEnrollSuccessMessage'); 4240 } 4241 }); 4242 } 4243 }, 4244 /** 4245 * In Columbia loyalty dashboard, the opt out link requires a modal confirmation 4246 */ 4247 onloyaltyDashboardOptOut: function onloyaltyDashboardOptOut() { 4248 $('.js-link-loyalty-opt-out').on('click', function (e) { 4249 e.preventDefault(); 4250 var $modal = $('#loyaltyOptOutModal'); 4251 var $errorMsg = $modal.find('.js-opt-out-error'); 4252 4253 // Remove Error Message 4254 $errorMsg.addClass('d-none'); 4255 $modal.modal('show'); 4256 }); 4257 }, 4258 /** 4259 * Setup pop-up email opt-in form 4260 */ 4261 initEmailPopupForm: function initEmailPopupForm() { 4262 var $step1 = $('.js-subscribe-form-step1'); 4263 var $step1Submit = $('.js-subscribe-form-step1Submit'); 4264 var $step1EmailErr = $('.js-email-subscribed-error'); 4265 var $step2 = $('.js-subscribe-form-step2'); 4266 var $step2Email = $('.email-address-value'); 4267 var $step2Submit = $('.js-subscribe-form-step2submit'); 4268 var $step3 = $('.signup-success-container'); 4269 $step1.on('submit', function (e) { 4270 var $form = $(this); 4271 var url = $form.attr('action'); 4272 e.preventDefault(); 4273 $.spinner().start(); 4274 $step1Submit.prop('disabled', true); 4275 $.ajax({ 4276 url: url, 4277 type: 'post', 4278 dataType: 'json', 4279 data: $form.serialize(), 4280 success: function success(data) { 4281 if (data.success) { 4282 $step1EmailErr.text('').hide(); 4283 $step2Email.attr('value', data.email); 4284 $step1.addClass('d-none'); 4285 $step2.removeClass('d-none'); 4286 } else if (data.msg) { 4287 $step2.addClass('d-none'); 4288 $step1EmailErr.text(data.msg).show(); 4289 } 4290 if ('dtmLayer' in data && 'digitalData' in window && data.dtmLayer.user) { 4291 window.digitalData.user = data.dtmLayer.user; 4292 } 4293 }, 4294 complete: function complete() { 4295 $step1Submit.prop('disabled', false); 4296 $.spinner().stop(); 4297 } 4298 }); 4299 }); 4300 $step2.on('submit', function (e) { 4301 var $form = $(this); 4302 var url = $form.attr('action'); 4303 e.preventDefault(); 4304 $step2Submit.prop('disabled', true); 4305 $.spinner().start(); 4306 $.ajax({ 4307 url: url, 4308 type: 'post', 4309 dataType: 'json', 4310 data: $form.serialize(), 4311 success: function success(data) { 4312 if (data.success) { 4313 $('.signup-form-container').addClass('d-none'); 4314 $step3.removeClass('d-none'); 4315 } else { 4316 formHelpers.loadFormErrors($step2, data.fields); 4317 } 4318 if ('dtmLayer' in data && 'digitalData' in window && data.dtmLayer.user) { 4319 window.digitalData.user = data.dtmLayer.user; 4320 } 4321 }, 4322 complete: function complete() { 4323 $step2Submit.prop('disabled', false); 4324 $.spinner().stop(); 4325 } 4326 }); 4327 }); 4328 }, 4329 /** 4330 * Setup pop-up loyalty form 4331 */ 4332 initLoyaltyPopupForm: function initLoyaltyPopupForm() { 4333 var $loyaltyForm = $('.js-loyalty-popup-form'); 4334 var $step1 = $('.js-loyalty-popup-step1'); 4335 var $step1Email = $('.email-address-template'); 4336 var $step1Submit = $('.js-loyalty-popup-step1submit'); 4337 var $step2 = $('.js-loyalty-popup-step2'); 4338 var $step2Email = $('.email-address-value'); 4339 var $step2EmailRow = $('.js-loyalty-popup-step2email'); 4340 var $step2Submit = $('.js-loyalty-popup-step2submit'); 4341 var $step3 = $('.signup-success-container');
4342 var validateStep1 = function validateStep1() { 4343 var isValid = false; 4344 if ($step1Email.hasClass('is-invalid') || !$step1Email.val()) { 4345 $step1Email.trigger('focus'); // Indicate invalid field with cursor 4346 $step1Submit.prop('disabled', true); 4347 } else { 4348 $step1Submit.prop('disabled', false); 4349 isValid = true; 4350 } 4351 return isValid; 4352 }; 4353 $step1Submit.on('click', function () { 4354 if (validateStep1()) { 4355 $step2Email.attr('value', $step1Email.val()); 4356 $step1.addClass('d-none'); 4357 $step2.removeClass('d-none'); 4358 } 4359 }); 4360 $step1Email.on('blur', function () { 4361 validateStep1(); 4362 }); 4363 $loyaltyForm.on('submit', function (e) { 4364 var $form = $(this); 4365 var url = $form.attr('action'); 4366 e.preventDefault(); 4367 $step2Submit.prop('disabled', true); 4368 $.spinner().start(); 4369 $.ajax({ 4370 url: url, 4371 type: 'post', 4372 dataType: 'json', 4373 data: $form.serialize(), 4374 success: function success(data) { 4375 if (data.success) { 4376 $('.signup-form-container').addClass('d-none'); 4377 $step3.removeClass('d-none'); 4378 } else { 4379 $step2EmailRow.removeClass('d-none'); 4380 formHelpers.loadFormErrors($loyaltyForm, data.fields); 4381 $('.email-signup-modal').animate({ 4382 scrollTop: $('.form-group.is-invalid').first().offset().top 4383 }, 1000); 4384 } 4385 }, 4386 complete: function complete() { 4387 $step2Submit.prop('disabled', false); 4388 $.spinner().stop(); 4389 } 4390 }); 4391 }); 4392 } 4393}; 4394 4395/***/ }), 4396
4397/***/ "./.tmp/app_col_eu_core/js/components/membership.js": 4398/*!**********************************************************!*\ 4399 !*** ./.tmp/app_col_eu_core/js/components/membership.js ***! 4400 \**********************************************************/ 4401/*! no static exports found */ 4402/***/ (function(module, exports, __webpack_require__) { 4403 4404"use strict"; 4405 4406 4407/** 4408 * Creates and loads a membership drawer. 4409 * @param {Event} $openDrawerButton button that opens drawer 4410 * @returns {Object} jQuery object of created drawer 4411 */ 4412function initMembershipDrawer($openDrawerButton) { 4413 var $membershipDrawer = $.drawer({ 4414 src: $openDrawerButton.data('drawer-url'), 4415 size: 'sm', 4416 returnFocusTo: $openDrawerButton 4417 }).on('click', '.js-membership-switch-drawer', function () { 4418 // When navigating to another drawer, delay closing this drawer until the next drawer opens 4419 $(document).one('shown.drawer', '.drawer', function () { 4420 $membershipDrawer.close(); 4421 }); 4422 }).on('click', '.js-membership-submit-completion', function (e) { 4423 var $initiator = $(e.currentTarget); 4424 $.ajax({ 4425 url: $initiator.data('submit-completion-url'), 4426 method: 'POST' 4427 }); 4428 $membershipDrawer.close(); 4429 }); 4430 return $membershipDrawer; 4431} 4432 4433/** 4434 * Adds membership specific event listeners 4435 */ 4436function initMembershipEventListeners() { 4437 $(document).on('click', '.js-membership-drawer, .js-membership-partners-drawer', function (e) { 4438 var $target = $(e.currentTarget); 4439 if ($target.hasClass('js-membership-partners-drawer')) { 4440 var contentAssetId = $target.data('drawer-content-id'); 4441 if (!contentAssetId) { 4442 return; 4443 } 4444 var drawerURL = "".concat(window.resources.membership.partnersDrawerURL, "?contentAssetId=").concat(contentAssetId); 4445 $target.data('drawer-url', drawerURL); 4446 } 4447 var $membershipDrawer = initMembershipDrawer($target); 4448 $membershipDrawer.on('contentAsyncLoaded.drawer', function () { 4449 var $stepBar = $(this).find('.membershipStepBar'); 4450 if ($stepBar) { 4451 $stepBar.stepBar(); 4452 } 4453 }); 4454 }); 4455} 4456module.exports = { 4457 init: initMembershipEventListeners 4458}; 4459 4460/***/ }), 4461
4462/***/ "./.tmp/app_col_eu_core/js/components/menu.js": 4463/*!****************************************************!*\ 4464 !*** ./.tmp/app_col_eu_core/js/components/menu.js ***! 4465 \****************************************************/ 4466/*! no static exports found */ 4467/***/ (function(module, exports, __webpack_require__) { 4468 4469"use strict"; 4470 4471 4472var keyboardNav = __webpack_require__(/*! ./headerKeyboardNav */ "./.tmp/app_col_eu_core/js/components/headerKeyboardNav.js"); 4473var countrySelectorKeyboardNav = __webpack_require__(/*! ./countrySelectorKeyboardNav */ "./.tmp/app_col_eu_core/js/components/countrySelectorKeyboardNav.js"); 4474var breakpoints = __webpack_require__(/*! ./breakpoints */ "./.tmp/app_col_eu_core/js/components/breakpoints.js"); 4475var rewardsTracker = __webpack_require__(/*! ./rewardsTracker */ "./.tmp/app_col_eu_core/js/components/rewardsTracker.js"); 4476// const _ = require('underscore'); 4477var throttle = __webpack_require__(/*! underscore */ "./node_modules/underscore/modules/index-all.js").throttle; 4478var $sitenav = $('.sitenav'); 4479var $agentForceMobileBtn = $('#agentForceChat_mobile_btn'); 4480 4481/** 4482 * Check if an element has a specific attribute 4483 * @param {string} attr The attribute name to check for 4484 * @returns {bool} True if the attribute exists, false otherwise 4485 */ 4486$.fn.hasAttr = function (attr) { 4487 return this.attr(attr) !== undefined; 4488}; 4489 4490/** 4491 * Close Menu Plugin 4492 * @returns {jQuery} jQuery element reference 4493 */ 4494$.fn.closeMenuItem = function () { 4495 if (breakpoints.isLowRes()) { 4496 // close tertiary menus (they're not toggled with an open class) 4497 this.find('[data-toggle=mobileCollapse][aria-expanded=true]').each(function () { 4498 if (this.mobileCollapse) { 4499 this.mobileCollapse.collapse(); 4500 } 4501 }); 4502 } 4503 4504 // close any open child menus 4505 this.find('.open').removeClass('open'); 4506 this.find('[aria-expanded]').attr('aria-expanded', 'false'); 4507 4508 // only set aria-expanded if value already exists 4509 if (this.hasAttr('aria-expanded')) { 4510 this.attr('aria-expanded', 'false'); 4511 } 4512 this.removeClass('open'); 4513 return this; 4514}; 4515 4516/** 4517 * Performs a slide up/down animation on the target element on mobile breakpoints. 4518 * Re-call this function when changing breakpoints. 4519 * @returns {jQuery} jQuery element reference 4520 */ 4521$.fn.mobileCollapse = function () { 4522 if (breakpoints.isLowRes()) { 4523 $(this).off('.mobileCollapse').each(function () { 4524 var $trigger = $(this); 4525 var targetSelector = $trigger.data('target') || $trigger.attr('href'); 4526 var $target = $(targetSelector); 4527 var transitionDuration = parseFloat($target.css('transition-duration')) || 350; 4528 4529 // initally collapsed 4530 $trigger.attr('aria-expanded', 'false'); 4531 $target.hide(); 4532 4533 /** 4534 * Expands the target element. 4535 * @param {bool} slide SlideDown or show instantly 4536 * @returns {jQuery} The target jQuery object 4537 * @example 4538 * let elemnt = $('[data-toggle=mobileCollapse]')[0]; // elmnt is NOT a jQuery object. 4539 * elemnt.mobileCollapse.expand(); // show instantly 4540 * // or elemnt.mobileCollapse.expand(true); // slide down 4541 */ 4542 4543 var _expand = function _expand(slide) { 4544 // eslint-disable-line no-underscore-dangle 4545 $trigger.attr('aria-expanded', true); 4546 if (slide) return $target.slideDown(transitionDuration); 4547 return $target.show(); 4548 }; 4549 4550 /** 4551 * Collapses the target element. 4552 * @param {bool} slide SlideUp or hide instantly 4553 * @returns {jQuery} The target jQuery object 4554 * @example 4555 * let elemnt = $('[data-toggle=mobileCollapse]')[0]; // elmnt is NOT a jQuery object. 4556 * elemnt.mobileCollapse.collapse(); // hide instantly 4557 * // or elemnt.mobileCollapse.collapse(true); // slide up 4558 */ 4559 var _collapse = function _collapse(slide) { 4560 // eslint-disable-line no-underscore-dangle 4561 $trigger.attr('aria-expanded', 'false'); 4562 if (slide) return $target.slideUp(transitionDuration); 4563 return $target.hide(); 4564 }; 4565 if ($target.length) { 4566 $trigger.on('click.mobileCollapse', function (e) { 4567 if (this.tagName === 'A') { 4568 e.preventDefault(); 4569 } 4570 if ($target.css('display') === 'none') { 4571 _expand(true); 4572 } else { 4573 _collapse(true); 4574 } 4575 }); 4576 } 4577 4578 // the following object is attached to the trigger HTML element, not the jquery object, 4579 // so we can access its methods from outside this plugin without having to capture this jQuery object. 4580 this.mobileCollapse = {
4581 expand: _expand, 4582 collapse: _collapse 4583 }; 4584 return this; 4585 }); 4586 } else { 4587 // desktop - expand everything 4588 $(this).off('.mobileCollapse').attr('aria-expanded', true).each(function () { 4589 var targetSelector = $(this).data('target') || $(this).attr('href'); 4590 var $target = $(targetSelector); 4591 $target.show(); 4592 }); 4593 } 4594 return this; 4595}; 4596 4597/** 4598 * If selected menu item has a submenu, show it 4599 * @param {string} selected - selected menu item 4600 * @returns {bool} if submenu exists 4601 */ 4602function openSecondaryNav(selected) { 4603 // NOTE: This function is only invoked when a primary navigation item is clicked 4604 // this function is overridden in other brands 4605 var $primaryItem = $(selected); 4606 var $subNav = $primaryItem.siblings('.sitenav-secondary'); 4607 if ($subNav.length) { 4608 // if there are secondary items, add the open class to .sitenav-secondary 4609 $primaryItem.parent('.sitenav-primary__li').attr('aria-expanded', true); 4610 $subNav.addClass('open').attr('aria-expanded', true); 4611 return true; 4612 } 4613 return false; 4614} 4615 4616/** 4617 * Lazy Load Account Drawer Content 4618 */ 4619function lazyLoadAccountContent() { 4620 var url = $('.js-action__menuopen, .js-action__menutoggle').data('lazy-load-menu-account-section-url'); 4621 if (!url) { 4622 return; 4623 } 4624 var $container = $('.js-mobile-menu-account-drawer-container'); 4625 4626 // Exit early if the container is loading. 4627 if ($container.data('is-loading')) { 4628 return; 4629 } 4630 4631 // Exit early if the content exists. 4632 if ($container.children().length) { 4633 return; 4634 } 4635 4636 // Exit early if the container is loading. 4637 $container.data('is-loading', true); 4638 $.ajax({ 4639 url: url, 4640 method: 'GET', 4641 success: function success(response) { 4642 $container.append($(response)); 4643 $container.on('click', '.js-btn-registration', function () { 4644 $container.find('.js-rewards-terms').prop('checked', !$(this).hasClass('js-btn-registration-no-rewards')); 4645 }); 4646 rewardsTracker.loadRewardsTracker($('.account-content')); 4647 $container.find('form.login').trigger('form:created'); 4648 $container.find('form.registration').trigger('form:created'); 4649 }, 4650 complete: function complete() { 4651 $container.data('is-loading', false); 4652 } 4653 }); 4654} 4655 4656/** 4657 * Close the mobile navigation menu 4658 */ 4659function closeMobileNav() { 4660 $('.sitenav-secondary').closeMenuItem(); 4661 $sitenav.closeMenuItem(); 4662 $('html').removeClass('menu-active'); 4663 $.enableScroll(); 4664 $('body').off('click.breakpointDependent'); 4665} 4666 4667/** 4668 * Open the mobile navigation menu 4669 */ 4670function openMobileNav() { 4671 lazyLoadAccountContent(); 4672 4673 // Prevent page scrolling 4674 $.disableScroll(); 4675 $('html').addClass('menu-active'); 4676 $sitenav.addClass('open'); 4677 $(document).trigger('mobileMenu:show'); 4678 4679 // listen for clicks outside the menu 4680 $('body').on('click.breakpointDependent', function (e) { 4681 if (!$(e.target).closest('.sitenav').length) { 4682 closeMobileNav(); 4683 } 4684 }); 4685} 4686 4687/** 4688 * Mouse events 4689 */ 4690function mouseEvents() { 4691 // only for desktop 4692 4693 if (breakpoints.isHighRes()) { 4694 $sitenav.on('mouseenter.breakpointDependent', '.sitenav-primary__li', function () { 4695 $(this).attr('aria-expanded', true); 4696 }).on('mouseleave.breakpointDependent', '.sitenav-primary__li', function () { 4697 $(this).attr('aria-expanded', false); 4698 }); 4699 } 4700 4701 // only for mobile 4702 if (breakpoints.isLowRes()) { 4703 // open menu 4704 $('.js-action__menuopen') // hamburger icon 4705 .on('click.breakpointDependent', function (e) { 4706 if ($sitenav.hasClass('open')) { 4707 closeMobileNav(); 4708 } else { 4709 openMobileNav(); 4710 } 4711 e.stopPropagation(); 4712 }); 4713 4714 // open primary menu level 4715 $sitenav.on('click.breakpointDependent', '.sitenav-primary__a', function (e) { 4716 if (openSecondaryNav(this)) { 4717 e.preventDefault(); 4718 } 4719 }); 4720 4721 // mobile nav drawer close button 4722 $('.js-action__menuclose').on('click.breakpointDependent', function () { 4723 closeMobileNav(); 4724 }); 4725 4726 // mobile nav drawer back button on secondary menu 4727 $sitenav.on('click.breakpointDependent', '.js-action__menuback', function () { 4728 $(this).closest('.sitenav-primary__li').closeMenuItem(); 4729 }); 4730 } 4731} 4732 4733/** 4734 * Keyboard events 4735 */ 4736function keyboardEvents() { 4737 // Close menu when it loses focus 4738 $sitenav.on('focus', '*', function () { 4739 $sitenav.loseFocus(function () { 4740 $('.sitenav-primary__li.open').closeMenuItem(); 4741 }); 4742 }); 4743 4744 // on keyboard navigation focus 4745 if (breakpoints.isHighRes()) { 4746 $sitenav.on('focus', '.sitenav-primary__li', function () { 4747 $(this).attr('aria-expanded', true); 4748 }); 4749 } 4750} 4751 4752/** 4753 * Miscellaneous events 4754 */ 4755function miscEvents() { 4756 // There are "Sign In" links in checkout that need to trigger the account menu to open... 4757 $('.js-action__account-open').on('click', function (e) { 4758 var hasAccountIcon = $('.js-action__account').length; 4759 var $siteHeaderAccount = $('.siteheader .siteheader__account-link'); 4760 if (hasAccountIcon) { 4761 e.preventDefault(); 4762 e.stopPropagation(); 4763 if (breakpoints.isLowRes()) { 4764 var loginPage = $siteHeaderAccount.find('.js-action__account').attr('href'); 4765 if (loginPage !== '') { 4766 window.location.replace(loginPage); 4767 } 4768 } else { 4769 $(document).trigger('accountDrawer:show'); 4770 } 4771 } 4772 }); 4773} 4774 4775/** 4776 * Determines if the window is scrolled 4777 */ 4778function windowIsScrolled() { 4779 var isScrolled = $(window).scrollTop() > 0; 4780 $('body').toggleClass('window-is-scrolled', isScrolled); 4781} 4782 4783/** 4784 * Events triggered on page scroll 4785 */ 4786function scrollEvents() { 4787 var windowIsScrolledDebounce = throttle(windowIsScrolled, 50); 4788 4789 /** 4790 * Passive event listeners improve scrolling performance: https://web.dev/uses-passive-event-listeners/ 4791 * All our supported browsers support passive listeners: https://caniuse.com/passive-event-listener 4792 * JQuery will not support passive scroll listeners until v4 (in development): https://github.com/jquery/jquery/issues/2871 4793 */ 4794 document.addEventListener('scroll', windowIsScrolledDebounce, { 4795 passive: true 4796 }); 4797} 4798 4799/** 4800 * Events triggered on screen size 4801 */ 4802function resizeEvents() { 4803 // 'breakpoint:changed' event is fired from jquery.cscutils.js on page load and when resizing from one breakpoint to another 4804 $(window).on('breakpoint:changed', function (e, data) { 4805 // clear all breakpoint dependent events 4806 $('*').off('.breakpointDependent'); 4807 mouseEvents(); 4808 miscEvents(); 4809 if (data.currentBp === 'lg' || data.currentBp === 'xl' || data.currentBp === '2xl') { 4810 closeMobileNav(); 4811 } 4812 $('[data-toggle="mobileCollapse"]').mobileCollapse(); 4813 }); 4814 $('[data-toggle="mobileCollapse"]').mobileCollapse(); 4815} 4816 4817/** 4818 * Initialize functions 4819 */
4820function init() { 4821 mouseEvents(); 4822 keyboardEvents(); 4823 keyboardNav.init(); 4824 countrySelectorKeyboardNav.init(); 4825 miscEvents(); 4826 scrollEvents(); 4827 resizeEvents(); 4828} 4829function launchChat() { 4830 function handleError(error) { 4831 console.error('Chat launch error:', error); 4832 } 4833 try { 4834 if (!window.embeddedservice_bootstrap || !window.embeddedservice_bootstrap.utilAPI) { 4835 throw new Error('Embedded service not loaded or utilAPI not available.'); 4836 } 4837 window.embeddedservice_bootstrap.utilAPI.launchChat().catch(handleError); 4838 } catch (err) { 4839 handleError(err); 4840 } 4841} 4842if ($agentForceMobileBtn) { 4843 $agentForceMobileBtn.on('click', launchChat); 4844} 4845module.exports = function () { 4846 init(); 4847}; 4848 4849/***/ }), 4850
4851/***/ "./.tmp/app_col_eu_core/js/components/miniCart.js": 4852/*!********************************************************!*\ 4853 !*** ./.tmp/app_col_eu_core/js/components/miniCart.js ***! 4854 \********************************************************/ 4855/*! no static exports found */ 4856/***/ (function(module, exports, __webpack_require__) { 4857 4858"use strict"; 4859 4860 4861var basketHelper = __webpack_require__(/*! ../helper/basketHelper */ "./.tmp/app_col_eu_core/js/helper/basketHelper.js"); 4862var utils = __webpack_require__(/*! ../components/utils */ "./.tmp/app_col_eu_core/js/components/utils.js"); 4863var keyboardAccessibility = __webpack_require__(/*! ./keyboardAccessibility */ "./.tmp/app_col_eu_core/js/components/keyboardAccessibility.js"); 4864var minicartSaleItemAlertBadge = __webpack_require__(/*! ./minicartSaleItemAlertBadge */ "./.tmp/app_col_eu_core/js/components/minicartSaleItemAlertBadge.js"); 4865var minicartDrawerDisabled = null; 4866var $minicartDrawer; 4867var quantityChangeDebounce; 4868 4869/** 4870 * If the drawer is disabled for this page. 4871 * This is set to true on the cart page and will cause the header icon to not do anything for that page. 4872 * @returns {boolean} - If true, drawer is disabled 4873 */ 4874function drawerDisabledForPage() { 4875 if (minicartDrawerDisabled === null) { 4876 minicartDrawerDisabled = $('.js-minicart-preferences').data('minicart-drawer-disabled') === true; 4877 } 4878 return minicartDrawerDisabled; 4879} 4880 4881/** 4882 * Make the server call to update the cart quantity and re-draw accordingly 4883 * @param {Object} $qtyField jQuery Object 4884 */ 4885function processCartItemQuantityUpdate($qtyField) { 4886 var quantity = parseInt($qtyField.val(), 10); 4887 var preSelectQty = parseInt($qtyField.data('pre-select-qty'), 10); 4888 var $productCard = $qtyField.closest('.js-product-card'); 4889 if (quantity < 1) { 4890 var $removeBtn = $productCard.find('.js-remove-product'); 4891 $removeBtn.trigger('click'); 4892 return; 4893 } 4894 if (preSelectQty !== quantity) { 4895 var uuid = $productCard.data('uuid'); 4896 var urlParams = { 4897 pid: $productCard.data('pid'), 4898 quantity: quantity, 4899 prevQuantity: preSelectQty, 4900 cartSource: 'mini-cart', 4901 uuid: uuid 4902 }; 4903 var url = utils.setUrlData($qtyField.data('action'), urlParams); 4904 $('.minicart-drawer').spinner().start(); 4905 $.ajax({ 4906 url: url, 4907 type: 'get', 4908 context: $qtyField, 4909 dataType: 'json' 4910 }).done(function (data) { 4911 redrawMiniCartDrawer(); // eslint-disable-line no-use-before-define 4912 if (data.dtmEvent) { 4913 $('body').trigger('cart:emitEvents', { 4914 events: data.dtmEvent 4915 }); 4916 } 4917 if (data.dtmLayer) { 4918 basketHelper.updateDTM(data.dtmLayer, ['page', 'user', 'cart']); 4919 } 4920 }).fail(function (err) { 4921 $('#minicart-header-banner').alert({ 4922 content: err.responseJSON.errorMessage, 4923 theme: 'danger' 4924 }); 4925 $qtyField.val(parseInt($qtyField.data('pre-select-qty'), 10)); 4926 }).always(function () { 4927 $('.minicart-drawer').spinner().stop(); 4928 }); 4929 } 4930} 4931 4932/** 4933 * Based on multiple factors including availability, business rules, and user input 4934 * What amount we actually want to change it to. 4935 * @param {Object} $qtyField jQuery Object 4936 * @param {number} offset Typically 1 or -1 4937 * @returns {number} The intended target quantity 4938 */ 4939function determineCartItemQuantity($qtyField, offset) { 4940 var max = parseInt($qtyField.attr('max'), 10); 4941 var min = parseInt($qtyField.attr('min'), 10); 4942 var qty = parseInt($qtyField.val(), 10); 4943 if (isNaN(qty)) { 4944 qty = parseInt($qtyField.data('pre-select-qty'), 10); 4945 } 4946 if (qty + offset < min) { 4947 return min; 4948 } 4949 if (qty + offset > max) { 4950 return max; 4951 } 4952 return qty + offset; 4953} 4954 4955/** 4956 * Starting point for updating minicart item quantity. Determine workable quantity and actually do it 4957 * @param {Object} $qtyField jQuery Object 4958 * @param {number} offset Typically 1 or -1 4959 */ 4960function updateCartItemQuantity($qtyField, offset) { 4961 clearTimeout(quantityChangeDebounce); 4962 $qtyField.val(determineCartItemQuantity($qtyField, offset)); 4963 quantityChangeDebounce = setTimeout(function () { 4964 processCartItemQuantityUpdate($qtyField); 4965 }, 500); 4966} 4967 4968/** 4969 * Private Function: Close minicart 4970 */ 4971function hideMiniCart() { 4972 if ($minicartDrawer) { 4973 $minicartDrawer.close(); 4974 } 4975} 4976 4977/** 4978 * Set count in mincart header 4979 * More than 9 shows "9+" 4980 * @param {number} count - Number of items 4981 */ 4982function setMiniCartCount(count) { 4983 var maxCount = 9; 4984 var $quantity = $('.minicart .minicart-quantity'); // The qty element next to the minicart icon 4985 var newCount = Math.min(parseInt(count, 10), maxCount); 4986 if (newCount) { 4987 $quantity.removeClass('isempty').text(newCount); 4988 $('.minicart .minicart-link').removeClass('isempty'); 4989 $quantity.toggleClass('minicart-quantity--plus', count > maxCount); 4990 } else { 4991 // newCount is 0 or NaN 4992 if (!$quantity.data('show-zero-for-empty')) { 4993 $quantity.addClass('isempty'); 4994 } 4995 $quantity.text(0); 4996 $('.minicart .minicart-link').addClass('isempty'); 4997 $minicartDrawer = null; 4998 } 4999 $('.minicart-drawer .drawer__title').html($('.minicart-drawer-title').html()); 5000 minicartSaleItemAlertBadge.toggleAlertBadge(); 5001} 5002 5003/** 5004 * After minicart drawer contents are drawn, bind any click events 5005 */ 5006function bindDrawerEvents() { 5007 $('.cart-membership-banner a').on('click', function () { 5008 // This is a login link in membership banner 5009 $minicartDrawer.close(); 5010 }); 5011 $('.js-drawer-login').on('click', function () { 5012 // This is a login link in empty cart 5013 $minicartDrawer.close(); 5014 }); 5015 $('.js-quantity-add').on('click', function () { 5016 var $qtyField = $(this).closest('.input-group').find('.js-quantity'); 5017 updateCartItemQuantity($qtyField, 1); 5018 }); 5019 $('.js-quantity-remove').on('click', function () { 5020 var $qtyField = $(this).closest('.input-group').find('.js-quantity'); 5021 updateCartItemQuantity($qtyField, -1); 5022 }); 5023 $('.js-quantity').on('change', function () { 5024 updateCartItemQuantity($(this), 0); 5025 }); 5026 $('.js-oos-edit').on('click', function () { 5027 var $lineItem = $(this).closest('.product-line-item'); 5028 var url = $lineItem.data('edit-href'); 5029 window.quickview.launchEditProduct(url); 5030 $(window).one('hidden.bs.modal', function () { 5031 // If quick view is closed return to minicart drawer 5032 showMiniCartDrawer(); // eslint-disable-line no-use-before-define 5033 }); 5034 }); 5035 5036 $('.js-oos-remove').on('click', function () { 5037 $(this).closest('.product-line-item').find('.js-remove-product').trigger('click'); 5038 }); 5039 $('.js-restore-bonus-product').on('click', function () { 5040 restoreBonusProductMinicart(this); // eslint-disable-line no-use-before-define 5041 }); 5042} 5043 5044/** 5045 * Will handle initializing the paypal button 5046 */ 5047function handleInitPayPal() { 5048 window.paypalInitCount++; 5049 5050 // window.braintree is for NA while window.paypal is for EU 5051 if (window.braintree || window.paypal) { 5052 $(window).trigger('initPayPalButton'); 5053 if (window.initPayPalButtonInterval) { 5054 clearInterval(window.initPayPalButtonInterval); 5055 delete window.initPayPalButtonInterval; 5056 } 5057 } else if (window.paypalInitCount >= 11) { 5058 // try 10 times then give up 5059 clearInterval(window.initPayPalButtonInterval); 5060 delete window.initPayPalButtonInterval; 5061 } 5062} 5063 5064/** 5065 * Get URL for loading the minicart fresh 5066 * @returns {string} URL accounting for existing scripts 5067 */ 5068function getMinicartUrl() { 5069 var miniCartUrl = $('.siteheader').data('minicart-url'); 5070 if (window.paypalScriptsLoaded) { 5071 miniCartUrl += '?ignoreScripts=true';
5072 } 5073 return miniCartUrl; 5074} 5075 5076/** 5077 * Show minicart in drawer. 5078 * destroyOnClose is true so this will return to the source every time the drawer gets opened. 5079 * This allows cart contents or inventory to change between one view and the next even in same page session 5080 */ 5081function showMiniCartDrawer() { 5082 if (!drawerDisabledForPage()) { 5083 var miniCartUrl = getMinicartUrl(); 5084 $minicartDrawer = $.drawer({ 5085 src: miniCartUrl, 5086 title: ' ', 5087 size: 'sm', 5088 class: 'minicart-drawer', 5089 destroyOnClose: true 5090 }).on('contentAsyncLoaded.drawer', function (data) { 5091 $('.minicart-drawer .drawer__title').html($('.minicart-drawer-title').html()); 5092 $('.minicart-content .product-line-item .line-item-name').first().focus(); 5093 var currentCount = $(data.currentTarget).find('.minicart-number-of-items').data('number-raw'); 5094 if (currentCount) { 5095 setMiniCartCount(currentCount); 5096 } 5097 $('.approaching-discount .progress').progressArc(); 5098 window.dispatchEvent(new Event('minicart:shown:dtm')); 5099 bindDrawerEvents(); 5100 basketHelper.processOnloadEvents(); 5101 if (window.initPayPal) { 5102 window.paypalInitCount = 0; 5103 // There is a race condition when loading the minicart braintree paypal buttons. If we load braintreeMFRA.js before the braintree sdk, we cannot initialize the paypal button. Using setInterval allows us to retry. 5104 window.initPayPalButtonInterval = setInterval(handleInitPayPal, 100); 5105 window.paypalScriptsLoaded = true; 5106 } 5107 }); 5108 } 5109} 5110 5111/** 5112 * Redraw contents without closing drawer 5113 */ 5114function redrawMiniCartDrawer() { 5115 var minicartUrl = getMinicartUrl(); 5116 $.get(minicartUrl).done(function (minicartContent) { 5117 $('.drawer__body').html(minicartContent); 5118 setMiniCartCount($('.minicart-content .minicart-number-of-items').data('number-raw')); 5119 $('.approaching-discount .progress').progressArc(); 5120 bindDrawerEvents(); 5121 basketHelper.processOnloadEvents(); 5122 if (window.initPayPal) { 5123 window.paypalInitCount = 0; 5124 handleInitPayPal(); 5125 } 5126 }); 5127} 5128 5129/** 5130 * Fires the call that restores a bonus product 5131 * @param {Object} btn Clicked button 5132 */ 5133function restoreBonusProductMinicart(btn) { 5134 var url = $(btn).data('action'); 5135 $.ajax({ 5136 url: url, 5137 type: 'get', 5138 dataType: 'json' 5139 }).done(function (data) { 5140 redrawMiniCartDrawer(); 5141 if (data.dtmEvent) { 5142 $('body').trigger('cart:emitEvents', { 5143 events: data.dtmEvent 5144 }); 5145 } 5146 if (data.dtmLayer) { 5147 basketHelper.updateDTM(data.dtmLayer, ['page', 'user', 'cart']); 5148 } 5149 }); 5150} 5151 5152/** 5153 * Inside quick view (for updating OOS variant), button was clicked. 5154 * Process and then either way re-open the minicart drawer. 5155 * @param {Object} quickViewUpdateButton Object this from click event 5156 */ 5157function updateFromQuickView(quickViewUpdateButton) { 5158 var $updateDetails = $(quickViewUpdateButton).closest('.cart-and-ipay').find('.update-cart-url'); 5159 if ($updateDetails.val()) { 5160 var updateURL = $updateDetails.val(); 5161 var form = { 5162 pid: basketHelper.getPidFromQuickview($(quickViewUpdateButton)), 5163 uuid: $updateDetails.data('uuid'), 5164 selectedOptionValueId: $updateDetails.data('selected-option'), 5165 quantity: $updateDetails.data('selected-quantity') 5166 }; 5167 $(quickViewUpdateButton).parents('.card').spinner().start(); 5168 $.ajax({ 5169 url: updateURL, 5170 type: 'post', 5171 context: quickViewUpdateButton, 5172 data: form, 5173 dataType: 'json', 5174 complete: function complete() { 5175 // Regardless of success / failure of ajax call, re-open (refresh) drawer 5176 $.spinner().stop(); 5177 // This is always available, included from base.js 5178 window.quickview.hideQuickview(); 5179 showMiniCartDrawer(); 5180 return; 5181 } 5182 }); 5183 } 5184} 5185 5186/** 5187 * Keyboard Events 5188 */ 5189function keyboardEvents() { 5190 keyboardAccessibility('.siteheader__minicart-link', { 5191 13: function _() { 5192 // enter 5193 showMiniCartDrawer(); 5194 return true; 5195 }, 5196 27: function _() { 5197 // escape 5198 hideMiniCart(); 5199 }, 5200 38: function _() { 5201 // up 5202 hideMiniCart(); 5203 return true; 5204 }, 5205 40: function _() { 5206 // down 5207 showMiniCartDrawer(); 5208 return true; 5209 } 5210 }, function () { 5211 return this; 5212 }); 5213} 5214 5215/** 5216 * Intializes cart quantity in the header from client data to avoid 5217 * multiple remote includes and each load the cart into memory redundantly. 5218 */ 5219function setMiniCartCountFromDataLayer() { 5220 var data = window.digitalData; 5221 var totalUnits = 0; 5222 if (data && data.cart && data.cart.item) { 5223 totalUnits = data.cart.item.reduce(function (quantitySum, item) { 5224 return quantitySum + item.quantity; 5225 }, 0); 5226 } 5227 setMiniCartCount(totalUnits); 5228 $('.js-siteheader-icons').removeClass('invisible'); 5229} 5230module.exports = {
5231 init: function init() { 5232 basketHelper.init(); 5233 keyboardEvents(); 5234 5235 // Global event triggers 5236 $(document).on('minicart:updatecount', function (event, count) { 5237 setMiniCartCount(count); 5238 }); 5239 $(document).on('minicart:show', function () { 5240 showMiniCartDrawer(); 5241 }); 5242 $(document).on('minicart:hide', function () { 5243 hideMiniCart(); 5244 }); 5245 $(document).on('shown.bs.modal', function () { 5246 hideMiniCart(); 5247 }); 5248 $('.js-action__minicart').on('click', function (event) { 5249 event.preventDefault(); 5250 showMiniCartDrawer(); 5251 }); 5252 $('body').off('click.approachingDiscountDetails').on('click.approachingDiscountDetails', '.approaching-discount-description', function (e) { 5253 e.preventDefault(); 5254 $.modal({ 5255 content: $(this).data('copy'), 5256 modalSizeClass: 'modal-md', 5257 destroyOnClose: true 5258 }).on('hidden.bs.modal', $.enableScroll); 5259 }); 5260 $('.js-action__checkout-minicart a').on('click', function (e) { 5261 e.preventDefault(); 5262 var $miniCartBtnContainer = $('.js-action__checkout-minicart'); 5263 var url = $miniCartBtnContainer.data('cartUrl'); 5264 var modalMessage = $miniCartBtnContainer.data('redirectMessage'); 5265 var buttonStayText = $miniCartBtnContainer.data('buttonStayText'); 5266 var buttonLeaveText = $miniCartBtnContainer.data('buttonLeaveText'); 5267 $.modal({ 5268 content: modalMessage, 5269 customClasses: 'leave-checkout-modal', 5270 showCloseBtn: false, 5271 modalSizeClass: 'modal-sm', 5272 buttons: ["<button class=\"btn btn-block btn-narrow btn-secondary\" data-dismiss=\"modal\">".concat(buttonStayText, "</button>"), "<a href=\"".concat(url, "\" class=\"btn btn-block btn-primary btn-narrow mb-0 js-btn-leave-checkout\">").concat(buttonLeaveText, "</a>")] 5273 }); 5274 }); 5275 if (!drawerDisabledForPage()) { 5276 $('body').on('click', '.update-cart-product-global', function (e) { 5277 e.preventDefault(); 5278 updateFromQuickView(this); 5279 }); 5280 } 5281 $(document).on('dataLayer:userSpecificData:updated', function () { 5282 setMiniCartCountFromDataLayer(); 5283 }); 5284 setMiniCartCountFromDataLayer(); 5285 } 5286}; 5287 5288/***/ }), 5289
5290/***/ "./.tmp/app_col_eu_core/js/components/minicartSaleItemAlertBadge.js": 5291/*!**************************************************************************!*\ 5292 !*** ./.tmp/app_col_eu_core/js/components/minicartSaleItemAlertBadge.js ***! 5293 \**************************************************************************/ 5294/*! no static exports found */ 5295/***/ (function(module, exports, __webpack_require__) { 5296 5297"use strict"; 5298 5299 5300/** 5301 * Adds or removes the alert-badge red dot on the minicart icon based on if 5302 * the Price Drop Modal is enabled and the user has a value for the 5303 * priceDropUserSegment in sessionStorage. 5304 */ 5305function toggleAlertBadge() { 5306 var $icon = $('.minicart-icon .svgicon'); 5307 var hasAlertWrapper = $icon.parent().hasClass('alert-badge'); 5308 if (window.clientData && window.clientData.priceDropModalEnabled) { 5309 var customerGroup = sessionStorage.getItem('priceDropUserSegment'); 5310 if (customerGroup) { 5311 var hasSaleItemInCart = !!(window.digitalData && window.digitalData.cart && window.digitalData.cart.item) && window.digitalData.cart.item.some(function (item) { 5312 return item.isSaleItem === 'Yes'; 5313 }); 5314 if (hasSaleItemInCart && !hasAlertWrapper) { 5315 $icon.wrap('<div class="alert-badge"></div>'); 5316 } else if (!hasSaleItemInCart && hasAlertWrapper) { 5317 $icon.unwrap('.alert-badge'); 5318 } 5319 } else if (hasAlertWrapper) { 5320 $icon.unwrap('.alert-badge'); 5321 } 5322 } else if (hasAlertWrapper) { 5323 $icon.unwrap('.alert-badge'); 5324 } 5325} 5326module.exports = { 5327 toggleAlertBadge: toggleAlertBadge 5328}; 5329 5330/***/ }), 5331
5332/***/ "./.tmp/app_col_eu_core/js/components/modals.js": 5333/*!******************************************************!*\ 5334 !*** ./.tmp/app_col_eu_core/js/components/modals.js ***! 5335 \******************************************************/ 5336/*! no static exports found */ 5337/***/ (function(module, exports, __webpack_require__) { 5338 5339"use strict"; 5340 5341 5342var keyboardAccessibility = __webpack_require__(/*! ../components/keyboardAccessibility */ "./.tmp/app_col_eu_core/js/components/keyboardAccessibility.js"); 5343module.exports = { 5344 init: function init() { 5345 $(document).ready(function () { 5346 var bootstrapModals = $('[data-toggle="modal"]'); 5347 // fire click event on enter 5348 keyboardAccessibility(bootstrapModals, { 5349 13: function _(selected) { 5350 // enter 5351 $(selected).click(); 5352 } 5353 }, function () { 5354 return this; // this is the scope of the jQuery event handler in keyboardAccessibility 5355 }); 5356 }); 5357 } 5358}; 5359 5360/***/ }), 5361
5362/***/ "./.tmp/app_col_eu_core/js/components/passwordVisibility.js": 5363/*!******************************************************************!*\ 5364 !*** ./.tmp/app_col_eu_core/js/components/passwordVisibility.js ***! 5365 \******************************************************************/ 5366/*! no static exports found */ 5367/***/ (function(module, exports, __webpack_require__) { 5368 5369"use strict"; 5370/* global registerButtonAsRecaptchaTrigger */ 5371 5372 5373var keyboardAccessibility = __webpack_require__(/*! ./keyboardAccessibility */ "./.tmp/app_col_eu_core/js/components/keyboardAccessibility.js"); 5374 5375/** 5376 * Adds password visibilty icon on each 5377 * password field and their respective 5378 * event listeners 5379 */ 5380function addPasswordVisibility() { 5381 var $passwordField = $('input[type=password]'); 5382 $passwordField.each(function () { 5383 var $thisPWField = $(this); 5384 if (!$thisPWField.siblings('.js-show-password').length) { 5385 // add toggle icon to the PW field 5386 var $icon = $('<svg class="js-show-password show-password-icon"><use href="#visibility_on"></use></svg>'); 5387 5388 // Make existing icon keyboard accessible 5389 $icon.attr({ 5390 tabindex: '0', 5391 role: 'button', 5392 'aria-label': $thisPWField.data('show-password-label') 5393 }); 5394 $thisPWField.after($icon); 5395 5396 // toggle the PW visibility 5397 $icon.on('click', function () { 5398 var currentType = $thisPWField.attr('type'); 5399 $thisPWField.attr('type', currentType === 'password' ? 'text' : 'password'); 5400 $icon.find('use').attr('href', currentType === 'password' ? '#visibility_off' : '#visibility_on'); 5401 $icon.attr('aria-label', currentType === 'password' ? $thisPWField.data('hide-password-label') : $thisPWField.data('show-password-label')); 5402 }); 5403 } 5404 }); 5405 5406 // Keyboard accessibility for password visibility icon 5407 keyboardAccessibility('.js-show-password', { 5408 13: function _() { 5409 $(this).trigger('click'); 5410 return true; 5411 }, 5412 32: function _() { 5413 $(this).trigger('click'); 5414 return true; 5415 } 5416 }, function () { 5417 return this; 5418 }); 5419} 5420module.exports = { 5421 init: function init() { 5422 addPasswordVisibility(); 5423 $(document).on('form:created', function () { 5424 addPasswordVisibility(); 5425 }); 5426 } 5427}; 5428 5429/***/ }), 5430
5431/***/ "./.tmp/app_col_eu_core/js/components/processInclude.js": 5432/*!**************************************************************!*\ 5433 !*** ./.tmp/app_col_eu_core/js/components/processInclude.js ***! 5434 \**************************************************************/ 5435/*! no static exports found */ 5436/***/ (function(module, exports, __webpack_require__) { 5437 5438"use strict"; 5439 5440 5441function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 5442module.exports = function (include) { 5443 if (typeof include === 'function') { 5444 include(); 5445 } else if (_typeof(include) === 'object') { 5446 Object.keys(include).forEach(function (key) { 5447 if (typeof include[key] === 'function') { 5448 include[key](); 5449 } 5450 }); 5451 } 5452}; 5453 5454/***/ }), 5455
5456/***/ "./.tmp/app_col_eu_core/js/components/progressiveProfiling.js": 5457/*!********************************************************************!*\ 5458 !*** ./.tmp/app_col_eu_core/js/components/progressiveProfiling.js ***! 5459 \********************************************************************/ 5460/*! no static exports found */ 5461/***/ (function(module, exports, __webpack_require__) { 5462 5463"use strict"; 5464 5465 5466/* global _satellite */ 5467 5468/** 5469 * Toggle alert icon visibility 5470 * @param {boolean} isProfileComplete determines if progressive profiling is complete 5471 */ 5472function toggleAlertBadge(isProfileComplete) { 5473 var $profileIcons = $('.js-profile-icon'); 5474 $profileIcons.each(function () { 5475 var $icon = $(this); 5476 var hasAlertWrapper = $icon.parent().hasClass('alert-badge'); 5477 5478 // Apply or remove the wrapper based on profile completion status 5479 if (!isProfileComplete && !hasAlertWrapper) { 5480 $icon.wrap('<div class="alert-badge"></div>'); 5481 } else if (isProfileComplete && hasAlertWrapper) { 5482 $icon.unwrap('.alert-badge'); 5483 } 5484 }); 5485} 5486 5487/** 5488 * Retrieves and sets the profiling progress alert 5489 */ 5490function setProflingProgressAlert() { 5491 if (!(window.clientData && window.clientData.user && window.clientData.user.permissionsForCurrentAuthState && window.clientData.user.permissionsForCurrentAuthState.canViewBasicPersonalInfo && window.resources.progressiveProfiling && window.resources.progressiveProfiling.profilingEnabled)) { 5492 return; 5493 } 5494 $.ajax({ 5495 url: window.resources.progressiveProfiling.profilingProgress, 5496 type: 'GET', 5497 success: function success(response) { 5498 if (response && response.profileProgressData) { 5499 toggleAlertBadge(response.profileProgressData.isComplete); 5500 } 5501 } 5502 }); 5503} 5504 5505/** 5506 * Initialize the Profiling Circular Progress Indicator 5507 * @param {Objext} $cpi jQuery object of the circular progress indicator 5508 */ 5509function initProfilingCpi($cpi) { 5510 if ($cpi && $cpi.length && !$cpi.data('active')) { 5511 $cpi.data('active', true); 5512 $cpi.progressArc(); 5513 } 5514 setProflingProgressAlert(); 5515} 5516 5517/** 5518 * Submit Profiling Data in the current Wizard Step 5519 * @param {JQuery} $step JQuery Object of Wizard Step that triggered data submission 5520 */ 5521function submitProfilingData($step) { 5522 // Send category update if the step has a submission url 5523 var $stepForm = $step.find('form'); 5524 if ($stepForm.length && $stepForm.attr('action')) { 5525 var data = $stepForm.serialize(); 5526 $.ajax({ 5527 url: $stepForm.attr('action'), 5528 type: 'POST', 5529 data: data, 5530 success: function success(response) { 5531 // Update the profiling CTAs 5532 if (response && response.profileProgressData) { 5533 $('.js-profiling-progress').data('progress', response.profileProgressData.progressDecimal); 5534 toggleAlertBadge(response.profileProgressData.isComplete); 5535 } 5536 $('.js-profiling-container').trigger('progressiveProfiling:stepCompleted', $step.data('step-id')); 5537 } 5538 }); 5539 } 5540} 5541 5542/** 5543 * Creates the Profiling Data Submission success toaster 5544 */ 5545function getSuccessToaster() { 5546 $.alert({ 5547 content: "\n <strong>".concat(window.resources.progressiveProfiling.text.title, "</strong><br />").concat(window.resources.progressiveProfiling.text.saved, "\n "), 5548 theme: 'success', 5549 placement: 'toast' 5550 }); 5551} 5552 5553/** 5554 * Creates and loads the profilingDrawer 5555 * @param {Event} e Event Initiator 5556 * @param {string} srcUrl source URL value for drawer creation 5557 * @returns {Object} jQuery object of created drawer 5558 */ 5559function getProfilingDrawer(e, srcUrl) { 5560 var $profilingDrawer = $.drawer({ 5561 src: srcUrl, 5562 size: 'sm', 5563 returnFocusTo: e ? e.target : 'body' 5564 }); 5565 return $profilingDrawer; 5566} 5567 5568/** 5569 * Initialize the Progressive Profiling Wizard 5570 * This can be initiated by opening of a standalone drawer, or within another component 5571 * @param {Object} $wizardContainer jQuery object of drawer container element 5572 * @param {Event} initiatingEvent Event Initiator 5573 * @param {boolean} nextStepAfterInit Whether or not to move to the next step after initialization 5574 */ 5575function initProfilingWizard($wizardContainer, initiatingEvent, nextStepAfterInit) { 5576 var $interactiveSteps = $wizardContainer.find('.wizard__step:not([data-exclude-from-step-count])'); 5577 $wizardContainer.wizard({ 5578 initialStep: nextStepAfterInit ? 1 : 0, 5579 init: function init($wiz) { 5580 // Sets the number of steps available 5581 $wiz.find('.js-num-profiling-steps').text($interactiveSteps.length); 5582 initProfilingCpi($wizardContainer.find('.progress')); 5583 $wiz.on('click.next', '.js-profiling-wiz-next', function (e) { 5584 $wiz.nextStep(e); 5585 }); 5586 5587 // Remove the step from the wizard incase the user goes back to the wizard before reload 5588 $wiz.on('progressiveProfiling:stepCompleted', function (e, stepId
5588) { 5589 $wiz.removeStep(stepId); 5590 }); 5591 if (nextStepAfterInit) { 5592 // Reset the wizard if drawer closes 5593 $(document).on('hide.drawer', $wiz.closest('.drawer'), function (e) { 5594 $wiz.find('.js-profiling-wiz-next').off('click.next'); 5595 $wiz.gotoStep(e, 0); // Step 0 is My Account 5596 }); 5597 } 5598 }, 5599 beforeStepExit: function beforeStepExit(e, stepId) { 5600 var $initiator = $(e.currentTarget); 5601 if ($initiator.length && $initiator.hasClass('js-profiling-wiz-next') && $initiator.closest('.wizard__step').data('profiling-submit') === true) { 5602 submitProfilingData($(this)); 5603 } 5604 5605 // Trigger a direct call and pass stepId - for analytics tracking via Adobe Launch 5606 if (typeof _satellite !== 'undefined' && $initiator.length) { 5607 if ($initiator.hasClass('js-profiling-wiz-next')) { 5608 _satellite.track('formComplete', { 5609 dataStepId: stepId 5610 }); 5611 } 5612 } 5613 }, 5614 afterStepEnter: function afterStepEnter(stepId, $wiz) { 5615 var interactiveStepIndex = $interactiveSteps.index($(this)) + 1 || 1; 5616 5617 // Update current step number with the interactiveStepIndex 5618 $wiz.find('.js-current-profiling-steps').text(interactiveStepIndex); 5619 5620 // Trigger a direct call and pass stepId - for analytics tracking via Adobe Launch 5621 if (stepId !== 'myAccount' && typeof _satellite !== 'undefined') { 5622 _satellite.track('formStart', { 5623 dataStepId: stepId 5624 }); 5625 } 5626 5627 // If entering last step, adjust steps's submission behavior as beforeStepExit will not be called 5628 if ($wiz.numSteps === $wiz.steps.indexOf(stepId) + 1) { 5629 var $step = $(this); 5630 // Change text of button to be 'Complete' 5631 $step.find('.js-profiling-wiz-next').text(window.resources.progressiveProfiling.text.completeButton); 5632 5633 // Set up listener to still submit preferences 5634 $step.find('.js-profiling-wiz-next').off('click.next'); 5635 $step.one('click', '.js-profiling-wiz-next', function (e) { 5636 if ($(e.currentTarget).hasClass('js-profiling-wiz-next')) { 5637 submitProfilingData($step); 5638 } 5639 5640 // Trigger a direct call and pass stepId - for analytics tracking via Adobe Launch 5641 var $initiator = $(e.currentTarget); 5642 if (typeof _satellite !== 'undefined' && $initiator.length) { 5643 if ($initiator.hasClass('js-profiling-wiz-next')) { 5644 _satellite.track('formComplete', { 5645 dataStepId: stepId 5646 }); 5647 } 5648 } 5649 var $drawer = $wiz.closest('.drawer'); 5650 5651 // Close the appropriate drawer 5652 if ($drawer.hasClass('account-drawer')) { 5653 $drawer.trigger('accountDrawer:hide'); 5654 } else if ($drawer.length) { 5655 $drawer.data('drawer').close(); 5656 } 5657 getSuccessToaster(); 5658 }); 5659 } 5660 }, 5661 updateProgress: function updateProgress() {} // Overriding default function 5662 }); 5663} 5664 5665/** 5666 * Load the Profiling Steps into an existing Profiling Wizard 5667 * @param {Event} e Event Initiator 5668 */ 5669function loadProfilingStepsIntoExistingWizard(e) { 5670 var $initiator = $(e.currentTarget); 5671 if ($initiator.closest('.wizard__steps').children().length > 1 || $initiator.data('loading')) { 5672 return; // Exit if Profiling Steps are already loaded or loading 5673 } 5674 5675 $initiator.data('loading', true); 5676 $initiator.closest('.drawer').spinner().start(); 5677 $.ajax({ 5678 url: window.resources.progressiveProfiling.profilingStepsUrl, 5679 type: 'GET', 5680 data: { 5681 excludeWizardContainer: true 5682 }, 5683 success: function success(data) { 5684 // Add profiling steps to the existing wizard 5685 var $wizardContainer = $initiator.closest('.js-profiling-wizard'); 5686 var $wizardSteps = $wizardContainer.find('.wizard__steps'); 5687 $wizardSteps.append(data); 5688 initProfilingWizard($wizardContainer, e, true); 5689 }, 5690 complete: function complete() { 5691 $initiator.data('loading', false); 5692 $initiator.closest('.drawer').spinner().stop(); 5693 } 5694 }); 5695} 5696 5697/** 5698 * Open the Profiling Drawer 5699 * @param {Event} e Event Initiator 5700 * @param {boolean} includeIncompleteCTA Query param to include the incompleteProfileCTA 5701 */ 5702function openNewDrawer(e, includeIncompleteCTA) { 5703 var profilingDrawerUrl = window.resources.progressiveProfiling.profilingStepsUrl; 5704 if (includeIncompleteCTA) { 5705 profilingDrawerUrl += '?includeIncompleteCTA=true'; 5706 } 5707 var $profilingDrawer = getProfilingDrawer(e, profilingDrawerUrl); 5708 $profilingDrawer.on('contentAsyncLoaded.drawer', function () { 5709 var $wizardContainer = $profilingDrawer.find('.js-profiling-wizard'); 5710 initProfilingWizard($wizardContainer); 5711 }).on('click', '.js-profiling-drawer-close', function () { 5712 $profilingDrawer.close(); 5713 }); 5714} 5715 5716/** 5717 * Opens the Preference Drawer for editing 5718 * @param {Event} e Event Initiator 5719 */ 5720function openEditPreferenceDrawer(e) { 5721 var preferenceKey = $(e.target).data('profile-preference-key'); 5722 var preferenceDrawerUrl = window.resources.progressiveProfiling.profilingEditPreferenceUrl + '?profilePreferenceKey=' + preferenceKey; 5723 var $singlePreferenceDrawer = getProfilingDrawer(e, preferenceDrawerUrl); 5724 if (typeof _satellite !== 'undefined') { 5725 _satellite.track('formStart', { 5726 dataStepId: preferenceKey 5727 }); 5728 } 5729 5730 // Add event listeners 5731 $singlePreferenceDrawer.one('progressiveProfiling:stepCompleted', function () { 5732 location.reload(); 5733 }).on('click', '.js-profiling-submit-preference', function () { 5734 submitProfilingData($(this).closest('.wizard__step')); 5735 if (typeof _satellite !== 'undefined') { 5736 _satellite.track('formComplete', { 5737 dataStepId: preferenceKey 5738 }); 5739 } 5740 $.spinner().start(); 5741 }); 5742} 5743module.exports = {
5744 init: function init() { 5745 $(document).on('click', '.js-profiling-drawer-open, .my-account-content .js-profiling-wiz-start', function (e) { 5746 e.preventDefault(); 5747 openNewDrawer(e, false); 5748 }).on('click', '.account-drawer .js-profiling-wiz-start', function (e) { 5749 loadProfilingStepsIntoExistingWizard(e); 5750 }).on('click', '.js-profiling-edit-preference', function (e) { 5751 openEditPreferenceDrawer(e); 5752 }) 5753 // Sets progress alert before entering account drawer to handle mobile menu profile icon experience 5754 .on('mobileMenu:show', function () { 5755 setProflingProgressAlert(); 5756 }); 5757 5758 // On successful Account Registration, load the Profiling Drawer 5759 if (window.resources && window.resources.progressiveProfiling && window.resources.progressiveProfiling.profilingEnabled && sessionStorage.getItem('isFirstLogin') && !sessionStorage.getItem('reloaded')) { 5760 openNewDrawer(null, true); 5761 } 5762 5763 // A step has been updated, progress should be updated 5764 $(document).on('progressiveProfiling:stepCompleted', '.js-profiling-container', function () { 5765 var $profilingProgress = $('.js-profiling-progress'); 5766 var percentComplete = $profilingProgress.data('progress'); 5767 5768 // Update each progress indicator on the page 5769 $profilingProgress.each(function (i, progress) { 5770 progress.updateProgress({ 5771 progress: percentComplete, 5772 color: '#238832' 5773 }); 5774 }); 5775 5776 // If we complete all steps, remove any CTAs 5777 if (percentComplete >= 1) { 5778 var profilingCTA = $('.js-profiling-cta'); 5779 profilingCTA.remove(); 5780 } 5781 }); 5782 5783 // Initialize the CPIs on load 5784 $('.progress.js-profiling-progress').each(function (i, cpi) { 5785 initProfilingCpi($(cpi)); 5786 }); 5787 }, 5788 initProfilingCpi: initProfilingCpi 5789}; 5790 5791/***/ }), 5792
5793/***/ "./.tmp/app_col_eu_core/js/components/reservationTimer.js": 5794/*!****************************************************************!*\ 5795 !*** ./.tmp/app_col_eu_core/js/components/reservationTimer.js ***! 5796 \****************************************************************/ 5797/*! no static exports found */ 5798/***/ (function(module, exports) { 5799 5800var dangerZone = 60; // change to a danger theme at this time. 5801var messageBufferTime = 5; // time to account for page loading when time passes. 5802var reservationTimerId = 'reservationTimer'; 5803var reservationTimerIdSelector = "#".concat(reservationTimerId); 5804var dismissibleStates = ['reservation_expired', 'reservation_update_quantity', 'reservation_edit']; 5805var getExpireTime = function getExpireTime() { 5806 return $(reservationTimerIdSelector).data('expireTime') || 0; 5807}; 5808var calculateNewExpireTime = function calculateNewExpireTime() { 5809 return new Date().getTime() + parseInt(window.resources.reservation.reservationSecondsRemaining * 1000, 10); 5810}; 5811var destroyTimer = function destroyTimer() { 5812 var $timerBanner = $(reservationTimerIdSelector); 5813 var reservationInterval = $timerBanner.data('reservationInterval'); 5814 clearInterval(reservationInterval); 5815 $timerBanner.data('reservationInterval', null); 5816 $timerBanner.data('expireTime', null); 5817 if (window.resources && window.resources.reservation && window.resources.reservation.reservationSecondsRemaining) { 5818 delete window.resources.reservation.reservationSecondsRemaining; 5819 } 5820 if ($timerBanner && $timerBanner.length) { 5821 $timerBanner.trigger('close'); 5822 } 5823}; 5824var getRemainingSeconds = function getRemainingSeconds() { 5825 var expireTime = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getExpireTime(); 5826 var now = new Date().getTime(); 5827 var secondsRemaining = parseInt((expireTime - now) / 1000, 10); 5828 return secondsRemaining; 5829}; 5830var popBanners = function popBanners() { 5831 if (window.resources && window.resources.reservation && window.resources.reservation.messages) { 5832 var remainingSeconds = getRemainingSeconds(); 5833 // check each message for a matching time. 5834 var msgKeys = Object.keys(window.resources.reservation.messages); 5835 for (var i = 0; i < msgKeys.length; i++) { 5836 var msgKey = msgKeys[i]; 5837 var msg = window.resources.reservation.messages[msgKey]; 5838 var startTime = typeof msg.startTime !== 'undefined' ? msg.startTime : remainingSeconds; // display it immediately if startTime is undefined. 5839 var endTime = startTime - messageBufferTime; 5840 if (remainingSeconds <= startTime && remainingSeconds > endTime || typeof msg.startTime === 'undefined') { 5841 // show the banner: 5842 var html = "<p class=\"font-weight-bold\">".concat(msg.title, "</p>\n <p>").concat(msg.message, "</p>\n ").concat(msg.additionalContent || ''); 5843 $.alert({ 5844 content: html, 5845 placement: 'toast', 5846 theme: msg.theme, 5847 id: msgKey, 5848 containerId: 'reservationBannerContainer', 5849 timeToLive: 13000, 5850 dismissible: dismissibleStates.includes(msgKey) 5851 }); 5852 // we've used the message, so remove it from the list 5853 delete window.resources.reservation.messages[msgKey]; 5854 } 5855 } 5856 } 5857}; 5858var createTimeString = function createTimeString(remainingSeconds) { 5859 var mins = Math.floor(remainingSeconds / 60); 5860 var secs = remainingSeconds % 60; 5861 if (secs < 10) { 5862 secs = '0' + secs; // convert to a string so we can have two digits. 9 => '09' 5863 } 5864 5865 return "".concat(mins, ":").concat(secs); 5866}; 5867var updateReservationTimer = function updateReservationTimer() { 5868 var remainingSeconds = getRemainingSeconds(); 5869 if (remainingSeconds >= 0) { 5870 $('.reservation__time').text(createTimeString(remainingSeconds)); 5871 if (remainingSeconds <= dangerZone) { 5872 // change the theme from 'info' to 'danger' 5873 $("".concat(reservationTimerIdSelector, ".alert--info")).toggleClass('alert--info alert--warning').find('.alert__icon use').attr('href', '#warning'); 5874 } else { 5875 $("".concat(reservationTimerIdSelector, ".alert--warning")).toggleClass('alert--info alert--warning').find('.alert__icon use').attr('href', '#info_outline'); 5876 } 5877 popBanners(); 5878 } else { 5879 destroyTimer(); 5880 } 5881}; 5882var startTimer = function startTimer() { 5883 var $timerBanner = $(reservationTimerIdSelector); 5884 var expireTime = calculateNewExpireTime(); 5885 if (!$timerBanner || !$timerBanner.length) { 5886 // $timerBanner might be undefined, empty jquery object (truthy), or a valid jquery object (length 1) 5887 var remainingSeconds = getRemainingSeconds(expireTime); 5888 if (remainingSeconds >= 0) { 5889 // when remainingSeconds === 0, we still want to display '0:00' 5890 var initialTimeStr = createTimeString(remainingSeconds); 5891 var timeRemainingMessage = window.resources.reservation.timeRemainingMessage; 5892 var reservationInterval = setInterval(updateReservationTimer, 1000); 5893 var isInDangerZone = window.resources.reservation.reservationSecondsRemaining <= dangerZone; 5894 $.alert({ 5895 content: "<div class=\"reservation-timer\">".concat(timeRemainingMessage, " <strong class=\"reservation__time\">").concat(initialTimeStr, "</strong></div><div class=\"mt-2\">").concat(window.resources.reservation.checkoutNowMessage, "</div>"), 5896 placement: 'toast', 5897 theme: isInDangerZone ? 'warning' : 'info', 5898 icon: isInDangerZone ? 'warning' : 'info_outline', 5899 id: reservationTimerId, 5900 containerId: 'reservationBannerContainer', 5901 autoClose: false,
5902 dismissible: false 5903 }).data('reservationInterval', reservationInterval).data('expireTime', expireTime); 5904 } 5905 } else { 5906 $timerBanner.data('expireTime', expireTime); 5907 } 5908}; 5909var init = function init() { 5910 if (window.resources && window.resources.reservation && window.resources.reservation.reservationSecondsRemaining) { 5911 startTimer(); 5912 } 5913 // remove any existing banners. 5914 $('#reservationBannerContainer').find('.alert').not(reservationTimerIdSelector).remove(); 5915 popBanners(); 5916}; 5917var updateReservationData = function updateReservationData(response) { 5918 if (response && response.reservation) { 5919 if (window.resources) { 5920 if (window.resources.reservation) { 5921 window.resources.reservation.messages = $.extend({}, window.resources.reservation.messages, response.reservation.messages); 5922 window.resources.reservation.reservationSecondsRemaining = response.reservation.reservationSecondsRemaining; 5923 $(reservationTimerIdSelector).data('remainingSeconds', parseInt(response.reservation.reservationSecondsRemaining, 10)); 5924 } else { 5925 window.resources.reservation = response.reservation; 5926 } 5927 } else { 5928 window.resources = { 5929 reservation: response.reservation 5930 }; 5931 } 5932 init(); 5933 } 5934}; 5935var getDestroyTimer = function getDestroyTimer() { 5936 return destroyTimer; 5937}; 5938module.exports = { 5939 init: init, 5940 getDestroyTimer: getDestroyTimer, 5941 updateReservationData: updateReservationData 5942}; 5943 5944/***/ }), 5945
5946/***/ "./.tmp/app_col_eu_core/js/components/rewardsTracker.js": 5947/*!**************************************************************!*\ 5948 !*** ./.tmp/app_col_eu_core/js/components/rewardsTracker.js ***! 5949 \**************************************************************/ 5950/*! no static exports found */ 5951/***/ (function(module, exports, __webpack_require__) { 5952 5953"use strict"; 5954 5955 5956/** 5957 * Show the Tier Expiration Warning message if the user's expiration date is within 30 days 5958 */ 5959function showTierExpirationWarning() { 5960 var $expirationWarning = $('.js-tier-expiration-warning'); 5961 // expiration warning will not be present if user is not in an expirable tier 5962 if (!$expirationWarning.length) { 5963 return; 5964 } 5965 var expirationDate = new Date($expirationWarning.data('tier-expiration-date')); 5966 var alertPeriod = $expirationWarning.data('tier-expiration-alert-period'); 5967 var timeDiff = (expirationDate - new Date()) / (1000 * 3600 * 24); // convert millis to days 5968 if (timeDiff <= alertPeriod && timeDiff > 0) { 5969 // inbetween expiration date and 30 till 5970 $expirationWarning.removeClass('d-none'); 5971 } 5972} 5973 5974/** 5975 * Loads Rewards Tracker StepBar 5976 * @param {Object} $container - jQuery container object 5977 */ 5978function loadRewardsTracker($container) { 5979 // eslint-disable-next-line no-param-reassign 5980 $container = $container && $container.length ? $container : $(document); 5981 var $rewardsTracker = $container.find('.js-rewards-tracker'); 5982 if ($rewardsTracker.length) { 5983 // Initialize the Rewards Tracker Circular Progress Indicator 5984 if ($('.rewards-tracker__redemption-progress').length) { 5985 $rewardsTracker.find('.progress').progressArc(); 5986 } 5987 showTierExpirationWarning(); 5988 } 5989} 5990module.exports = { 5991 loadRewardsTracker: loadRewardsTracker 5992}; 5993 5994/***/ }), 5995
5996/***/ "./.tmp/app_col_eu_core/js/components/search.js": 5997/*!******************************************************!*\ 5998 !*** ./.tmp/app_col_eu_core/js/components/search.js ***! 5999 \******************************************************/ 6000/*! no static exports found */ 6001/***/ (function(module, exports, __webpack_require__) { 6002 6003"use strict"; 6004 6005 6006var baseSearch = __webpack_require__(/*! brand_core/components/search */ "./cartridges/app_brand_core/cartridge/client/default/js/components/search.js"); 6007 6008/** 6009 * Search event key handler 6010 */ 6011function suggestionKeyHandler() { 6012 $('input.js-search-field').each(function () { 6013 var tabKey = 9; 6014 var timeout = null; 6015 $(this).on('keyup', function (e) { 6016 if (e.which !== tabKey) { 6017 clearTimeout(timeout); 6018 // Make a new timeout set to go off in 800ms 6019 timeout = setTimeout(function () { 6020 return baseSearch.getSuggestions(e.target); 6021 }, 500); 6022 } 6023 }); 6024 }); 6025} 6026 6027/** 6028 * Tear down search and close popover 6029 * @param {jQuery} $target jquery reference to target element 6030 */ 6031function tearDownSearch($target) { 6032 if ($target && $target.hasClass('js-action-search-close')) { 6033 $('.js-search-suggestions').empty(); 6034 $('.js-search-field').val(''); 6035 } 6036 $.enableScroll(); 6037} 6038 6039/** 6040 * New brand new search UI functions 6041 */ 6042 6043/** 6044 * Clear text in search box and show default quick link 6045 */ 6046function clearSearchBoxandSuggestions() { 6047 $('.js-search-field').val('').trigger('input'); 6048 $('.js-search-suggestions').empty(); 6049 $('.js-search-quicklinks').removeClass('d-none'); 6050} 6051 6052/** 6053 * close function for desktop and mobile popover 6054 */ 6055function closeSearchPopover() { 6056 $('.js-site-header').removeClass('search-suggestion-open'); 6057 $('.js-header-search').addClass('d-none'); 6058 $.enableScroll(); 6059} 6060 6061/** 6062 * New brand design search events 6063 */ 6064function searchBrandNewEvents() { 6065 var searchCloseTimeout; 6066 6067 // Function for open search suggestion form 6068 $('.js-header-search-icon').on('click', function (e) { 6069 e.preventDefault(); 6070 $('.js-header-search').removeClass('d-none'); 6071 $('.js-search-field').trigger('focus'); 6072 $('.js-site-header').addClass('search-suggestion-open'); 6073 $.disableScroll(); 6074 }); 6075 6076 // Function for close timeout when mouseenter from suggestion 6077 $('.js-header-search, .suggestions__item').on('mouseenter', function () { 6078 clearTimeout(searchCloseTimeout); 6079 }); 6080 6081 // Function for close search suggestion form when mouse leave from suggestion 6082 $('.js-header-search, .suggestions__item').on('mouseleave', function () { 6083 searchCloseTimeout = setTimeout(function () { 6084 closeSearchPopover(); 6085 }, 300); 6086 }); 6087 6088 // close mobile search popover 6089 $('.js-action-search-close').on('click', function (e) { 6090 e.preventDefault(); 6091 closeSearchPopover(); 6092 }); 6093 6094 // Clear text in search box 6095 $('.js-action-search-clear').on('click', function (e) { 6096 e.preventDefault(); 6097 clearSearchBoxandSuggestions(); 6098 }); 6099 6100 // trigger text box for rest button 6101 $('.js-search-field').on('input', function () { 6102 if ($(this).val().length > 0) { 6103 $('.js-action-search-clear').removeClass('d-none').addClass('d-block'); 6104 } else { 6105 $('.js-action-search-clear').removeClass('d-block').addClass('d-none'); 6106 } 6107 }); 6108} 6109 6110/** 6111 * Initialize functions 6112 */ 6113function init() { 6114 baseSearch.keyboardNav.init(); 6115 baseSearch.searchEvents(); 6116 searchBrandNewEvents(); 6117 closeSearchPopover(); 6118 clearSearchBoxandSuggestions(); 6119} 6120module.exports = function () { 6121 // Override for columbia 6122 baseSearch.suggestionKeyHandler = suggestionKeyHandler; 6123 baseSearch.tearDownSearch = tearDownSearch; 6124 init(); 6125}; 6126 6127/***/ }), 6128
6129/***/ "./.tmp/app_col_eu_core/js/components/spinner.js": 6130/*!*******************************************************!*\ 6131 !*** ./.tmp/app_col_eu_core/js/components/spinner.js ***! 6132 \*******************************************************/ 6133/*! no static exports found */ 6134/***/ (function(module, exports, __webpack_require__) { 6135 6136"use strict"; 6137 6138 6139var customSpinnerJS = __webpack_require__(/*! ./custom/spinnerCustom */ "./.tmp/app_col_eu_core/js/components/custom/spinnerCustom.js"); 6140module.exports = function () { 6141 customSpinnerJS.addSpinner(); 6142 customSpinnerJS.removeSpinner(); 6143}; 6144 6145/***/ }), 6146
6147/***/ "./.tmp/app_col_eu_core/js/components/utils.js": 6148/*!*****************************************************!*\ 6149 !*** ./.tmp/app_col_eu_core/js/components/utils.js ***! 6150 \*****************************************************/ 6151/*! no static exports found */ 6152/***/ (function(module, exports, __webpack_require__) { 6153 6154"use strict"; 6155/* WEBPACK VAR INJECTION */(function(global) { 6156 6157// TODO: https://columbia.atlassian.net/browse/GSD-16533 Update URL functions to use the JS URL API 6158/** 6159 * Append a parameter to a url 6160 * @param {string} url - a url 6161 * @param {string} name - key 6162 * @param {string} value - value 6163 * @return {string} url with param appended 6164 */ 6165function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 6166function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } 6167function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } 6168function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } 6169function appendParamToURL(url, name, value) { 6170 var c = '?'; 6171 if (url.indexOf(c) !== -1) { 6172 c = '&'; 6173 } 6174 return url + c + name + '=' + encodeURIComponent(value); 6175} 6176 6177/** 6178 * Helper function for getParamsFromURL. Split a url string into key/value pairs. 6179 * @param {string} str - url parameter string 6180 * @return {Object} object with params split into key/value pairs 6181 */ 6182function keyValueArray(str) { 6183 var kvp = str.split('&'); 6184 var x; 6185 var k; 6186 var v; 6187 var output = {}; 6188 for (var i = kvp.length - 1; i >= 0; i--) { 6189 if (kvp[i].length) { 6190 // No empty strings... 6191 x = kvp[i].split('='); 6192 k = x[0]; 6193 v = ''; 6194 if (x.length > 1) { 6195 v = x[1]; 6196 } 6197 output[k] = v; 6198 } 6199 } 6200 return output; 6201} 6202 6203/** 6204 * Split a url string into key/value pairs. 6205 * @param {string} url - url parameter string 6206 * @return {Object} object with params split into key/value pairs 6207 */ 6208function getParamsFromURL(url) { 6209 var arr = url.split('?'); 6210 var search = ''; 6211 var searchHash = ''; 6212 var postHash = false; 6213 if (arr.length > 1) { 6214 var arrHash = arr[1].split('#'); 6215 search = arrHash[0]; 6216 if (arrHash.length > 1) { 6217 postHash = true; 6218 searchHash = arrHash[1]; 6219 } 6220 } 6221 var output = {}; 6222 if (search.length) { 6223 output = keyValueArray(search); 6224 } 6225 if (postHash) { 6226 if (searchHash.length) { 6227 var output2 = keyValueArray(searchHash); 6228 Object.keys(output2).forEach(function (prop) { 6229 output[prop] = output2[prop]; // Merge them... 6230 }); 6231 } 6232 } 6233 6234 return output; 6235} 6236 6237/** 6238 * Update an existing url param
6239 * https://stackoverflow.com/questions/1090948/change-url-parameters 6240 * @param {string} url - Url to be updated 6241 * @param {string} param - param to be updated 6242 * @param {string} paramVal - new parameter value 6243 * @returns {string} - updated url 6244 */ 6245function updateURLParam(url, param, paramVal) { 6246 var newAdditionalURL = ''; 6247 var tempArray = url.split('?'); 6248 var baseURL = tempArray[0]; 6249 var additionalURL = tempArray[1]; 6250 var temp = ''; 6251 if (additionalURL) { 6252 tempArray = additionalURL.split('&'); 6253 for (var i = 0; i < tempArray.length; i++) { 6254 if (tempArray[i].split('=')[0] !== param) { 6255 newAdditionalURL += temp + tempArray[i]; 6256 temp = '&'; 6257 } 6258 } 6259 } 6260 var rowsText = temp + '' + param + '=' + paramVal; 6261 return baseURL + '?' + newAdditionalURL + rowsText; 6262} 6263 6264/** 6265 * Turn the URL query string into a JSON object to make it easier to add/update/delete key/value pairs. 6266 * @param {string} url the URL string from which to get the querystring. Null or empty string to use the location.href. 6267 * @returns {obejct} the query string as an object. 6268 */ 6269function queryStringToObject(url) { 6270 var search; 6271 if (!url) { 6272 // get the query string from window.location.search 6273 search = location.search.substring(1); // exclude the leading ? 6274 } else { 6275 // find the query string in the given url 6276 var startIndex = url.indexOf('?') + 1; 6277 var endIndex = url.indexOf('#'); 6278 endIndex = endIndex >= startIndex ? endIndex : url.length; 6279 // examples: 6280 // 'key=val#hash', '/?key=val#hash' => 'key=val' 6281 // '?key#hash' => 'key' 6282 search = url.substring(startIndex, endIndex); 6283 if (startIndex === 0 && search.indexOf('=') === -1) { 6284 // this string doesn't look like a query string (no '?' and no '=') 6285 // examples: 'key#hash', '/#hash' 6286 search = ''; 6287 } 6288 } 6289 var result = {}; 6290 if (search) { 6291 var pairs = search.split('&'); 6292 pairs.forEach(function (pair) { 6293 var nameVal = pair.split('='); 6294 result[nameVal[0]] = decodeURIComponent(nameVal[1] || ''); 6295 }); 6296 } 6297 return JSON.parse(JSON.stringify(result)); 6298} 6299 6300/** 6301 * Convert an object into a serialized string; the opposite of queryStringToObject(). 6302 * @param {Object} obj The object to be serialized into a string 6303 * @param {string} urlString An optional url into which to insert the querystring. Any existing query string will be replaced. 6304 * @returns {string} The resulting query or URL string. 6305 */ 6306function objectToQueryString(obj, urlString) { 6307 var url = urlString || ''; 6308 var path = ''; 6309 var hash = ''; 6310 if (url) { 6311 var qsIndex = url.indexOf('?'); 6312 var hashIndex = url.indexOf('#'); 6313 var index; 6314 if (hashIndex > -1) { 6315 index = hashIndex; 6316 hash = url.substring(hashIndex); 6317 } 6318 if (qsIndex > -1) { 6319 index = qsIndex; 6320 } 6321 path = url.substring(0, index); // if index is undefined, path is the entire string. 6322 } 6323 6324 return path + '?' + $.param(obj) + hash; 6325} 6326 6327/** 6328 * Update a URL with a key/value pair. This will insert or update a pair. 6329 * @param {string} url The url to be updated. 6330 * @param {string} name The key name to use in the query string. 6331 * @param {string} val The value of the key to be set. 6332 * @returns {string} The updated URL. 6333 */ 6334function setUrlKeyValue(url, name, val) { 6335 var qs = queryStringToObject(url); 6336 qs[name] = encodeURIComponent(val); 6337 return objectToQueryString(qs, url); 6338} 6339 6340/** 6341 * Update a URL with multiple key/value pairs. This will insert new or update existing keys. 6342 * @param {string} url The url to be updated. 6343 * @param {Object} obj an object of name/value pairs to be inserted/updated in the url query string. 6344 * @returns {string} The updated URL. 6345 */ 6346function setUrlData(url, obj) { 6347 var qs = queryStringToObject(url); 6348 var mergedQs = $.extend({}, qs, obj); 6349 return objectToQueryString(mergedQs, url); 6350} 6351 6352/** 6353 * DecodeURIComponent cannot be used directly to parse query parameters from a URL. It needs a bit of preparation. 6354 * reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent 6355 * @param {string} val The query param value to be decoded. 6356 * @returns {string} The decoded query param value. 6357 */ 6358function decodeQueryParam(val) { 6359 return decodeURIComponent(val.replace(/\+/g, ' ')); 6360} 6361 6362/** 6363 * Remove the queryparam from the url 6364 * @param {string} queryparam queryparam to be removed 6365 * @param {string} urlString url to be manipulated 6366 * @returns {URL} new url without provided queryparam 6367 */ 6368function removeQueryParam(queryparam, urlString) { 6369 var url = new URL(urlString); 6370 url.searchParams.delete(queryparam); 6371 return url; 6372} 6373
6374/** 6375 * Remove the queryparam from the url, and replace the state 6376 * @param {string} queryparam queryparam to be removed 6377 */ 6378function removeQueryParamFromCurrentUrl(queryparam) { 6379 var url = removeQueryParam(queryparam, window.location.href); 6380 history.replaceState(null, '', url); 6381} 6382 6383/** 6384 * Returns an array with values that exist in both arrays 6385 * @param {array} a1 - Array 6386 * @param {array} a2 - Array 6387 * @return {array} - Values that appear in both arrays 6388 */ 6389function arrayIntersection(a1, a2) { 6390 var intersect = $.map(a1, function (v) { 6391 return $.inArray(v, a2) < 0 ? null : v; 6392 }); 6393 return intersect; 6394} 6395 6396/** 6397 * Creates and returns the markup required to display a modal. 6398 * The calling script should then use the bootstrap $.modal() method to display the modal. 6399 * Example 1: 6400 * var modalMarkup = createModalMarkup('<p>Hello World</p>', {title: 'Greeting'}); 6401 * var $modal = $(modalMarkup).modal(); 6402 * Example 2: 6403 * var $modal = $(createModalMarkup('')); // create empty modal 6404 * $modal.find('.modal-body').html(data); // inject content into the returned markup 6405 * $modal.modal(); 6406 * @param {string} content The content to put in the modal. Pass empty string to just get the modal markup. 6407 * @param {Object} options Additional settings. 6408 * @return {string} The completed markup. 6409 */ 6410function createModalMarkup() { 6411 var content = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; 6412 var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 6413 /* Bootstrap Modal documentation: https://getbootstrap.com/docs/4.0/components/modal/ */ 6414 var defaults = { 6415 title: '', 6416 showCloseBtn: true, 6417 enableLayeredDrawers: false, 6418 modalSizeClass: 'modal-lg',
6419 // possible values: modal-sm, modal-md (or empty string), modal-lg, modal-fluid 6420 centeredClass: '', 6421 // pass modal-dialog-centered to center the modal 6422 customClasses: '', 6423 // additional classes to be added to the modal 6424 modalId: '', 6425 // Custom id for the modal 6426 buttons: [ 6427 // example markup (this will also dismiss the modal on click): 6428 // '<button class="btn btn-secondary" data-dismiss="modal">Cancel</button>' 6429 ] 6430 }; 6431 var settings = $.extend({}, defaults, options); 6432 6433 // additional uncommon bootstrap options go into data attributes 6434 var dataAttributes = []; 6435 ['backdrop', 'keyboard', 'focus', 'show'].forEach(function (param) { 6436 if (settings[param] !== undefined) { 6437 dataAttributes.push("data-".concat(param, "=\"").concat(settings[param], "\"")); 6438 } 6439 }); 6440 var header = '<div class="modal-header">'; 6441 if (settings.title) { 6442 header += "<div class=\"modal-title\">".concat(settings.title, "</div>"); 6443 } 6444 if (settings.showCloseBtn) { 6445 header += '<button type="button" class="close btn btn-icon" data-dismiss="modal" aria-label="Close"><svg><use href="#close"></use></svg></button>'; 6446 } 6447 header += '</div>'; 6448 var idAttribute = ''; 6449 if (settings.modalId) { 6450 idAttribute = "id=\"".concat(settings.modalId, "\""); 6451 } 6452 var footer = ''; 6453 var footerBtns = ''; 6454 var _iterator = _createForOfIteratorHelper(settings.buttons), 6455 _step; 6456 try { 6457 for (_iterator.s(); !(_step = _iterator.n()).done;) { 6458 var btn = _step.value; 6459 footerBtns += btn; 6460 } 6461 } catch (err) { 6462 _iterator.e(err); 6463 } finally { 6464 _iterator.f(); 6465 } 6466 if (footerBtns) { 6467 footer = "<div class=\"modal-footer\">".concat(footerBtns, "</div>"); 6468 } 6469 6470 // tabindex="-1" is necessary to allow the modal to close when ESC key is pressed. 6471 // https://stackoverflow.com/questions/12630156/how-do-you-enable-the-escape-key-close-functionality-in-a-twitter-bootstrap-moda 6472 var html = "<div class=\"modal fade ".concat(settings.customClasses, "\" ").concat(idAttribute, "\n ").concat(dataAttributes.join(' '), "\n role=\"dialog\" aria-hidden=\"true\" ").concat(!settings.enableLayeredDrawers ? 'tabindex="-1"' : '', ">\n <div class=\"modal-dialog ").concat(settings.centeredClass, " ").concat(settings.modalSizeClass, "\">\n <div class=\"modal-content\">\n ").concat(header, "\n <div class=\"modal-body\">\n ").concat(content, "\n </div>\n ").concat(footer, "\n </div>\n </div>\n </div>"); 6473 return html; 6474} 6475/** 6476 * Creates a backdrop element and appends it to the body tag. 6477 * @param {string} customClass An optional class to apply to the backdrop. 6478 */ 6479function createBackdrop(customClass) { 6480 var cls = customClass || ''; 6481 var html = '<div class="backdrop ' + cls + '"></div>'; 6482 $('body').append(html); 6483} 6484 6485/** 6486 * Removes from the page the backdrop with the passed in class, or all backdrops if nothing is passed. 6487 * @param {string} customClass An optional class for selecting a backdrop to be removed. All will be removed if this is null. 6488 */ 6489function removeBackdrop(customClass) { 6490 var selector = '.backdrop' + (customClass ? '.' + customClass : ''); 6491 $('body').find(selector).remove(); 6492} 6493 6494/** 6495 * display element in viewport 6496 * @param {string} el element in viewport 6497 * @param {string} offsetToTop off set top position 6498 * @return {boolean} element view port 6499 */ 6500function elementInViewport(el, offsetToTop) { 6501 var top = el.offsetTop; 6502 var left = el.offsetLeft; 6503 var width = el.offsetWidth; 6504 var height = el.offsetHeight; 6505 while (el.offsetParent) { 6506 el = el.offsetParent; // eslint-disable-line no-param-reassign 6507 top += el.offsetTop; 6508 left += el.offsetLeft; 6509 } 6510 if (typeof offsetToTop !== 'undefined') { 6511 top -= offsetToTop; 6512 } 6513 if (window.pageXOffset !== null) { 6514 return top < window.pageYOffset + window.innerHeight && left < window.pageXOffset + window.innerWidth && top + height > window.pageYOffset && left + width > window.pageXOffset; 6515 } 6516 if (document.compatMode === 'CSS1Compat') { 6517 return top < window.document.documentElement.scrollTop + window.document.documentElement.clientHeight && left < window.document.documentElement.scrollLeft + window.document.documentElement.clientWidth && top + height > window.document.documentElement.scrollTop && left + width > window.document.documentElement.scrollLeft; 6518 } 6519 return false;
6520} 6521 6522/** 6523 * append script to body tag 6524 * @param {string} src url of the script to append 6525 * @param {function} callback optional callback to fire after load 6526 */ 6527function loadScript(src, callback) { 6528 var script = document.createElement('script'); 6529 script.type = 'text/javascript'; 6530 script.src = src; 6531 document.getElementsByTagName('body')[0].appendChild(script); 6532 if (callback) { 6533 script.onload = callback; 6534 } 6535} 6536 6537/** 6538 * load script to DOM if document ready state is complete or load after window load 6539 * @param {string} src url of the script to append 6540 * @param {function} callback optional callback to fire after load 6541 */ 6542function loadJsAfterWindowLoad(src, callback) { 6543 if (document.readyState === 'complete') { 6544 loadScript(src, callback); 6545 } else { 6546 window.addEventListener('load', function () { 6547 loadScript(src, callback); 6548 }); 6549 } 6550} 6551 6552/** 6553 * Inserts pasted text at cursor location in input or textarea elements. 6554 * If a range of text is selected in the input, that range will be replaced by the new text 6555 * If no text in the input is selected, the string will be inserted at the end 6556 * @param {selector} formInput - DOM element for the target form input 6557 * @param {string} str - string to insert into the form 6558 */ 6559function insertAtInputCursor(formInput, str) { 6560 var input = formInput; 6561 var start = input.selectionStart; 6562 var end = input.selectionEnd; 6563 6564 // Inserts str between selection start and end positions 6565 input.value = input.value.substring(0, start) + str + input.value.substring(end); 6566 // Update cursor position 6567 input.selectionStart = start + str.length; 6568 input.selectionEnd = input.selectionStart; 6569} 6570 6571/** 6572 * Returns validity of date 6573 * @param {string} stageMessage The name of the stage we're going to. 6574 * @returns {string} Returns true if the day is within the month. Returns false if it is an invalid date. 6575 */ 6576function getTimeAndHours(stageMessage) { 6577 var date = new Date(); 6578 var hours = date.getHours(); 6579 var minutes = date.getMinutes(); 6580 var ampm = hours >= 12 ? 'PM' : 'AM'; 6581 hours %= 12; 6582 hours = hours || 12; // the hour '0' should be '12' 6583 minutes = minutes < 10 ? '0' + minutes : minutes; 6584 var strTime = hours + ':' + minutes + ' ' + ampm; 6585 return stageMessage + ' ' + strTime; 6586} 6587// intentionally export loadJsAfterWindowLoad onto global scope 6588global.cscUtils = global.cscUtils || {}; 6589global.cscUtils.loadJsAfterWindowLoad = loadJsAfterWindowLoad; 6590 6591/** 6592 * Converts a string to Title Case. 6593 * @example 6594 * 'fRiEnDsHiP is MAGIC' -> 'Friendship Is Magic' 6595 * 'don't uppercase contractions' -> 'Don't Uppercase Contractions' 6596 * 'hyphenated-strings work too' -> 'Hyphenated-Strings Work Too' 6597 * @param {string} str The string to be title cased. 6598 * @returns {string}
6598 The original string in title case. 6599 */ 6600function stringToTitleCase(str) { 6601 return str.replace(/[^\s/-]+/g, function (word) { 6602 return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase(); 6603 }); 6604} 6605 6606/** Function to heapify a subtree rooted with node ndx 6607 * @param {Array} list - The array to heapify 6608 * @param {number} ndx - The index of the root of the subtree to heapify 6609 * @param {number} heapSize - The size of the heap 6610 * @param {string} key - The object key to find the highest numbers for 6611 */ 6612function heapify(list, ndx, heapSize, key) { 6613 var largest = ndx; 6614 // eslint-disable-next-line @stylistic/js/no-mixed-operators 6615 var left = 2 * ndx + 1; 6616 // eslint-disable-next-line @stylistic/js/no-mixed-operators 6617 var right = 2 * ndx + 2; 6618 6619 // Check if left child is larger than root 6620 if (left < heapSize && list[left][key] > list[largest][key]) { 6621 largest = left; 6622 } 6623 6624 // Check if right child is larger than root 6625 if (right < heapSize && list[right][key] > list[largest][key]) { 6626 largest = right; 6627 } 6628 6629 // If largest is not root 6630 if (largest !== ndx) { 6631 // Swap array[i] and array[largest] 6632 // eslint-disable-next-line no-param-reassign 6633 var _ref = [list[largest], list[ndx]]; 6634 list[ndx] = _ref[0]; 6635 list[largest] = _ref[1]; 6636 // Recursively heapify the affected sub-tree 6637 heapify(list, largest, heapSize, key); 6638 } 6639} 6640 6641/** Function to heapify the array into max heap 6642 * @param {Array} list - The array to heapify 6643 * @param {string} key - The object key to find the highest numbers for 6644 */ 6645function heapifyMax(list, key) { 6646 var arrayLength = list.length; 6647 6648 // Build max heap 6649 for (var ndx = Math.floor(arrayLength / 2) - 1; ndx >= 0; ndx--) { 6650 heapify(list, ndx, arrayLength, key); 6651 } 6652 for (var _ndx = arrayLength - 1; _ndx > 0; _ndx--) { 6653 var firstListItem = list[0]; 6654 // eslint-disable-next-line no-param-reassign 6655 list[0] = list[_ndx]; 6656 // eslint-disable-next-line no-param-reassign 6657 list[_ndx] = firstListItem; 6658 heapify(list, 0, _ndx, key); 6659 } 6660} 6661 6662/** Function to find the n highest numbers in an array 6663 * @param {Array} list - The array to find the n highest numbers in 6664 * @param {number} n - The number of highest numbers to find 6665 * @param {string} key - The object key to find the highest numbers for 6666 * @returns {Array} The n highest numbers 6667 */ 6668function findNHighest(list, n, key) { 6669 if (list.length < n) { 6670 // eslint-disable-next-line no-param-reassign 6671 n = list.length; 6672 } 6673 var listToUse = JSON.parse(JSON.stringify(list)); // Deep copy the list 6674 var result = []; 6675 6676 // Build max heap 6677 heapifyMax(listToUse, key); 6678 for (var i = 0; i < n; i++) { 6679 // Extract max element from the max heap 6680 result.push(listToUse.pop()); 6681 } 6682 return result; 6683} 6684 6685/** Function to compare two objects for deep equality 6686 * @param {Object} obj1 - The first object to compare 6687 * @param {Object} obj2 - The second object to compare 6688 * @returns {boolean} Whether the two objects are deep equal 6689 */ 6690function deepEqual(obj1, obj2) { 6691 return obj1 && obj2 && _typeof(obj1) === 'object' && _typeof(obj2) === 'object' ? Object.keys(obj1).length === Object.keys(obj2).length && Object.keys(obj1).reduce(function (isEqual, key) { 6692 return isEqual && deepEqual(obj1[key], obj2[key]); 6693 }, true) : obj1 === obj2; 6694} 6695module.exports = { 6696 appendParamToURL: appendParamToURL, 6697 keyValueArray: keyValueArray, 6698 getParamsFromURL: getParamsFromURL, 6699 updateURLParam: updateURLParam, 6700 arrayIntersection: arrayIntersection, 6701 createModalMarkup: createModalMarkup, 6702 queryStringToObject: queryStringToObject, 6703 objectToQueryString: objectToQueryString, 6704 removeQueryParam: removeQueryParam, 6705 removeQueryParamFromCurrentUrl: removeQueryParamFromCurrentUrl, 6706 createBackdrop: createBackdrop, 6707 removeBackdrop: removeBackdrop, 6708 setUrlKeyValue: setUrlKeyValue, 6709 setUrlData: setUrlData, 6710 decodeQueryParam: decodeQueryParam, 6711 elementInViewport: elementInViewport, 6712 loadJsAfterWindowLoad: loadJsAfterWindowLoad, 6713 insertAtInputCursor: insertAtInputCursor, 6714 stringToTitleCase: stringToTitleCase, 6715 getTimeAndHours: getTimeAndHours, 6716 findNHighest: findNHighest, 6717 deepEqual: deepEqual 6718}; 6719/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) 6720 6721/***/ }), 6722
6723/***/ "./.tmp/app_col_eu_core/js/components/video.js": 6724/*!*****************************************************!*\ 6725 !*** ./.tmp/app_col_eu_core/js/components/video.js ***! 6726 \*****************************************************/ 6727/*! no static exports found */ 6728/***/ (function(module, exports, __webpack_require__) { 6729 6730"use strict"; 6731 6732 6733__webpack_require__(/*! ../components/spinner */ "./.tmp/app_col_eu_core/js/components/spinner.js"); 6734var utils = __webpack_require__(/*! ../components/utils */ "./.tmp/app_col_eu_core/js/components/utils.js"); 6735window.Vimeo = __webpack_require__(/*! @vimeo/player */ "./node_modules/@vimeo/player/dist/player.es.js"); 6736var videoPlayer = null; // Youtube script is loaded async in JS 6737window.videoPlayers = {}; 6738 6739/** _________ 6740 * | | 6741 * | (>) | 6742 * |_________| 6743 * 6744 * <a class="js-video-player video-play-button" href="https://www.youtube.com/watch?v=JVq0GbCLIuU"> 6745 * <img src="https://via.placeholder.com/960x480" alt="Columbia's 80th Anniversary" /> 6746 * </a> 6747 * <div class="js-video-player video-play-button" data-video-id="JVq0GbCLIuU" data-host="youtube"> 6748 * <img src="https://via.placeholder.com/960x480" alt="Columbia's 80th Anniversary" /> 6749 * </div> 6750 * <a href="https://www.youtube.com/watch?v=JVq0GbCLIuU" class="js-video-modal video-play-button">...</a> 6751 * <a href="..." class="js-video-modal" data-video-id="JVq0GbCLIuU" data-host="youtube">...</a> 6752 */ 6753 6754var getVideoSource = function getVideoSource(el) { 6755 var host; 6756 var videoId; 6757 if (el.tagName.toLowerCase() === 'a') { 6758 // get host and video ID from href 6759 var hostName = el.hostname.toLowerCase(); 6760 var pathName = el.pathname; 6761 var queryStr = el.search; 6762 var pathTest; 6763 6764 // try to get the video provider from the domain 6765 // try to get the video id from the query string or path 6766 // URI might look like one of these: 6767 // * https://youtu.be/JVq0GbCLIuU 6768 // * https://www.youtube.com/embed/JVq0GbCLIuU 6769 // * https://www.youtube.com/watch?v=JVq0GbCLIuU 6770 // * https://vimeo.com/284409069 6771 // * https://player.vimeo.com/video/284409069 6772 if (hostName.indexOf('youtu') >= 0) { 6773 host = 'youtube'; 6774 6775 // query string -> object 6776 var params = {}; 6777 if (queryStr.length > 1) { 6778 queryStr = queryStr.substring(1); // remove the ? from the front 6779 params = utils.keyValueArray(queryStr); 6780 } 6781 if (params.v) { 6782 // look for video id in query string object 6783 videoId = params.v; 6784 } else { 6785 // look for video id in path 6786 pathName = pathName.replace('/embed', ''); 6787 pathTest = /^\/[a-z0-9]+$/i; // youtube ids are mixed-case alpha-numeric 6788 if (pathTest.test(pathName)) { 6789 videoId = videoId.substring(1); // remove the leading / 6790 } 6791 } 6792 } else if (hostName.indexOf('vimeo.com') >= 0) { 6793 host = 'vimeo'; 6794 6795 // look for video id in path 6796 pathName = pathName.replace('/video', ''); 6797 pathTest = /^\/[0-9]+$/; // vimeo ids are numeric only 6798 if (pathTest.test(pathName)) { 6799 videoId = pathName.substring(1); // remove the leading / 6800 } 6801 } else { 6802 // fall back to youtube 6803 host = 'youtube'; 6804 } 6805 } 6806 if (!host) { 6807 host = $(el).data('host'); 6808 } 6809 if (!videoId) { 6810 videoId = $(el).data('video-id'); 6811 } 6812 return { 6813 host: host, 6814 id: videoId 6815 }; 6816}; 6817var getVideo = function getVideo(host, videoId, width, height, options) { 6818 var defaults = { 6819 autoplay: 1, 6820 loop: 0, 6821 autopause: 0, 6822 transparent: true 6823 }; 6824 var params = $.extend({}, defaults, options); 6825 var queryString = $.param(params); 6826 var w = width || '100%'; 6827 var h = height || '100%'; 6828 if (host.toLowerCase() === 'youtube') { 6829 return '<iframe ' + 'id="ytPlayer_' + videoId + '" ' + 'class="video-player" ' + 'src="https://www.youtube.com/embed/' + videoId + '?enablejsapi=1&' + queryString + '&origin=' + window.location.origin + '" ' + 'width="' + w + '" height="' + h + '" ' + 'allow="autoplay; encrypted-media" ' + 'title="YouTube video player" ' + 'frameborder="0" ' + 'autohide="1" ' + 'allowfullscreen="1" ' + 'enablejsapi="true">' + '</iframe>'; 6830 } else if (host.toLowerCase() === 'vimeo') { 6831 return '<iframe ' + 'id="vimeoPlayer_' + videoId + '" ' + 'class="video-player" ' + 'src="https://player.vimeo.com/video/' + videoId + '?' + queryString + '" ' + 'width="' + w + '" height="' + h + '" ' + 'allow="autoplay; encrypted-media" ' + 'title="Vimeo video player" ' + 'frameborder="0" ' + 'webkitallowfullscreen mozallowfullscreen allowfullscreen>' + '</iframe>'; 6832 } 6833 6834 // if all else fails, return a generic iframe 6835 return '<iframe ' + 'id="videoPlayer_' + videoId + '" ' + 'class="video-player" ' + 'width="' + w + '" height="' + h + '" ' + 'allow="autoplay; encrypted-media" ' + 'title="Video Player" ' + 'frameborder="0" ' + 'allowfullscreen="1">' + '</iframe>'; 6836}; 6837var destroyModalMarkup = function destroyModalMarkup($modal) { 6838 $modal.remove(); 6839 // also remove the backdrop 6840 $('.modal-backdrop').remove(); 6841}; 6842var playVideoInFrame = function playVideoInFrame(host, videoId) { 6843 if (host.toLowerCase() === 'youtube') { 6844 var createYTPlayer = function createYTPlayer() { 6845 var $youTubeIframe = $('#' + videoId); 6846 var $imgContainer = $youTubeIframe.parent('.js-video-player'); 6847 6848 // create the player 6849 videoPlayer = new window.YT.Player(videoId, { 6850 events: { 6851 onReady: function onReady(event) { 6852 $.spinner().stop(); 6853 event.target.playVideo(); 6854 }, 6855 onStateChange: function onStateChange(event) { 6856 if (event.data === window.YT.PlayerState.PLAYING) { 6857 var videoName = $imgContainer.data('name') || videoPlayer.getVideoData().title; 6858 6859 // add the video name in the digital data video object 6860 if (window.digitalData && window.digitalData.page && window.digitalData.page.video) { 6861 window.digitalData.page.video.videoName = $imgContainer.data('name'); 6862 } 6863 6864 // Note: this event trigger was added primarily to support code registered in Adobe Launch (AKA DTM) 6865 var ev = new CustomEvent('video:start', { 6866 detail: { 6867 videoUrl: $youTubeIframe.attr('src'), 6868 videoName: videoName, 6869 playerType: 'youtube' 6870 } 6871 }); 6872 document.dispatchEvent(ev); 6873 $.spinner().stop(); 6874 $imgContainer.addClass('is-playing'); 6875 } else if (event.data === window.YT.PlayerState.ENDED) { 6876 var $modalContainer = $youTubeIframe.closest('.modal'); 6877 // unhide the play button 6878 $imgContainer.removeClass('is-playing'); 6879 // destroy the player 6880 event.target.destroy(); 6881 // if we're in a modal, destroy it too. 6882 $modalContainer.remove(); 6883 // also remove the backdrop 6884 $('.modal-backdrop').remove(); 6885 // remove the video from the videoPlayers 6886 delete window.videoPlayers[videoId]; 6887 } 6888 } 6889 } 6890 }); 6891 return videoPlayer; 6892 }; 6893 if (window.YT) { 6894 // YouTube API is already loaded. 6895 videoPlayer = createYTPlayer(videoId); 6896 window.videoPlayers[videoId] = videoPlayer; 6897 } else { 6898 // load the API 6899 var firstScriptTag = document.getElementsByTagName('script')[0]; 6900 var tag = document.createElement('script'); 6901 tag.src = 'https://www.youtube.com/iframe_api'; 6902 firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 6903 6904 // when the API finishes loading... 6905 window.onYouTubeIframeAPIReady = function () { 6906 // create the player 6907 videoPlayer = createYTPlayer(videoId); 6908 window.videoPlayers[videoId] = videoPlayer; 6909 }; 6910 } 6911 } else if (host.toLowerCase() === 'vimeo') { 6912 var $vimeoIframe = $('#' + videoId); 6913 var $imgContainer = $vimeoIframe.parent('.js-video-player'); 6914 var $modalContainer = $vimeoIframe.closest('.modal'); 6915 6916 // eslint-disable-next-line 6917 videoPlayer = new window.Vimeo.default(videoId); 6918 videoPlayer.ready().then(function () { 6919 $imgContainer.addClass('is-playing'); 6920 videoPlayer.play(); 6921 }); 6922 videoPlayer.on('playing', function () { 6923 var videoName = $imgContainer.data('name'); 6924 (videoName ? Promise.resolve() : videoPlayer.getVideoTitle().then(function (title) { 6925 videoName = title; 6926 })).catch(function () {}) // Ideally we would just use finally but the IE polyfill doesn't support it 6927 .then(function () { 6928 // add the video name in the digital data video object 6929 if (window.digitalData && window.digitalData.page && window.digitalData.page.video) { 6930 window.digitalData.page.video.videoName = videoName; 6931 } 6932 6933 // Note: this event trigger was added primarily to support code registered in Adobe Launch (AKA DTM) 6934 var ev = new CustomEvent('video:start', { 6935 detail: { 6936 videoUrl: $vimeoIframe.attr('src'), 6937 videoName: videoName, 6938 playerType: 'vimeo' 6939 } 6940 }); 6941 document.dispatchEvent(ev); 6942 }); 6943 $imgContainer.addClass('is-playing'); 6944 }); 6945 6946 // listen for the end of the video to destroy it. 6947 videoPlayer.on('ended', function () { 6948 videoPlayer.destroy(); 6949 $imgContainer.removeClass('is-playing'); 6950 // $modalContainer.modal('dispose'); 6951 destroyModalMarkup($modalContainer); 6952 // remove the video from the videoPlayers 6953 delete window.videoPlayers[videoId]; 6954 }); 6955 window.videoPlayers[videoId] = videoPlayer; 6956 6957 // play the video 6958 videoPlayer.play(); 6959 } 6960}; 6961var loadVideoPlayer = function loadVideoPlayer(videoContainer) { 6962 var videoSource = getVideoSource(videoContainer); 6963 var video = getVideo(videoSource.host, videoSource.id); 6964 var videoId = $(video).attr('id'); 6965 if ($(videoContainer).find('#' + videoId).length) { 6966 return; // prevent adding duplicate video to DOM 6967 } 6968 6969 // save non-video elements so they don't get removed when videoContainer contents get replaced below 6970 var $clonedVideoContainer = $(videoContainer).clone(); 6971 $clonedVideoContainer.find('iframe').remove(); // remove video element 6972 var nonVideoHtml = $clonedVideoContainer.html() || ''; 6973 var videoHtml = nonVideoHtml + video; 6974 $(videoContainer).html(videoHtml); 6975
6976 // let player-dependent code know when player has been created/updated 6977 $(document).trigger('video:player:update'); 6978 playVideoInFrame(videoSource.host, videoId); 6979}; 6980module.exports = function () { 6981 $('body').on('click touchend', '.js-video-player', function (e) { 6982 e.preventDefault(); 6983 loadVideoPlayer(this); 6984 }).on('click', '.js-video-modal', function (e) { 6985 e.preventDefault(); 6986 var $trigger = $(this); 6987 var video = getVideoSource(this); 6988 var width = $trigger.data('width') || 766; 6989 var height = $trigger.data('height') || width * 0.5625; // default to 16:9 ratio 6990 var modalTitle = $trigger.data('title') || ''; 6991 var iframe = getVideo(video.host, video.id, width, height, {}); 6992 var iframeId = $(iframe).attr('id'); 6993 // create the modal 6994 var html = utils.createModalMarkup(iframe, { 6995 title: modalTitle 6996 }); 6997 var $modal = $(html).modal(); 6998 6999 // listen for events 7000 $modal.on('shown.bs.modal', function () { 7001 // play the video after the modal is ready 7002 playVideoInFrame(video.host, iframeId); 7003 }).on('hidden.bs.modal', function () { 7004 // remove the modal markup completely 7005 destroyModalMarkup($(this)); 7006 }); 7007 }); 7008}; 7009 7010/***/ }), 7011
7012/***/ "./.tmp/app_col_eu_core/js/dataLayer/dataLayerPersistence.js": 7013/*!*******************************************************************!*\ 7014 !*** ./.tmp/app_col_eu_core/js/dataLayer/dataLayerPersistence.js ***! 7015 \*******************************************************************/ 7016/*! no static exports found */ 7017/***/ (function(module, exports, __webpack_require__) { 7018 7019"use strict"; 7020 7021 7022var loggingPrefix = 'dataLayerPersistence'; 7023 7024/** 7025 * Mirror the user-specific data layer fields from a source to destination object. 7026 * @param {Object} source - source data object 7027 * @param {Object} destination - destination data object 7028 */ 7029function mirrorUserSpecificFields(source, destination) { 7030 // Note: window.digitalData.transaction is user specifc but only applies to the order confirmation page and thus not being cached 7031 var userSpecificFields = ['cart', 'user']; 7032 userSpecificFields.forEach(function (fieldName) { 7033 if (fieldName in source) { 7034 // eslint-disable-next-line no-param-reassign 7035 destination[fieldName] = source[fieldName]; 7036 } else { 7037 // eslint-disable-next-line no-param-reassign 7038 delete destination[fieldName]; 7039 } 7040 }); 7041} 7042 7043/** 7044 * Caches the user specific parts of the data layer in local storage. 7045 * Note: this code can be debugged by switching tabs but it cannot be debugged on page unload so for that case... 7046 * 1. set window.debugMode.enabled = true 7047 * 2. set browser dev tools to preserve the console log 7048 * @param {Date} dataVersionDate - date & time the data was retrieved from the server 7049 * @param {boolean} dataIsFreshFromServer - true if caching data that was just pulled fresh from the server 7050 */ 7051function cacheUserSpecificData(dataVersionDate, dataIsFreshFromServer) { 7052 /** 7053 * Cookie dl_cud: Data Layer - Client User Data 7054 * A more verbose/readable name and value increases cookie size by 3x 7055 * so opting for a shorter format here to reduce overhead on all requests. 7056 */ 7057 var cookieName = 'dl_cud'; 7058 7059 // Do not change the storage key unless code is added to delete entries made under the old key 7060 var localStorageKey = 'dataLayerPersistence.userSpecificData'; 7061 7062 /** 7063 * Per https://documentation.b2c.commercecloud.salesforce.com/DOC2/topic/com.demandware.dochelp/DWAPI/scriptapi/html/api/class_dw_system_Session.html 7064 * A soft timeout occurs 30 minutes after the last request has been made. 7065 * The soft timeout logs out and clears all privacy data, but it is still possible to use the session ID to reopen the session. 7066 * A hard timeout renders a session ID invalid after six hours, even if the session is still in use. The hard timeout prevents a session from being reopened. 7067 * ----- 7068 * To avoid issues, we will buffer the timeout by removing an additional 5 minutes. 7069 */ 7070 var sfccSoftSessionTimeoutInMinutes = 30 - 5; 7071 var currentDate = new Date(); 7072 var minutesElapsed = (currentDate - dataVersionDate) / 1000 / 60; 7073 if (minutesElapsed > sfccSoftSessionTimeoutInMinutes) { 7074 window.debugMode.log("".concat(loggingPrefix, ": skipping caching because data is older than the SFCC soft session timeout")); 7075 return; 7076 } 7077 var Cookies = __webpack_require__(/*! js-cookie/src/js.cookie */ "./node_modules/js-cookie/src/js.cookie.js"); 7078 var currentCookieValue = Cookies.get(cookieName); 7079 var INVALIDATED_BY_SERVER = 'i'; 7080 var CLIENT_CACHED = 'c'; 7081 if (currentCookieValue === INVALIDATED_BY_SERVER) { 7082 localStorage.removeItem(localStorageKey); 7083 window.debugMode.log("".concat(loggingPrefix, ": previously cached data cleared because server set '").concat(cookieName, "' cookie to '").concat(INVALIDATED_BY_SERVER, "' (invalidated)")); 7084 if (!dataIsFreshFromServer) { 7085 window.debugMode.log("".concat(loggingPrefix, ": aborting caching of stale data after server invalidated it")); 7086 return; 7087 } 7088 } 7089 7090 // Safeguard: if something went wrong with populating the data layer, don't perpetuate the problem by cac
7090hing it 7091 if (!window.digitalData || !window.digitalData.user) { 7092 // eslint-disable-next-line no-console 7093 console.error("".concat(loggingPrefix, ": aborting caching because 'window.digitalData.user' is missing")); 7094 return; 7095 } 7096 var sessionSpecificLocalStorageHelper = __webpack_require__(/*! ../helper/sessionSpecificLocalStorageHelper */ "./.tmp/app_col_eu_core/js/helper/sessionSpecificLocalStorageHelper.js"); 7097 var cacheEntry = sessionSpecificLocalStorageHelper.getItem(localStorageKey); 7098 if (cacheEntry) { 7099 var wrapperVersionDate = cacheEntry.versionDate ? new Date(cacheEntry.versionDate) : null; 7100 7101 // Handles multiple tab browsing. The existing stored data is newer so don't overwrite it. 7102 if (wrapperVersionDate && wrapperVersionDate > dataVersionDate) { 7103 window.debugMode.log("".concat(loggingPrefix, ": caching skipped, existing cached data is newer")); 7104 return; 7105 } 7106 } 7107 cacheEntry = { 7108 versionDate: dataVersionDate.toJSON(), 7109 data: {}, 7110 /** 7111 * localStorage is not intended to expire. As such, if the storage structure changes, the code will need to account for it. 7112 * In such a scenario, increase this version number and clear the stored data for older versions. 7113 */ 7114 storageVersion: 1 7115 }; 7116 mirrorUserSpecificFields(window.digitalData, cacheEntry.data); 7117 var setSuccessful = sessionSpecificLocalStorageHelper.setItem(localStorageKey, cacheEntry); 7118 if (setSuccessful) { 7119 window.debugMode.log("".concat(loggingPrefix, ": data cached successfully in local storage under the '").concat(localStorageKey, "' key")); 7120 var expirationDate = new Date(dataVersionDate.getTime() + sfccSoftSessionTimeoutInMinutes * 60 * 1000); 7121 Cookies.set(cookieName, CLIENT_CACHED, { 7122 expires: expirationDate, 7123 secure: true 7124 }); 7125 window.debugMode.log("".concat(loggingPrefix, ": ").concat(cookieName, " cookie set to '").concat(CLIENT_CACHED, "' (cached)")); 7126 } 7127} 7128module.exports = { 7129 init: function init() { 7130 var dataLayerDataVersionDate = new Date(); 7131 $(function () { 7132 if (window.digitalData && window.digitalData.userSpecificDataPopulatedFromClientCache) { 7133 var userSpecificDataUrl = $('.js-data-layer-script').data('user-specific-data-url'); 7134 var updateSuccess = false; 7135 window.debugMode.log("".concat(loggingPrefix, ": user-specific data layer populated using the client cache, starting request for updated data from server...")); 7136 $.ajax({ 7137 url: userSpecificDataUrl, 7138 method: 'GET', 7139 success: function success(responseJSON) { 7140 if (responseJSON.dtmLayer && responseJSON.dtmLayer.user) { 7141 mirrorUserSpecificFields(responseJSON.dtmLayer, window.digitalData); 7142 updateSuccess = true; 7143 window.debugMode.log("".concat(loggingPrefix, ": successfully updated user-specific data from server, caching data...")); 7144 dataLayerDataVersionDate = new Date(); 7145 cacheUserSpecificData(dataLayerDataVersionDate, true); 7146 $(document).trigger('dataLayer:userSpecificData:updated'); 7147 } 7148 }, 7149 complete: function complete() { 7150 if (!updateSuccess) { 7151 // eslint-disable-next-line no-console 7152 console.error("".concat(loggingPrefix, ": error getting updated user-specific data from server")); 7153 } 7154 } 7155 }); 7156 } else { 7157 window.debugMode.log("".concat(loggingPrefix, ": user-specific data layer populated in page response from server, caching data...")); 7158 cacheUserSpecificData(dataLayerDataVersionDate, true); 7159 } 7160 }); 7161 7162 /** 7163 * Update the cache whenever closing tabs, switching tabs, or navigating away in case it was updated by client code. 7164 * Per https://developer.mozilla.org/en-US/docs/Web/API/Window/unload_event 7165 * visibilitychange is a better and most performant alternative to the 'unload' event. 7166 */ 7167 $(document).on('visibilitychange', function () { 7168 /** 7169 * Regardless of closing tabs, switching tabs, or navigating away... the state will be hidden. 7170 * Note: the debugger may not fire breakpoints when the tab is closing but it can be debugged by switching tabs. 7171 */ 7172 if (document.visibilityState === 'hidden') { 7173 window.debugMode.log("".concat(loggingPrefix, ": caching user-specific data as part of navigating or closing/switching tabs...")); 7174 cacheUserSpecificData(dataLayerDataVersionDate, false); 7175 } 7176 }); 7177 } 7178}; 7179 7180/***/ }), 7181
7182/***/ "./.tmp/app_col_eu_core/js/dataLayer/pageVisitReferrer.js": 7183/*!****************************************************************!*\ 7184 !*** ./.tmp/app_col_eu_core/js/dataLayer/pageVisitReferrer.js ***! 7185 \****************************************************************/ 7186/*! no static exports found */ 7187/***/ (function(module, exports, __webpack_require__) { 7188 7189"use strict"; 7190 7191 7192/** 7193 * Determines if a referrer is single use if it exists. 7194 * @returns {boolean} returns true referrer exists and is single use. 7195 */ 7196function isSingleUseReferrer() { 7197 if (!document.referrer) { 7198 return false; 7199 } 7200 if (!window.resources || !window.resources.dataLayer) { 7201 // eslint-disable-next-line no-console 7202 console.error('window.resources.dataLayer not loaded'); 7203 return false; 7204 } 7205 var referrerURL = new URL(document.referrer.toLowerCase()); 7206 7207 /** 7208 * Example: https://www.google.com/ yields a hostname of www.google.com 7209 * hostname will be blank for referrers like android-app://com.google.android.gm/ (GSD-12748) 7210 * in case they need to be supported in the future. 7211 */ 7212 if (!referrerURL.hostname) { 7213 return false; 7214 } 7215 var domainMatchResults = /[^.]*\.[^.]+$/.exec(referrerURL.hostname); 7216 var domain = domainMatchResults ? domainMatchResults[0] : null; 7217 return domain && window.resources.dataLayer.singleReferralDomains.includes(domain) || false; 7218} 7219 7220/** 7221 * If a referrer is single use, it captures the usage. 7222 * @returns {Object} returns objects with details on the capture. 7223 */ 7224function captureSingleUseReferrer() { 7225 var result = { 7226 isSingleUse: isSingleUseReferrer(), 7227 previouslyCaptured: false 7228 }; 7229 var sessionSpecificLocalStorageHelper = __webpack_require__(/*! ../helper/sessionSpecificLocalStorageHelper */ "./.tmp/app_col_eu_core/js/helper/sessionSpecificLocalStorageHelper.js"); 7230 7231 // Do not change the storage key unless code is added to delete entries made under old key 7232 var storageKey = 'pageVisitReferrer.singleUseReferrerHistory'; 7233 7234 // Always fetch the value before exiting so the code can clear invalid values
7235 var singleUseReferrals = sessionSpecificLocalStorageHelper.getItem(storageKey); 7236 if (!result.isSingleUse) { 7237 return result; 7238 } 7239 singleUseReferrals = singleUseReferrals || { 7240 /** 7241 * localStorage is not intended to expire. As such, if the storage structure changes, the code will need to account for it. 7242 * In such a scenario, increase this version number and clear the stored data for older versions. 7243 */ 7244 storageVersion: 1 7245 }; 7246 7247 // Lower case the URLs to be safe/consistent 7248 var currentUrl = window.location.href.toLowerCase(); 7249 var referrer = document.referrer.toLowerCase(); 7250 var currentUrlReferrers = singleUseReferrals[currentUrl]; 7251 if (currentUrlReferrers && currentUrlReferrers.includes(referrer)) { 7252 result.previouslyCaptured = true; 7253 return result; 7254 } 7255 if (!currentUrlReferrers) { 7256 currentUrlReferrers = []; 7257 singleUseReferrals[currentUrl] = currentUrlReferrers; 7258 } 7259 currentUrlReferrers.push(referrer); 7260 sessionSpecificLocalStorageHelper.setItem(storageKey, singleUseReferrals); 7261 return result; 7262} 7263module.exports = { 7264 isSingleUseReferrer: isSingleUseReferrer, 7265 captureSingleUseReferrer: captureSingleUseReferrer 7266}; 7267 7268/***/ }), 7269
7270/***/ "./.tmp/app_col_eu_core/js/debug.js": 7271/*!******************************************!*\ 7272 !*** ./.tmp/app_col_eu_core/js/debug.js ***! 7273 \******************************************/ 7274/*! no static exports found */ 7275/***/ (function(module, exports) { 7276 7277/* eslint-disable no-console */ 7278module.exports = { 7279 init: function init() { 7280 var DEBUG_MODE_STORAGE_KEY = 'cscDebugMode'; 7281 var ENABLED_STORAGE_KEY = "".concat(DEBUG_MODE_STORAGE_KEY, ".enabled"); 7282 var enabled; 7283 Object.defineProperty(window, 'debugMode', { 7284 configurable: false, 7285 enumerable: true, 7286 writable: false, 7287 value: { 7288 get enabled() { 7289 // Performance precaution: only get the value from local storage on first access, afterwards hold the value in memory. 7290 if (enabled === undefined) { 7291 var storedValue = localStorage.getItem(ENABLED_STORAGE_KEY); 7292 enabled = storedValue === 'true'; 7293 } 7294 return enabled; 7295 }, 7296 set enabled(value) { 7297 if (value !== true) { 7298 enabled = false; 7299 localStorage.removeItem(ENABLED_STORAGE_KEY); 7300 console.log('Debug mode disabled.'); 7301 } else { 7302 enabled = true; 7303 localStorage.setItem(ENABLED_STORAGE_KEY, enabled); 7304 console.log('Debug mode enabled. If needed, set the browser dev tools to \'preserve log\' across pages.'); 7305 } 7306 }, 7307 log: function log(msg) { 7308 if (this.enabled) { 7309 console.log(msg); 7310 } 7311 } 7312 } 7313 }); 7314 } 7315}; 7316 7317/***/ }), 7318
7319/***/ "./.tmp/app_col_eu_core/js/helper/basketHelper.js": 7320/*!********************************************************!*\ 7321 !*** ./.tmp/app_col_eu_core/js/helper/basketHelper.js ***! 7322 \********************************************************/ 7323/*! no static exports found */ 7324/***/ (function(module, exports, __webpack_require__) { 7325 7326"use strict"; 7327 7328 7329var utils = __webpack_require__(/*! ../components/utils */ "./.tmp/app_col_eu_core/js/components/utils.js"); 7330var minicartSaleItemAlertBadge = __webpack_require__(/*! ../components/minicartSaleItemAlertBadge */ "./.tmp/app_col_eu_core/js/components/minicartSaleItemAlertBadge.js"); 7331var isCartPage = $('.page').data('action') === 'Cart-Show'; 7332 7333/** 7334 * renders an error alert at the top of the page. 7335 * @param {Object} message - Error message to display 7336 */ 7337function createErrorNotification(message) { 7338 $('.cart-error').empty().alert({ 7339 content: message, 7340 theme: 'danger', 7341 placement: 'inline', 7342 autoClose: false 7343 }); 7344} 7345 7346/** 7347 * Stolen from product/base.js so we don't need to import and execute the whole file. 7348 * Retrieves the relevant pid value 7349 * @param {jQuery} $el - DOM container for a given add to cart button 7350 * @return {string} - value to be used when adding product to cart 7351 */ 7352var getPidFromQuickview = function getPidFromQuickview($el) { 7353 if ($('.quickview-modal').hasClass('show') && !$('.product-set').length) { 7354 return $el.closest('.modal-content').find('.product-quickview').data('pid'); 7355 } else if ($('.product-set-detail').length || $('.product-set').length) { 7356 return $el.closest('.product-detail').find('.product-id').data('pid'); 7357 } 7358 return $('.product-detail:not(".bundle-item")').data('pid'); 7359}; 7360 7361/** 7362 * Confirmation for deleting an item from the cart 7363 * @param {Object} $this - jQuery target of event 7364 */ 7365function deleteItemConfirmation($this) { 7366 var productID = $this.data('pid'); 7367 var uuid = $this.data('uuid'); 7368 var urlParams = { 7369 pid: productID, 7370 uuid: uuid, 7371 cartSource: isCartPage ? 'cart' : 'mini-cart' // For dtm-events 7372 }; 7373 7374 var url = utils.setUrlData($this.data('action'), urlParams); 7375 $('body > .modal-backdrop').remove(); 7376 $.spinner().start(); 7377 $('body').trigger('cart:beforeUpdate'); 7378 $.ajax({ 7379 url: url, 7380 type: 'get', 7381 dataType: 'json' 7382 }).done(function (data) { 7383 window.dispatchEvent(new Event('cart:updated:dtm')); 7384 if (data.basket.items.length === 0 && isCartPage) { 7385 if (data.dtmEvent) { 7386 window.localStorage.setItem('dtmEvent', JSON.stringify(data.dtmEvent)); 7387 } 7388 window.location.reload(); 7389 return; 7390 } 7391 $.spinner().stop(); 7392 if (data.toBeDeletedUUIDs && data.toBeDeletedUUIDs.length) { 7393 data.toBeDeletedUUIDs.forEach(function (uuidToDelete) { 7394 $("uuid-".concat(uuidToDelete)).remove(); 7395 }); 7396 } 7397 $(".uuid-".concat(uuid)).remove(); 7398 if (!data.basket.hasBonusProduct) { 7399 $('.bonus-product').remove(); 7400 } 7401 7402 // if we're on the cart page, cart.js will handle this event 7403 $('body').trigger('cart:update', data.basket); 7404 $('body').trigger('minicart:updatecount', data.basket.numItems); 7405 7406 // TODO: data.reservation is always an object (may be empty). 7407 // if empty or reservableProductsInCart is falsy, 7408 // reservationTimerHelper.getDestroyTimer() returns a function that is not executed. 7409 if (data.reservation) { 7410 var reservationTimerHelper = __webpack_require__(/*! ../components/reservationTimer */ "./.tmp/app_col_eu_core/js/components/reservationTimer.js"); 7411 if (data.reservation.reservableProductsInCart) { 7412 reservationTimerHelper.updateReservationData(data); 7413 } else { 7414 reservationTimerHelper.getDestroyTimer()(); 7415 delete window.resources.reservation; 7416 } 7417 } 7418 if (data.dtmEvent) { 7419 $('body').trigger('cart:emitEvents', { 7420 events: data.dtmEvent 7421 }); 7422 } 7423 if (data && 'dtmLayer' in data && 'digitalData' in window) { 7424 if (data.dtmLayer.pageInstanceID) { 7425 window.digitalData.pageInstanceID = data.dtmLayer.pageInstanceID; 7426 } 7427 if (data.dtmLayer.page) { 7428 window.digitalData.page = data.dtmLayer.page; 7429 } 7430 if (data.dtmLayer.user) { 7431 window.digitalData.user = data.dtmLayer.user; 7432 } 7433 if (data.dtmLayer.cart) { 7434 window.digitalData.cart = data.dtmLayer.cart; 7435 minicartSaleItemAlertBadge.toggleAlertBadge(); 7436 7437 // Update Stylitics widget on cart page if it exists 7438 $('body').trigger('stylitics:update'); 7439 } 7440 } 7441 }).fail(function (err) { 7442 if (err.responseJSON.redirectUrl) { 7443 window.location.href = err.responseJSON.redirectUrl; 7444 } else { 7445 $.spinner().stop(); 7446 createErrorNotification(err.responseJSON.errorMessage); 7447 } 7448 }); 7449} 7450 7451/** 7452 * Creates a confirmation modal when the Remove button is clicked, on cart or minicart. 7453 * @param {JQuery} $this the remove button that was clicked. it contains data attributes for creating the modal. 7454 */ 7455function removeProductModal($this) { 7456 var productName = $this.data('name'); 7457 var pid = $this.data('pid'); 7458 var uuid = $this.data('uuid'); 7459 var isBonusProduct = $this.data('bonus-product'); 7460 var showSFL = $this.data('show-sfl-btn') && !$this.data('sfl-requires-login'); 7461 var modalContent; 7462 var removeButtonText; 7463 var cancelButtonText; 7464 if (isBonusProduct) { 7465 modalContent = "<p class=\"mb-0\"><strong>".concat(productName, "</strong> ").concat(window.resources.cart.removeBonusProductBody, "</p>"); 7466 removeButtonText = window.resources.cart.removeButtonBonusProduct; 7467 cancelButtonText = window.resources.cart.cancelButtonBonusProduct; 7468 } else { 7469 modalContent = "<p>".concat(window.resources.cart.removeProductBody, "</p><p class=\"product-to-remove mb-0\">").concat(productName, "</p>"); 7470 removeButtonText = window.resources.cart.removeButton; 7471 cancelButtonText = window.resources.cart.cancelButton; 7472 } 7473 var removeButton = "<button type=\"button\" class=\"btn btn-primary btn-narrow cart-delete-confirmation-btn\"\n data-pid=\"".concat(pid, "\"\n data-action=\"").concat($this.data('action'), "\"\n data-uuid=\"").concat(uuid, "\"\n data-dismiss=\"modal\">").concat(removeButtonText, "</button>"); 7474 var cancelButton = "<button type=\"button\" class=\"btn btn-secondary btn-narrow\" data-dismiss=\"modal\">".concat(cancelButtonText, "</button>"); 7475 var sflButton = "<button type=\"button\" class=\"btn btn-secondary btn-narrow js-saveForLater-product\"\n data-pid=\"".concat(pid, "\"\n data-uuid=\"").concat(uuid, "\"\n data-remove-from-cart=\"true\"\n data-dismiss=\"modal\">").concat(window.resources.cart.saveForLater, "</button>"); 7476 var buttons = [removeButton]; 7477 buttons.push(showSFL ? sflButton : cancelButton); 7478 var $confirmModal = $.modal({ 7479 title: window.resources.cart.removeProduct, 7480 content: modalContent,
7481 modalSizeClass: 'modal-md', 7482 buttons: buttons 7483 }); 7484 $confirmModal.on('shown.bs.modal', function () { 7485 $confirmModal.on('click', '.cart-delete-confirmation-btn', function (e) { 7486 e.preventDefault(); 7487 deleteItemConfirmation($(this)); 7488 }); 7489 }); 7490 $confirmModal.one('hidden.bs.modal', function () { 7491 // if the modal was closed without removing the product, make sure the qty is not 0 7492 var $qtyField = $this.closest('.product-card').find('.js-quantity'); // Cart-page only 7493 if ($qtyField.val() < 1) { 7494 $qtyField.val(parseInt($qtyField.data('pre-select-qty'), 10)); 7495 } 7496 7497 // We remove here so that the deletion happens before the modal closes 7498 $confirmModal.remove(); 7499 $.enableScroll(); 7500 }); 7501} 7502 7503/** 7504 * Click handler for when user clicks the save for later button on a product 7505 * @param {Object} $this - jQuery target of event 7506 */ 7507function saveForLater($this) { 7508 var pid = $this.data('pid'); 7509 var uuid = $this.data('uuid'); 7510 var removeFromCart = $this.data('removeFromCart'); 7511 var formData = { 7512 pid: pid, 7513 uuid: uuid, 7514 removeFromCart: removeFromCart 7515 }; 7516 $.spinner().start(); 7517 $('body').trigger('cart:beforeUpdate'); 7518 $.ajax({ 7519 url: window.resources.cart.saveForLaterUrl, 7520 // Cart-SaveForLaterProductLineItem 7521 type: 'POST', 7522 data: formData, 7523 dataType: 'json' 7524 }).done(function (data) { 7525 if (data.error) { 7526 $.spinner().stop(); 7527 createErrorNotification(data.errorMessage); 7528 return; 7529 } 7530 if (isCartPage) { 7531 $('body').trigger('cart:refresh'); 7532 $('.js-saveforlater-listsize').html(data.listSizeMsg).data('listsize', data.lineItemsTotalCount); 7533 7534 // update stuff 7535 if (!data.cart.numItems) { 7536 if (data.dtmEvent) { 7537 window.localStorage.setItem('dtmEvent', JSON.stringify(data.dtmEvent)); 7538 } 7539 window.location.reload(); 7540 return; 7541 } 7542 $('body').trigger('cart:update', data.cart); 7543 } else { 7544 // saved from minicart 7545 $.spinner().stop(); 7546 $(document).trigger('minicart:updatecount', data.cart.numItems); 7547 } 7548 $.alert({ 7549 content: data.alertMsg, 7550 theme: 'success', 7551 placement: 'banner' 7552 }); 7553 if (data && 'dtmLayer' in data && 'digitalData' in window) { 7554 if (data.dtmLayer.pageInstanceID) { 7555 window.digitalData.pageInstanceID = data.dtmLayer.pageInstanceID; 7556 } 7557 if (data.dtmLayer.page) { 7558 window.digitalData.page = data.dtmLayer.page; 7559 } 7560 if (data.dtmLayer.user) { 7561 window.digitalData.user = data.dtmLayer.user; 7562 } 7563 if (data.dtmLayer.cart) { 7564 window.digitalData.cart = data.dtmLayer.cart; 7565 minicartSaleItemAlertBadge.toggleAlertBadge(); 7566 } 7567 } 7568 if (data.dtmEvent) { 7569 $('body').trigger('cart:emitEvents', { 7570 events: data.dtmEvent 7571 }); 7572 } 7573 7574 // Update Stylitics widget on cart page if it exists 7575 $('body').trigger('stylitics:update'); 7576 }).fail(function (err) { 7577 if (err.responseJSON.redirectUrl) { 7578 location.href = err.responseJSON.redirectUrl; 7579 } else { 7580 createErrorNotification(err.responseJSON.errorMessage); 7581 $.spinner().stop(); 7582 } 7583 }); 7584} 7585 7586/** 7587 * Sets up Remove Coupon modal with the data needed to remove the coupon. 7588 * `.remove-coupon` button triggers a modal via `data-toggle="modal"`. 7589 * Modal markup is already hidden on page with id `#removeCouponModal` 7590 * @param {jQuery} $this - the clicked remove button 7591 */ 7592function removeCoupon($this) { 7593 var couponCode = $this.data('code'); 7594 $('.delete-coupon-confirmation-btn').data({ 7595 uuid: $this.data('uuid'), 7596 code: couponCode 7597 }); 7598 $('.coupon-to-remove').text(couponCode); 7599} 7600 7601/** 7602 * Updates the CGR rewards card and banner on cart/checkout pages 7603 * @param {Object} data - AJAX response from the server 7604 */ 7605function updateRewardsCardAndBanner(data) { 7606 if (data.rewardsCard) { 7607 // Check for points multiplier 7608 $('.js-rewards-banner-promomsg').toggleClass('d-none', data.rewardsCard.basketMultiplier <= 1); 7609 7610 // update rewards balance messaging, if applicable 7611 if (data.rewardsCard.loyaltyActive) { 7612 var rewardsCardMessaging = window.resources.rewardsCardMessaging || {}; 7613 var rewardsApplied = rewardsCardMessaging.rewardsApplied; 7614 var rewardsBalance = rewardsCardMessaging.rewardsBalance; 7615 var rewardsAvailable = rewardsCardMessaging.rewardsAvailable; 7616 if (data.rewardsCard.appliedRewards && data.rewardsCard.appliedRewards.value > 0) { 7617 // rewards applied 7618 $('.js-rewards-balance-msg').html("".concat(rewardsApplied, " <span class=\"checkoutRewardsBanner__detail-highlight\"><strong>").concat(data.rewardsCard.appliedRewards.formatted, "</strong></span>")); 7619 $('.js-rewards-banner-remaining').text(data.rewardsCard.remainingRewards); 7620 $('.checkoutRewardsBanner__detail-small').toggleClass('d-none', false); 7621 } else { 7622 // rewards removed 7623 if (data.rewardsCard.rewardsBalance) { 7624 if (data.rewardsCard.rewardsBalance.available.numericValue < 5) { 7625 $('.js-rewards-balance-msg').html("".concat(rewardsBalance, " <span class=\"checkoutRewardsBanner__detail-highlight\"><strong>").concat(data.rewardsCard.rewardsBalance.available.currencyFormattedString, "</strong></span>")); 7626 } else { 7627 $('.js-rewards-balance-msg').html("".concat(rewardsAvailable, " <span class=\"checkoutRewardsBanner__detail-highlight\"><strong>").concat(data.rewardsCard.rewardsBalance.available.currencyFormattedString, "</strong></span>")); 7628 } 7629 } 7630 $('.checkoutRewardsBanner__detail-small').toggleClass('d-none', true); 7631 } 7632 } 7633 7634 // update earned rewards on basket 7635 // Toggle Cart and Checkout Banner Guest Rewards Message 7636 var cartWillEarnRewards = data.rewardsCard.rewards && data.rewardsCard.rewards.promoRewards.value > 0; 7637 $('.js-cart-rewards-banner, .js-checkout-shipping-rewards-banner').toggleClass('d-none', !cartWillEarnRewards); 7638 $('.js-cart-rewards-banner-zero, .js-checkout-shipping-rewards-banner-zero').toggleClass('d-none',
7638cartWillEarnRewards); 7639 7640 // Toggle Rewards Card Basket Earnings Message 7641 $('.js-rewards-earnings-msg').toggleClass('d-none', !cartWillEarnRewards); 7642 $('.js-rewards-earnings-msg-zero').toggleClass('d-none', cartWillEarnRewards); 7643 if (cartWillEarnRewards) { 7644 if (data.rewardsCard.rewards.strikeThrough) { 7645 $('.js-rewards-banner-strikethrough').toggleClass('d-none', false); 7646 $('.js-rewards-banner-strikethrough').html(data.rewardsCard.rewards.strikeThrough); 7647 $('.js-rewards-banner-earnamt').text(data.rewardsCard.rewards.promoRewards.formatted); 7648 } else { 7649 $('.js-rewards-banner-strikethrough').toggleClass('d-none', true); 7650 $('.js-rewards-banner-earnamt').text(data.rewardsCard.rewards.baseRewards.formatted); 7651 } 7652 } 7653 } 7654} 7655 7656/** 7657 * confirmation of coupon removal from total 7658 * @param {jQuery} $this - the clicked confirmation button ( $('.delete-coupon-confirmation-btn') ) 7659 */ 7660function removeCouponConfirmation($this) { 7661 var url = utils.setUrlData($this.data('action'), { 7662 // Cart-RemoveCouponLineItem 7663 code: $this.data('code'), 7664 uuid: $this.data('uuid') 7665 }); 7666 $('body > .modal-backdrop').remove(); 7667 $.spinner().start(); 7668 $.ajax({ 7669 url: url, 7670 type: 'get', 7671 dataType: 'json' 7672 }).done(function (data) { 7673 $('body').trigger('cart:update', data); 7674 $('body').trigger('checkout:toggleKlarnaPaymentOption'); 7675 $('.js_braintree_paypal_cart_button').removeClass('disabled'); 7676 $.spinner().stop(); 7677 if ('dtmLayer' in data && data.dtmLayer && 'digitalData' in window) { 7678 ['pageInstanceID', 'page', 'user', 'cart'].forEach(function (prop) { 7679 if (data.dtmLayer[prop]) { 7680 window.digitalData[prop] = data.dtmLayer[prop]; 7681 } 7682 }); 7683 } 7684 $('body').trigger('updateBillingBlockDataAttributes', data); 7685 if (data.dtmEvent) { 7686 $('body').trigger('cart:emitEvents', { 7687 events: data.dtmEvent 7688 }); 7689 } 7690 updateRewardsCardAndBanner(data); 7691 }).fail(function (err) { 7692 if (err.responseJSON.redirectUrl) { 7693 window.location.href = err.responseJSON.redirectUrl; 7694 } else { 7695 createErrorNotification(err.responseJSON.errorMessage); 7696 $.spinner().stop(); 7697 } 7698 }); 7699} 7700 7701/** 7702 * Common handler for emitting analytics events 7703 * @param {Array} events - an array of dtmEvent objects 7704 */ 7705function emitCartEvents(events) { 7706 if ('_satellite' in window && !!events && events.length) { 7707 events.forEach(function (action) { 7708 _satellite.track(action.event, action.data); // eslint-disable-line no-undef 7709 }); 7710 } 7711} 7712 7713/** 7714 * On page load, grab events written via template, fire them through dtm, and clear the on-page element. 7715 * The global variable is inside a template included in both cart and minicart 7716 * The saved events are stored ahead of any client side redirects 7717 */ 7718function processOnloadEvents() { 7719 if (window.cartOnloadEvents) { 7720 emitCartEvents(window.cartOnloadEvents); 7721 } 7722 var savedEvents = window.localStorage.getItem('dtmEvent'); 7723 if (savedEvents) { 7724 emitCartEvents(JSON.parse(savedEvents)); 7725 window.localStorage.removeItem('dtmEvent'); 7726 } 7727} 7728 7729/** 7730 * Updates window.digitalData with the given data. 7731 * @param {Object} dtmLayer The data to update in window.digitalData 7732 * @param {Array} propsToUpdate The properties to be udpated. 7733 */ 7734function updateDTM(dtmLayer) { 7735 var propsToUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ['pageInstanceID', 'page', 'user', 'cart']; 7736 if (dtmLayer && 'digitalData' in window) { 7737 propsToUpdate.forEach(function (prop) { 7738 if (dtmLayer[prop]) { 7739 window.digitalData[prop] = dtmLayer[prop]; 7740 } 7741 }); 7742 minicartSaleItemAlertBadge.toggleAlertBadge(); 7743 } 7744} 7745module.exports = { 7746 init: function init() { 7747 $('body').on('click', '.js-remove-product', function (e) { 7748 e.preventDefault(); 7749 removeProductModal($(this)); 7750 }).on('click', '.js-saveForLater-product', function (e) { 7751 e.preventDefault(); 7752 saveForLater($(this)); 7753 }).on('click', '.remove-coupon', function (e) { 7754 e.preventDefault(); 7755 removeCoupon($(this)); 7756 }).on('click', '.delete-coupon-confirmation-btn', function (e) { 7757 e.preventDefault(); 7758 removeCouponConfirmation($(this)); 7759 }).on('cart:emitEvents', function (e, data) { 7760 e.preventDefault(); 7761 emitCartEvents(data.events); 7762 }); 7763 }, 7764 updateRewardsCardAndBanner: updateRewardsCardAndBanner, 7765 getPidFromQuickview: getPidFromQuickview, 7766 processOnloadEvents: processOnloadEvents, 7767 updateDTM: updateDTM 7768}; 7769 7770/***/ }), 7771
7772/***/ "./.tmp/app_col_eu_core/js/helper/sessionSpecificLocalStorageHelper.js": 7773/*!*****************************************************************************!*\ 7774 !*** ./.tmp/app_col_eu_core/js/helper/sessionSpecificLocalStorageHelper.js ***! 7775 \*****************************************************************************/ 7776/*! no static exports found */ 7777/***/ (function(module, exports, __webpack_require__) { 7778 7779"use strict"; 7780 7781 7782/** 7783 * Gets the current session ID. 7784 * @returns {string} returns the session ID if it can be found. 7785 */ 7786function getSessionID() { 7787 /** 7788 * Ideally we would use dwsid, which SFCC logs. 7789 * However, its stored in a cookie that is inaccessible to client JS. 7790 * 'sid' also identifies the current browsing session, matches session.sessionID, and is client JS accessible. 7791 * Per SFCC: 7792 * - session.sessionID: this can safely be used as an identifier against external systems. 7793 * - sid cookie: identifies the current browsing session. 7794 */ 7795 var sessionCookie = document.cookie.split('; ').find(function (row) { 7796 return row.startsWith('sid='); 7797 }); 7798 var sessionId = sessionCookie ? sessionCookie.split('=')[1] : null; 7799 if (!sessionId) { 7800 // eslint-disable-next-line no-console 7801 console.error('getSessionID: could not determine session ID'); 7802 } 7803 return sessionId; 7804} 7805 7806/** 7807 * Gets an item from local storage, that was previously JSON stringified. 7808 * If the session ID that was stored with the item, 7809 * doesn't match the current ID then local storage is cleared and null returned. 7810 * Note: for non-primitive types, like for dates, JSON.parse will leave it as string. 7811 * @param {string} keyName - name of the key where the item is stored 7812 * @returns {*} the stored item or null (particularly if session ID has changed) 7813 */ 7814function getItem(keyName) { 7815 var sessionID = getSessionID(); 7816 if (!sessionID) { 7817 return null; 7818 } 7819 var json = localStorage.getItem(keyName); 7820 var itemWrapper; 7821 if (json) { 7822 try { 7823 /** 7824 * In the future, if additional customization is needed, 7825 * add 'reviver' as an optional argument to getItem and pass it into JSON.parse. 7826 */ 7827 itemWrapper = JSON.parse(json); 7828 } catch (e) { 7829 // eslint-disable-next-line no-console 7830 console.error("Unable to parse ".concat(keyName, "': ").concat(e.message, "; ").concat(json)); 7831 } 7832 } 7833 if (!itemWrapper) { 7834 return null; 7835 } 7836 7837 // Session has change remove the item 7838 if (itemWrapper.sessionID !== sessionID) { 7839 localStorage.removeItem(keyName); 7840 return null; 7841 } 7842 return itemWrapper.item; 7843} 7844 7845/** 7846 * Sets an item in local storage after passing it through JSON stringify along with its session ID. 7847 * @param {string} keyName - name of the key where the item is stored 7848 * @param {*} item - item to store 7849 * @returns {boolean} true if item is successfully stored, otherwise false. 7850 */ 7851function setItem(keyName, item) { 7852 var itemWrapper = { 7853 sessionID: getSessionID(), 7854 item: item 7855 }; 7856 if (!itemWrapper.sessionID) { 7857 return false; 7858 } 7859 localStorage.setItem(keyName, JSON.stringify(itemWrapper)); 7860 return true; 7861} 7862module.exports = { 7863 getItem: getItem, 7864 setItem: setItem 7865}; 7866 7867/***/ }), 7868
7869/***/ "./.tmp/app_col_eu_core/js/main.js": 7870/*!*****************************************!*\ 7871 !*** ./.tmp/app_col_eu_core/js/main.js ***! 7872 \*****************************************/ 7873/*! no static exports found */ 7874/***/ (function(module, exports, __webpack_require__) { 7875 7876/* WEBPACK VAR INJECTION */(function(global) {/** 7877 * Main Script File 7878 * 7879 * This is loaded in the footer of all pages. This is the preferred place to 7880 * load all script files. 7881 */ 7882 7883__webpack_require__(/*! ./thirdParty/jquery.alert/jquery.alert */ "./.tmp/app_col_eu_core/js/thirdParty/jquery.alert/jquery.alert.js"); 7884__webpack_require__(/*! ./thirdParty/jquery.circularProgressIndicator/jquery.circularProgressIndicator */ "./.tmp/app_col_eu_core/js/thirdParty/jquery.circularProgressIndicator/jquery.circularProgressIndicator.js"); 7885__webpack_require__(/*! ./thirdParty/jquery.cschotspots/jquery.cschotspots */ "./.tmp/app_col_eu_core/js/thirdParty/jquery.cschotspots/jquery.cschotspots.js"); 7886__webpack_require__(/*! ./thirdParty/jquery.cscutils/jquery.cscutils */ "./.tmp/app_col_eu_core/js/thirdParty/jquery.cscutils/jquery.cscutils.js"); 7887__webpack_require__(/*! ./thirdParty/jquery.parallax/jquery.parallax */ "./.tmp/app_col_eu_core/js/thirdParty/jquery.parallax/jquery.parallax.js"); 7888__webpack_require__(/*! ./thirdParty/jquery.sideDrawer/jquery.sideDrawer */ "./.tmp/app_col_eu_core/js/thirdParty/jquery.sideDrawer/jquery.sideDrawer.js"); 7889__webpack_require__(/*! ./thirdParty/jquery.stepBar/jquery.stepBar */ "./.tmp/app_col_eu_core/js/thirdParty/jquery.stepBar/jquery.stepBar.js"); 7890__webpack_require__(/*! ./thirdParty/jquery.wizard/jquery.wizard */ "./.tmp/app_col_eu_core/js/thirdParty/jquery.wizard/jquery.wizard.js"); 7891var processInclude = __webpack_require__(/*! ./components/processInclude */ "./.tmp/app_col_eu_core/js/components/processInclude.js"); 7892 7893// Should be included before all other files to ensure its available for consumption 7894processInclude(__webpack_require__(/*! ./debug */ "./.tmp/app_col_eu_core/js/debug.js")); 7895processInclude(__webpack_require__(/*! ./components/authStateValidator */ "./.tmp/app_col_eu_core/js/components/authStateValidator.js")); 7896global.quickview = __webpack_require__(/*! ./product/quickView */ "./.tmp/app_col_eu_core/js/product/quickView.js"); 7897var set = __webpack_require__(/*! lodash/set */ "./node_modules/lodash/set.js"); 7898set(window, '_.set', set); 7899 7900// Hooks must be executed before any other code runs 7901processInclude(__webpack_require__(/*! ./components/historyHooks */ "./.tmp/app_col_eu_core/js/components/historyHooks.js")); 7902$(document).ready(function () { 7903 processInclude(__webpack_require__(/*! ./components/menu */ "./.tmp/app_col_eu_core/js/components/menu.js")); 7904 processInclude(__webpack_require__(/*! ./components/accountDrawers */ "./.tmp/app_col_eu_core/js/components/accountDrawers.js")); 7905 processInclude(__webpack_require__(/*! ./components/progressiveProfiling */ "./.tmp/app_col_eu_core/js/components/progressiveProfiling.js")); 7906 processInclude(__webpack_require__(/*! ./components/passwordVisibility */ "./.tmp/app_col_eu_core/js/components/passwordVisibility.js")); 7907 processInclude(__webpack_require__(/*! ./components/cookie */ "./.tmp/app_col_eu_core/js/components/cookie.js")); 7908 processInclude(__webpack_require__(/*! ./components/headerOffset */ "./.tmp/app_col_eu_core/js/components/headerOffset.js")); 7909 /** 7910 * Not currently using OOTB consent tracking. Commented out to improve performance. 7911 * processInclude(require('./components/consentTracking')); 7912 */ 7913 processInclude(__webpack_require__(/*! ./components/footer */ "./.tmp/app_col_eu_core/js/components/footer.js")); 7914 processInclude(__webpack_require__(/*! ./components/miniCart */ "./.tmp/app_col_eu_core/js/components/miniCart.js")); 7915 processInclude(__webpack_require__(/*! ./components/collapsibleItem */ "./.tmp/app_col_eu_core/js/components/collapsibleItem.js")); 7916 processInclude(__webpack_require__(/*! ./components/search */ "./.tmp/app_col_eu_core/js/components/search.js")); 7917 processInclude(__webpack_require__(/*! ./components/clientSideValidation */ "./.tmp/app_col_eu_core/js/components/clientSideValidation.js")); 7918 processInclude(__webpack_require__(/*! ./components/clientRequest */ "./.tmp/app_col_eu_core/js/components/clientRequest.js")); 7919 processInclude(__webpack_require__(/*! ./components/countdown */ "./.tmp/app_col_eu_core/js/components/countdown.js")); 7920 processInclude(__webpack_require__(/*! ./components/countrySelectorOverlay */ "./.tmp/app_col_eu_core/js/components/countrySelectorOverlay.js")); 7921 processInclude(__webpack_require__(/*! ./components/languageSelectorOverlay */ "./.tmp/app_col_eu_core/js/components/languageSelectorOverlay.js"));
7922 processInclude(__webpack_require__(/*! ./components/accessibility */ "./.tmp/app_col_eu_core/js/components/accessibility.js")); 7923 processInclude(__webpack_require__(/*! ./components/modals */ "./.tmp/app_col_eu_core/js/components/modals.js")); 7924 processInclude(__webpack_require__(/*! ./components/video */ "./.tmp/app_col_eu_core/js/components/video.js")); 7925 processInclude(__webpack_require__(/*! ./thirdParty/emailSpellCheckerInit */ "./.tmp/app_col_eu_core/js/thirdParty/emailSpellCheckerInit.js")); 7926 processInclude(__webpack_require__(/*! ./thirdParty/swiperInit */ "./.tmp/app_col_eu_core/js/thirdParty/swiperInit.js")); 7927 processInclude(__webpack_require__(/*! ./thirdParty/vanillaLazyLoad */ "./.tmp/app_col_eu_core/js/thirdParty/vanillaLazyLoad.js")); 7928 processInclude(__webpack_require__(/*! ./components/carousel */ "./.tmp/app_col_eu_core/js/components/carousel.js")); 7929 processInclude(__webpack_require__(/*! ./brand/main */ "./.tmp/app_col_eu_core/js/brand/main.js")); 7930 processInclude(global.quickview); 7931 processInclude(__webpack_require__(/*! ./product/pdpActions */ "./.tmp/app_col_eu_core/js/product/pdpActions.js")); 7932 processInclude(__webpack_require__(/*! ./product/productTile */ "./.tmp/app_col_eu_core/js/product/productTile.js")); 7933 processInclude(__webpack_require__(/*! ./components/loyalty */ "./.tmp/app_col_eu_core/js/components/loyalty.js")); 7934 processInclude(__webpack_require__(/*! ./components/membership */ "./.tmp/app_col_eu_core/js/components/membership.js")); 7935 processInclude(__webpack_require__(/*! ./components/reservationTimer */ "./.tmp/app_col_eu_core/js/components/reservationTimer.js")); 7936 processInclude(__webpack_require__(/*! ./components/SMSConsentDrawer */ "./.tmp/app_col_eu_core/js/components/SMSConsentDrawer.js")); 7937 processInclude(__webpack_require__(/*! ./dataLayer/dataLayerPersistence */ "./.tmp/app_col_eu_core/js/dataLayer/dataLayerPersistence.js")); 7938 7939 /* Example of including an AEM script 7940 processInclude(require('./aem/example')); */ 7941 processInclude(__webpack_require__(/*! ./aem/modalComponent */ "./.tmp/app_col_eu_core/js/aem/modalComponent.js")); 7942 processInclude(__webpack_require__(/*! ./aem/globalMarketingBanner */ "./.tmp/app_col_eu_core/js/aem/globalMarketingBanner.js")); 7943 processInclude(__webpack_require__(/*! ./aem/overflowSlider */ "./.tmp/app_col_eu_core/js/aem/overflowSlider.js")); 7944 processInclude(__webpack_require__(/*! ./aem/tabbedContainer */ "./.tmp/app_col_eu_core/js/aem/tabbedContainer.js")); 7945 var event = new Event('main-js-includes'); 7946 // event to signal main.js includes have processed 7947 window.dispatchEvent(event); 7948}); 7949__webpack_require__(/*! ./thirdParty/bootstrap */ "./.tmp/app_col_eu_core/js/thirdParty/bootstrap.js"); 7950__webpack_require__(/*! ./components/spinner */ "./.tmp/app_col_eu_core/js/components/spinner.js"); 7951/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) 7952 7953/***/ }), 7954
7955/***/ "./.tmp/app_col_eu_core/js/passwordChecker/passwordChecker.js": 7956/*!********************************************************************!*\ 7957 !*** ./.tmp/app_col_eu_core/js/passwordChecker/passwordChecker.js ***! 7958 \********************************************************************/ 7959/*! no static exports found */ 7960/***/ (function(module, exports, __webpack_require__) { 7961 7962"use strict"; 7963 7964 7965/** 7966 * Takes the current password value and tests each constraint against the appropriate regex expression 7967 * If regex criteria is met, it will add isValid 7968 * @param {string} passwordValue - current value in the password field 7969 * @param {string} constraintField - selector of the constraint 7970 * @param {string} regexPattern - pattern that will be used to test against 7971 * @return {boolean} - true if constraint is met, false otherwise 7972 */ 7973function showPasswordConstraint(passwordValue, constraintField, regexPattern) { 7974 // Regex Pattern will not exist if we do not enforce mixed case, min number or min special character requirements 7975 var constraintMet = true; 7976 if (regexPattern) { 7977 var $constraintField = $(constraintField); 7978 var regex = new RegExp(regexPattern); 7979 if (regex.test(passwordValue)) { 7980 $constraintField.addClass('isValid'); 7981 } else { 7982 $constraintField.removeClass('isValid'); 7983 constraintMet = false; 7984 } 7985 } 7986 return constraintMet; 7987} 7988 7989/** 7990 * Takes the current password value and tests each constraint against the appropriate regex expression 7991 * If regex criteria is met, it will add isValid 7992 * @param {string} $passwordField - current value in the password field 7993 * @return {boolean} - true if constraint is met, false otherwise 7994 */ 7995function checkPasswordValidity($passwordField) { 7996 var isValid = true; 7997 if ($passwordField) { 7998 var passwordValue = $passwordField.val(); 7999 var $constraintField = $passwordField.parents('.form-group').find('.constraintRegex'); 8000 var $invalidPasswordField = $passwordField.parents('.form-group').find('.invalid-password'); 8001 var hideConstraints = $passwordField.parents('form').data('hide-constraints'); 8002 var allowEmpty = $constraintField.data('allow-empty'); 8003 var constraintsMet; 8004 if (!hideConstraints) { 8005 var constraintsJSON = $constraintField.data('pass-regex'); 8006 var minCharConstraint = showPasswordConstraint(passwordValue, '.min-char-constraint', constraintsJSON.minLengthRegex); 8007 var lowerCaseConstraint = showPasswordConstraint(passwordValue, '.lower-case-constraint', constraintsJSON.lowerCaseRegex); 8008 var upperCaseConstraint = showPasswordConstraint(passwordValue, '.upper-case-constraint', constraintsJSON.upperCaseRegex); 8009 var minNumberConstraint = showPasswordConstraint(passwordValue, '.min-number-constraint', constraintsJSON.numberRegex); 8010 var minSpecialCharConstraint = showPasswordConstraint(passwordValue, '.min-specialChar-constraint', constraintsJSON.specialCharRegex); 8011 if (minCharConstraint && lowerCaseConstraint && upperCaseConstraint && minNumberConstraint && minSpecialCharConstraint || allowEmpty && !passwordValue.length) { 8012 constraintsMet = true; 8013 } 8014 } 8015 if (constraintsMet || hideConstraints) { 8016 $invalidPasswordField.addClass('d-none'); 8017 $passwordField.removeClass('is-invalid'); 8018 $passwordField.parent().removeClass('is-invalid'); 8019 } else { 8020 // Password field is only invalid if focus is lost before input is valid 8021 isValid = false; 8022 } 8023 } 8024 return isValid; 8025} 8026module.exports = { 8027 init: function init() { 8028 $('body').off('keyup change', '.js-password-checker').on('keyup change', '.js-password-checker', function (e) { 8029 e.preventDefault(); 8030 var $passwordField = $(this); 8031 checkPasswordValidity($passwordField); 8032 }); 8033 }, 8034 checkPasswordValidity: checkPasswordValidity 8035}; 8036 8037/***/ }), 8038
8039/***/ "./.tmp/app_col_eu_core/js/product/badge.js": 8040/*!**************************************************!*\ 8041 !*** ./.tmp/app_col_eu_core/js/product/badge.js ***! 8042 \**************************************************/ 8043/*! no static exports found */ 8044/***/ (function(module, exports, __webpack_require__) { 8045 8046"use strict"; 8047 8048 8049/** 8050 * Display badge based on product variant response 8051 * @param {Object} badgeData from product data 8052 * @return {string} HTML Output 8053 */ 8054function displayBadge(badgeData) { 8055 var result = ''; 8056 if (!(badgeData && badgeData.gridBadge)) { 8057 return result; 8058 } 8059 var gridBadgeValue = badgeData.gridBadge.value || null; 8060 var gridBadgeDisplay = badgeData.gridBadge.display || null; 8061 var hasSaleSwatchSelected = $('.js-color-swatch.js-onsale.selected').length; 8062 var hideDynamicBadges = !!badgeData.gridBadge.hideDynamicBadges; 8063 // In contrast with the grid tile, the PDP 'Sale' badge will be omitted from this static type array and handled dynamically 8064 var staticTypes = ['BestSeller', 'New', 'Coming Soon']; 8065 var isStaticType = staticTypes.includes(badgeData.gridBadge.value); 8066 var badgeType; 8067 if (badgeData.svg) { 8068 result = "\n <div class=\"product-badge product-badge--pdp product-badge--icon\">\n <svg class=\"svgicon\"><use href=\"".concat('#' + badgeData.svg, "\"></use></svg>\n </div>\n "); 8069 } else if (gridBadgeValue && gridBadgeDisplay && gridBadgeValue.toLowerCase() !== 'sale') { 8070 badgeType = gridBadgeValue.toLowerCase(); 8071 } else if (!hideDynamicBadges && hasSaleSwatchSelected && !isStaticType) { 8072 badgeType = 'sale'; 8073 } 8074 if (badgeType) { 8075 result = "\n <div class=\"product-badge product-badge--pdp product-badge--".concat(badgeType, "\">\n ").concat(gridBadgeDisplay, "\n </div>"); 8076 } 8077 return result; 8078} 8079 8080/** 8081 * Display PDP image gallery tech badge based on product technology 8082 * @param {Object} badgeData from pdp data 8083 * @return {string} HTML Output 8084 */ 8085function displayTechBadge(badgeData) { 8086 var result = ''; 8087 if (!badgeData) { 8088 return result; 8089 } 8090 result = "\n <div class=\"product-tech-badge ".concat(badgeData.svgClass, "\">\n <svg viewbox=\"0 0 ").concat(badgeData.svgWidth, " ").concat(badgeData.svgHeight, "\">\n <use xlink:href=\"").concat('#' + badgeData.svgID, "\"></use>\n </svg>\n </div>"); 8091 return result; 8092} 8093module.exports = { 8094 displayBadge: displayBadge, 8095 displayTechBadge: displayTechBadge 8096}; 8097 8098/***/ }), 8099
vendor: 4,646 bytes, lines 8100-8148
8100/***/ "./.tmp/app_col_eu_core/js/product/base.js": 8101/*!*************************************************!*\ 8102 !*** ./.tmp/app_col_eu_core/js/product/base.js ***! 8103 \*************************************************/ 8104/*! no static exports found */ 8105/***/ (function(module, exports, __webpack_require__) { 8106 8107"use strict"; 8108/* global clientData */ 8109 8110 8111/** 8112 * Product Base Module 8113 */ 8114function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } 8115function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 8116function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } } 8117function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } 8118function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } 8119function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } 8120function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } 8121var utils = __webpack_require__(/*! ../components/utils */ "./.tmp/app_col_eu_core/js/components/utils.js"); 8122var onModel = __webpack_require__(/*! ../product/onModelDescription */ "./.tmp/app_col_eu_core/js/product/onModelDescription.js"); 8123var Badge = __webpack_require__(/*! ../product/badge.js */ "./.tmp/app_col_eu_core/js/product/badge.js"); 8124var Overview = __webpack_require__(/*! ../product/overview.js */ "./.tmp/app_col_eu_core/js/product/overview.js"); 8125var minicartSaleItemAlertBadge = __webpack_require__(/*! ../components/minicartSaleItemAlertBadge */ "./.tmp/app_col_eu_core/js/components/minicartSaleItemAlertBadge.js"); 8126 8127/* 8128 * All needed methods from app_storefront_base/cartridge/client/default/js/product/base.js have been overridden here 8129 */ 8130 8131var base = __webpack_require__(/*! base/product/base */ "./cartridges/app_storefront_base/cartridge/client/default/js/product/base.js"); 8132var breakpoints = __webpack_require__(/*! ../components/breakpoints */ "./.tmp/app_col_eu_core/js/components/breakpoints.js"); 8133var $mainPDPGallery = $('.product-gallery--main'); 8134var oosData = {}; 8135 8136/** 8137 * method to identify if BISN is enabled at variant level 8138 * @param {Object} attrValue color swatch value 8139 * @param {Object} $productObject Product object 8140 * @returns {boolean} true if BISN is checked at variant level, else false 8141 */ 8142function isNotifyMeEnabled(attrValue, $productObject) { 8143 var enableNotifyMe; 8144 var varKeys = Object.keys($productObject.variantData); 8145 varKeys.forEach(function (key) { 8146 if ($productObject.variantData[key].color === attrValue.id) { 8147 enableNotifyMe = $productObject.variantData[key].bisnflag; 8148 return false;
8149 } 8150 return true; 8151 }); 8152 return enableNotifyMe; 8153} 8154/** 8155 * Retrieves the relevant pid value 8156 * @param {jquery} $el - DOM container for a given add to cart button 8157 * @return {string} - value to be used when adding product to cart 8158 */ 8159function getPidValue($el) { 8160 var pid; 8161 if ($('.quickview-modal').hasClass('show') && !$('.product-set').length) { 8162 pid = $($el).closest('.modal-content').find('.product-quickview').data('pid'); 8163 } else if ($('.product-set-detail').length || $('.product-set').length) { 8164 pid = $($el).closest('.product-detail').find('.product-id').data('pid'); 8165 } else { 8166 pid = $('.product-detail:not(".bundle-item")').data('pid'); 8167 } 8168 return pid; 8169} 8170 8171/** 8172 * Process the attribute values for an attribute that has image swatches 8173 * 8174 * @param {Object} attr - Attribute 8175 * @param {Object} $productObject product object 8176 * @param {jQuery} $productContainer - DOM container for a given product 8177 * @param {string} topLevelAttribute - Either 'color' or 'sizeType' 8178 */ 8179function processSwatchValues(attr, $productObject, $productContainer, topLevelAttribute) { 8180 attr.values.forEach(function (attrValue) { 8181 var $swatchSpan = $productContainer.find('[data-attr="' + attr.id + '"] [data-attr-value="' + attrValue.value + '"]'); 8182 var $swatchAnchor = $swatchSpan.parent(); 8183 var swatchOutOfStockText = $swatchAnchor.closest('.js-color-attribute').data('attr-oos-text'); 8184 8185 // Disable if not selectable 8186 $swatchSpan.removeClass('selected selectable unselectable'); 8187 $swatchAnchor.removeClass('selected selectable unselectable'); // This is only for visual display 8188 $swatchAnchor.data('attr-oos', ''); 8189 var url; 8190 if (attr.topLevelAttribute) { 8191 // Color as top-level 8192 /** 8193 * The top-level attribute (either color or sizeType) should always be clickable: 8194 * 8195 * For example, if you selected Standard/Black/M, normally you would not be 8196 * able to switch from Standard to Big, because Black/M is not a value combination 8197 * for Big. 8198 **/ 8199 url = attrValue.url; 8200 if (url === undefined) { 8201 // This would be very rare 8202 $swatchAnchor.data('attr-url', ''); 8203 $swatchAnchor.addClass('unselectable'); 8204 $swatchSpan.addClass('unselectable'); 8205 } else { 8206 // Top level is always selectable... Unless the URL above is empty. 8207 $swatchAnchor.data('attr-url', url); 8208 $swatchAnchor.addClass('selectable'); 8209 $swatchSpan.addClass('selectable'); 8210 } 8211 } else { 8212 // Color when SizeType is top-level. 8213 url = attrValue.url; 8214 if (url === undefined) { 8215 // This would be very rare 8216 $swatchAnchor.data('attr-url', ''); 8217 $swatchAnchor.addClass('unselectable'); 8218 $swatchSpan.addClass('unselectable'); 8219 } else { 8220 if (topLevelAttribute === 'sizeType' && attrValue.url === undefined) { 8221 // eslint-disable-line 8222 // If there is a SizeType dimension, this will mess up stuff... 8223 $swatchAnchor.data('attr-url', ''); 8224 $swatchAnchor.addClass('unselectable'); 8225 $swatchSpan.addClass('unselectable'); 8226 } else { 8227 $swatchAnchor.data('attr-url', url); 8228 $swatchAnchor.addClass('selectable'); 8229 $swatchSpan.addClass('selectable'); 8230 } 8231 } 8232 } 8233 var enableNotifyMe = isNotifyMeEnabled(attrValue, $productObject); 8234 8235 // Reset aria-label attribute for each color option 8236 $swatchAnchor.attr('aria-label', attrValue.displayValue); 8237 if (attrValue.selected) { 8238 $swatchAnchor.addClass('selected'); 8239 $swatchAnchor.attr('aria-label', attrValue.displayValue + ' ' + $swatchAnchor.data('selected-label')); 8240 $swatchAnchor.trigger('blur').on('focus', function (e) { 8241 e.preventDefault(); 8242 e.target.focus({ 8243 preventScroll: true 8244 }); 8245 }); 8246 $swatchSpan.addClass('selected'); 8247 $swatchAnchor.trigger('attribute:select', [$swatchAnchor, attrValue]); 8248 } 8249 if (attrValue.masterSelectable === false && enableNotifyMe !== null && !enableNotifyMe) { 8250 $swatchAnchor.addClass('not-orderable'); 8251 $swatchSpan.addClass('not-orderable'); 8252 if ($swatchAnchor.hasClass('unselectable')) { 8253 $swatchAnchor.removeClass('unselectable'); 8254 $swatchSpan.removeClass('unselectable'); 8255 } 8256 } else if (attrValue.masterSelectable === false && enableNotifyMe) { 8257 if (!$swatchAnchor.hasClass('unselectable')) { 8258 $swatchAnchor.addClass('unselectable'); 8259 $swatchSpan.addClass('unselectable'); 8260 } 8261 } 8262 if (attrValue.pdpUrl === undefined) { 8263 $swatchAnchor.removeAttr('href'); 8264 } else { 8265 $swatchAnchor.attr('href', attrValue.pdpUrl); 8266 } 8267 if ($swatchAnchor.hasClass('unselectable')) { 8268 $swatchAnchor.attr('data-attr-oos', swatchOutOfStockText); // sets the data attribute to the out of stock text 8269 } else { 8270 $swatchAnchor.attr('data-attr-oos', ''); 8271 } 8272 8273 /* 8274 window.console.log('---', 8275 'ID:', attr.id, 8276 'Value:', attrValue.value, 8277 'Selected:', attrValue.selected, 8278 'Selectable:', attrValue.selectable, '\n', 8279 'url:', (attrValue.url && attrValue.url.split('?').length ? attrValue.url.split('?')[1] : attrValue.url), '\n' 8280 ); 8281 */ 8282 }); 8283} 8284 8285/** 8286 * Process attribute values associated with an attribute that does not have image swatches 8287 * 8288 * @param {Object} attr - Attribute 8289 * @param {string} attr.id - Attribute ID 8290 * @param {Object[]} attr.values - Array of attribute value objects 8291 * @param {string} attr.values.value - Attribute coded value 8292 * @param {string}
8292 attr.values.url - URL to de/select an attribute value of the product 8293 * @param {boolean} attr.values.isSelectable - Flag as to whether an attribute value can be 8294 * selected. If there is no variant that corresponds to a specific combination of attribute 8295 * values, an attribute may be disabled in the Product Detail Page 8296 * @param {jQuery} $productContainer - DOM container for a given product 8297 * @param {string} topLevelAttribute - Either 'color' or 'sizeType' 8298 */ 8299function processNonSwatchValues(attr, $productContainer, topLevelAttribute) { 8300 // eslint-disable-line 8301 var count = 0; 8302 var selectedCount = 0; 8303 attr.values.forEach(function (attributeValue) { 8304 if (attributeValue.selectable) { 8305 count++; 8306 } 8307 if (attributeValue.selected) { 8308 selectedCount++; 8309 } 8310 }); 8311 attr.values.forEach(function (attrValue) { 8312 var $attrValue = $productContainer.find('[data-attr="' + attr.id + '"] [data-attr-value="' + attrValue.value + '"]'); 8313 var attrOutOfStockText = $attrValue.closest('.js-size-attribute, .js-dimension-attribute').data('attr-oos-text'); 8314 8315 // Reset Everything 8316 $attrValue.removeClass('selected selectable unselectable'); 8317 $attrValue.data('attr-oos', ''); 8318 if (selectedCount === 0) { 8319 $attrValue.closest('.js-attribute').find('.js-attr-label-value').removeClass('text-danger').text(''); // reset attribute label 8320 } 8321 8322 var url; 8323 if (attr.topLevelAttribute) { 8324 // SizeType 8325 /** 8326 * The top-level attribute (either color or sizeType) should always be clickable: 8327 * 8328 * For example, if you selected Standard/Black/M, normally you would not be 8329 * able to switch from Standard to Big, because Black/M is not a value combination 8330 * for Big. 8331 **/ 8332 url = attrValue.url; 8333 if (url === undefined) { 8334 // This would be very rare 8335 $attrValue.data('attr-url', ''); 8336 $attrValue.addClass('unselectable'); 8337 } else { 8338 // Top level is always selectable... Unless the URL above is empty. 8339 $attrValue.data('attr-url', url); 8340 $attrValue.addClass('selectable'); 8341 } 8342 } else { 8343 // Size or Dimension 8344 url = attrValue.url; 8345 if (url === undefined) { 8346 // This would be very rare 8347 $attrValue.data('attr-url', ''); 8348 $attrValue.addClass('unselectable'); 8349 } else { 8350 $attrValue.data('attr-url', url); 8351 if (attrValue.selectable) { 8352 $attrValue.addClass('selectable'); 8353 } else { 8354 $attrValue.addClass('unselectable'); 8355 } 8356 } 8357 } 8358 8359 // Reset aria-label attribute 8360 $attrValue.attr('aria-label', $attrValue.data('attr-hover')); 8361 if (attrValue.selected) { 8362 $attrValue.addClass('selected'); 8363 $attrValue.attr('aria-label', $attrValue.data('attr-hover') + ' ' + $attrValue.data('selected-label')); 8364 $attrValue.trigger('blur').on('focus', function (e) { 8365 e.preventDefault(); 8366 e.target.focus({ 8367 preventScroll: true 8368 }); 8369 }); 8370 $attrValue.trigger('attribute:select', [$attrValue, attrValue]); 8371 } 8372 if (attr.attributeId && attr.attributeId.toLowerCase() === 'dimension') { 8373 if (attrValue.selectable) { 8374 if (count === 1 && attrValue.selected) { 8375 $attrValue.addClass('selected'); 8376 } else { 8377 $attrValue.addClass('selectable'); 8378 } 8379 } else { 8380 $attrValue.addClass('unselectable'); 8381 } 8382 } 8383 if (attrValue.masterSelectable === false) { 8384 $attrValue.addClass('unselectable'); 8385 } 8386 if (attrValue.pdpUrl === undefined) { 8387 $attrValue.removeAttr('href'); 8388 } else { 8389 $attrValue.attr('href', attrValue.pdpUrl); 8390 } 8391 if ($attrValue.hasClass('unselectable')) { 8392 $attrValue.attr('data-attr-oos', attrOutOfStockText); // sets the HTML data attribute to the out of stock text 8393 } else { 8394 $attrValue.attr('data-attr-oos', ''); 8395 } 8396 8397 /* 8398 window. 8399 ('---', 8400 'ID:', attr.id, 8401 'Value:', attrValue.value, 8402 'Selected:', attrValue.selected, 8403 'Selectable:', attrValue.selectable, '\n', 8404 'url:', (attrValue.url && attrValue.url.split('?').length ? attrValue.url.split('?')[1] : attrValue.url), '\n' 8405 ); 8406 */ 8407 }); 8408} 8409 8410/** 8411 * Color swatches can be broken up into price groups. If all the swatches are hidden, also hide the price label. 8412 * @param {jQuery}
8412 $productContainer - DOM container for a given product 8413 */ 8414function hideColorPriceGroups($productContainer) { 8415 $('.priceGroup', $productContainer).each(function () { 8416 var groupVisible = false; 8417 $(this).find('.color-value').each(function () { 8418 if ($(this).hasClass('selectable') && $(this).hasClass('not-orderable') === false && $(this).hasClass('invalid') === false) { 8419 groupVisible = true; 8420 } 8421 }); 8422 if (groupVisible) { 8423 $(this).show(); 8424 } else { 8425 $(this).hide(); 8426 } 8427 }); 8428} 8429 8430/** 8431 * Pass in an array of SKUs, the variantData array, and and Attribute ID 8432 * Returns an array of unique Attribute Values from the SKUs 8433 * 8434 * @param {Object} variantData - Indexed by SKU. See models/product/decorators/variantMatrix.js 8435 * @param {array} skuArray - Array of skus 8436 * @param {string} attributeID - Attribute ID 8437 * @return {array} - Array of unique attribute values 8438 */ 8439function getSkuValues(variantData, skuArray, attributeID) { 8440 var arr = []; 8441 for (var i = 0; i < skuArray.length; i++) { 8442 var sku = skuArray[i]; 8443 if (variantData[sku] !== undefined) { 8444 var attributeValue = variantData[sku][attributeID]; 8445 if (arr.indexOf(attributeValue) === -1) { 8446 arr.push(attributeValue); 8447 } 8448 } 8449 } 8450 return arr; // These are all the valid values 8451} 8452 8453/** 8454 * For products with 3 dimensions of attributes, we must hide/show swatch combinations 8455 * that are not valid possibilities. For example, a pant sizes of SizeType "Big" and a 8456 * Size of "30/30". Big pants are not available in this size... 8457 * 8458 * @param {jQuery} $productContainer - DOM element for a given product 8459 * @param {array} attrs - Attributes from the AJAX productObject.variationAttributes result 8460 * @param {string} topLevelAttribute - sizeType, color or empty 8461 * @param {array} allAttributes - Possible values are sizeType, color, size, dimension 8462 * @param {Object} variantData - Indexed by SKU. See models/product/decorators/variantMatrix.js 8463 * @param {Object} variantMatrix - Indexed by Attribute. See models/product/decorators/variantMatrix.js 8464 */
8465function hideShowValidSwatches($productContainer, attrs, topLevelAttribute, allAttributes, variantData, variantMatrix) { 8466 if (topLevelAttribute === '') { 8467 return; 8468 } 8469 var hasSizeType = allAttributes.indexOf('sizeType') !== -1; 8470 var hasColor = allAttributes.indexOf('color') !== -1; 8471 var hasSize = allAttributes.indexOf('size') !== -1; 8472 var hasDimension = allAttributes.indexOf('dimension') !== -1; 8473 8474 // The functionality below only applies in these two scenarios: 8475 // 1. A product which SizeType + Color + Size 8476 // 2. A product which has Color + Size + Dimension 8477 if (!(hasSizeType || hasDimension)) { 8478 return; 8479 } 8480 8481 // Get all the currently selected attributes values: 8482 var selectedAttributes = {}; 8483 attrs.forEach(function (attr) { 8484 attr.values.forEach(function (attrValue) { 8485 if (attrValue.selected) { 8486 selectedAttributes[attr.id] = attrValue.value; 8487 } 8488 }); 8489 }); 8490 var skuArray; 8491 if (topLevelAttribute === 'sizeType' && hasSizeType) { 8492 $productContainer.find('.js-attribute-size .js-attribute-value').removeClass('invalid'); 8493 $productContainer.find('.js-attribute-color .js-attribute-value').removeClass('invalid'); 8494 8495 // There should always be a SizeType selected, otherwise we 8496 // cannot determine which color and size swatches are valid. 8497 var selectedSizeType = selectedAttributes['sizeType']; // eslint-disable-line dot-notation 8498 if (selectedSizeType === undefined) { 8499 return; 8500 } 8501 8502 // Array of skus which have the selected SizeType. 8503 skuArray = variantMatrix['sizeType'][selectedSizeType]; // eslint-disable-line dot-notation 8504 8505 // Based on the selected SizeType, show/hide "valid" Size swatches. 8506 if (hasSize) { 8507 var validSizes = getSkuValues(variantData, skuArray, 'size'); // Array of unique "Size" values in sku array. 8508 8509 // Hide all skus with invalid values 8510 if (validSizes.length) { 8511 $productContainer.find('.js-attribute-size .js-attribute-value').each(function () { 8512 var val = $(this).data('attr-value'); 8513 if (val !== undefined && validSizes.indexOf(String(val)) === -1) { 8514 // Value of swatch does not appear in array. Hide swatch. 8515 $(this).addClass('invalid'); 8516 } 8517 }); 8518 } 8519 } 8520 8521 // Based on the selected SizeType, show/hide "valid" Color swatches. 8522 if (hasColor) { 8523 var validColors = getSkuValues(variantData, skuArray, 'color'); // Array of unique "Color" values in sku array. 8524 8525 if (validColors.length) { 8526 $productContainer.find('.js-attribute-color .js-attribute-value').each(function () { 8527 var val = $(this).data('attr-value'); 8528 if (val !== undefined && validColors.indexOf(String(val)) === -1) { 8529 // Value of swatch does not appear in array. Hide swatch. 8530 $(this).addClass('invalid'); 8531 } 8532 }); 8533 } 8534 } 8535 } else if (topLevelAttribute === 'color' && hasDimension) { 8536 $productContainer.find('.js-attribute-dimension .js-attribute-value').removeClass('invalid'); 8537 8538 // Dimension is an attribute of the selected Size and Color. 8539 var selectedSize = selectedAttributes['size']; // eslint-disable-line dot-notation 8540 if (selectedSize === undefined) { 8541 return; 8542 } 8543 var skuColorArray = []; 8544 var skuSizeArray = []; 8545 if (hasColor) { 8546 var selectedColor = selectedAttributes['color']; // eslint-disable-line dot-notation 8547 if (selectedColor !== undefined) { 8548 skuColorArray = variantMatrix['color'][selectedColor]; // eslint-disable-line dot-notation 8549 } 8550 } 8551 8552 // Based on the selected Size, show/hide "valid" Size swatches. 8553 if (hasSize) { 8554 // Array of skus which have the selected SizeType. 8555 skuSizeArray = variantMatrix['size'][selectedSize]; // eslint-disable-line dot-notation 8556 8557 // Note: Both Color and Size must be selected to determine which lengths are "valid" options. 8558 if (skuSizeArray.length && skuColorArray.length) { 8559 // If both Size and Color are selected, determine which skus 8560 // appear in both arrays via intersection. 8561 skuArray = utils.arrayIntersection(skuSizeArray, skuColorArray); 8562 } else { 8563 skuArray = skuSizeArray; 8564 }
8565 var validDimensions = getSkuValues(variantData, skuArray, 'dimension'); // Array of unique "dimension" values in sku array. 8566 8567 // Hide all skus with invalid values 8568 if (validDimensions.length) { 8569 $productContainer.find('.js-attribute-dimension .js-attribute-value').each(function () { 8570 var val = $(this).data('attr-value'); 8571 if (val !== undefined && validDimensions.indexOf(String(val)) === -1) { 8572 // Value of swatch does not appear in array. Hide swatch. 8573 $(this).addClass('invalid'); 8574 } 8575 }); 8576 } 8577 } 8578 } 8579} 8580 8581/** 8582 * Get selected size/dimension swatch 8583 * @param {string} variantID Variant ID to locate in the productCache data 8584 * @param {Object} swatchArrays Contains arrays of variants, organized by size/dim 8585 * @param {Array} swatchKeys Array containing swatch key values (eg. 'S', 'M', 'L', etc.) 8586 * @return {string} Size or dimension that is currently selected 8587 */ 8588function getSelectedSwatchValue(variantID, swatchArrays, swatchKeys) { 8589 var result; 8590 for (var i = 0; i < swatchKeys.length; i++) { 8591 if (swatchArrays[swatchKeys[i]].includes(variantID)) { 8592 result = swatchKeys[i]; 8593 break; 8594 } 8595 } 8596 return result; 8597} 8598 8599/** 8600 * Adds 'unselectable' class to color swatches 8601 * @param {Object} colorVariantArrays Object containing variantID arrays, grouped by color ID 8602 * @param {Array} colorVariantKeys Array of color ID indices 8603 * @param {string} variantID Target variant ID 8604 */ 8605function markOOSColorVariants(colorVariantArrays, colorVariantKeys, variantID) { 8606 colorVariantKeys.forEach(function (colorVarKey) { 8607 if (colorVariantArrays[colorVarKey].includes(variantID)) { 8608 // Find the matching color swatch span and mark the parent anchor element as 'unselectable' 8609 $('.js-attribute-value[data-attr-value="' + colorVarKey + '"]').closest('.js-color-swatch').removeClass('selectable').addClass('unselectable'); 8610 } 8611 }); 8612} 8613 8614/** 8615 * 8616 * @param {jQuery} $productContainer - DOM element for a given product 8617 */ 8618function updateOOSColorVariants($productContainer) { 8619 var masterID = String($productContainer.data('master-pid')); 8620 var variantID = String($productContainer.data('pid')); 8621 8622 // Exit function if productCache prerequisites are not met 8623 if (!window.productCache || !masterID || !variantID || !window.productCache[masterID] || !window.productCache[masterID].variantMatrix || !window.productCache[masterID].variantMatrix.inventory) { 8624 return; 8625 } 8626 if (JSON.stringify(oosData) === '{}') { 8627 oosData.colorVariantArrays = window.productCache[masterID].variantMatrix.color || {}; 8628 oosData.colorVariantKeys = Object.keys(oosData.colorVariantArrays); 8629 oosData.sizeVariantArrays = window.productCache[masterID].variantMatrix.size || {}; 8630 oosData.sizeVariantKeys = Object.keys(oosData.sizeVariantArrays); 8631 oosData.dimVariantArrays = window.productCache[masterID].variantMatrix.dimension || {}; 8632 oosData.dimVariantKeys = Object.keys(oosData.dimVariantArrays); 8633 } 8634 var oosVariants = window.productCache[masterID].variantMatrix.inventory[0]; 8635 if (oosVariants) { 8636 var selectedSize; 8637 var selectedDim; 8638 selectedSize = oosData.sizeVariantArrays ? getSelectedSwatchValue(variantID, oosData.sizeVariantArrays, oosData.sizeVariantKeys) : null; 8639 selectedDim = oosData.dimVariantArrays ? getSelectedSwatchValue(variantID, oosData.dimVariantArrays, oosData.dimVariantKeys) : null; 8640 if (selectedSize) { 8641 if (selectedDim) { 8642 // Locate variantID that may exist in intersection of size & dimension arrays 8643 // and identify which colors are out of stock for this size & dimension combination 8644 oosData.dimVariantArrays[selectedDim].forEach(function (variant) { 8645 if (oosVariants.includes(variant) && oosData.sizeVariantArrays[selectedSize].includes(variant)) { 8646 markOOSColorVariants(oosData.colorVariantArrays, oosData.colorVariantKeys, variant); 8647 } 8648 }); 8649 } else { 8650 // Loop through 'size' variants and identify which colors are out of stock for this size 8651 oosData.sizeVariantArrays[selectedSize].forEach(function (variant) { 8652 if (oosVariants.includes(variant)) { 8653 markOOSColorVariants(oosData.colorVariantArrays, oosData.colorVariantKeys, variant); 8654 } 8655 }); 8656 } 8657 } 8658 } 8659} 8660 8661/** 8662 * Routes the handling of attribute processing depending on whether the attribute has image 8663 * swatches or not 8664 * 8665 * @param {Object} productObject - Product Data 8666 * @param {string} attr.id - Attribute ID 8667 * @param {jQuery}
8667 $productContainer - DOM element for a given product 8668 */ 8669function updateAttrs(productObject, $productContainer) { 8670 var attrs = productObject.variationAttributes; 8671 8672 // Currently, the only attribute type that has image swatches is Color. 8673 var attrsWithSwatches = ['color']; 8674 8675 // Find attribute with topLevelAttribute == true 8676 var topLevelArray = attrs.filter(function (attr) { 8677 return attr.topLevelAttribute; 8678 }); 8679 8680 // Possible values are: sizeType, color or empty. 8681 var topLevelAttribute = topLevelArray.length ? topLevelArray[0].id : ''; 8682 8683 // Determine all available attributes: sizeType, color, size, dimension 8684 var allAttributes = []; 8685 attrs.forEach(function (attr) { 8686 allAttributes.push(attr.id); 8687 if (attrsWithSwatches.indexOf(attr.id) > -1) { 8688 processSwatchValues(attr, productObject, $productContainer, topLevelAttribute); 8689 } else { 8690 processNonSwatchValues(attr, $productContainer, topLevelAttribute); 8691 } 8692 }); 8693 8694 // variantData and variantMatrix values are set in productDetails.isml and added to the 8695 // window object. Values are indexed by the master PID so multiple Quickview windows 8696 // are possible without overwriting these values. 8697 var pid = productObject.masterId; 8698 if (window.productCache && window.productCache[pid]) { 8699 var variantData = window.productCache[pid].variantData; 8700 var variantMatrix = window.productCache[pid].variantMatrix;
8701 hideShowValidSwatches($productContainer, attrs, topLevelAttribute, allAttributes, variantData, variantMatrix); 8702 } 8703 hideColorPriceGroups($productContainer); 8704} 8705 8706/** 8707 * Updates the availability status in the Product Detail Page 8708 * 8709 * @param {Object} response - Ajax response object after an attribute value has been [de]selected 8710 * @param {jQuery} $productContainer - DOM element for a given product 8711 * 8712 * @param {Object} selectedAttributeID - attribute being updated 8713 */ 8714function updateAvailability(response, $productContainer, selectedAttributeID) { 8715 var availabilityValue = ''; 8716 var availabilityMessages = response.product.availability.messages; 8717 // this boolean is to hide the "In Stock" message on PDP page 8718 var instockBool = response.product.availability.instock; 8719 var velocityValue = ''; 8720 var velocityMessages = response.product.velocityMessage.messages; 8721 8722 // Adding the condition if price is null then "Availability message" should be disabled 8723 if (!instockBool && response.product.readyToOrder && response.product.price.sales && response.product.price.sales.value && availabilityMessages.length) { 8724 availabilityValue += '<div class="availability-msg__container alert__content">'; 8725 availabilityMessages.forEach(function (message) { 8726 availabilityValue += '<div class="message">' + message.content + '</div>'; 8727 }); 8728 availabilityValue += '</div>'; 8729 } 8730 8731 // Reset Notify Me form and messages 8732 $('.notifyMeFormMessage').hide(); 8733 $('.js-notifyMeFormContainer').hide(); 8734 if (velocityMessages.length) { 8735 velocityValue += '<div class="velocity-msg__container">'; 8736 velocityMessages.forEach(function (message) { 8737 velocityValue += $('<div/>', { 8738 class: message.cssClass ? message.cssClass : '', 8739 text: message.text 8740 })[0].outerHTML; 8741 }); 8742 velocityValue += '</div>'; 8743 // Reveal "Notify Me" button and update variant ID 8744 $('.notify-me.btn').show().data('cta', 'showForm').data('pid', response.product.id); 8745 } else { 8746 // hide notify me messages and button 8747 $('.product__message--velocity').hide(); 8748 $('.notify-me.btn').hide(); 8749 } 8750 8751 // Remove initial loading state class 8752 $('.js-attribute').removeClass('loading-opacity'); 8753 $($productContainer).trigger('product:updateAvailability', { 8754 product: response.product, 8755 $productContainer: $productContainer, 8756 selectedAttributeID: selectedAttributeID, 8757 message: availabilityValue, 8758 availabilityMessages: availabilityMessages, 8759 resources: response.resources, 8760 velocityMessage: velocityValue 8761 }); 8762} 8763 8764/** 8765 * Make "notify me" status visible on variant swatches 8766 */ 8767function setVariantNotifyMeStatus() { 8768 var variantMaster = $('.product-detail').data('master-pid'); 8769 var colorSwatchID = $('.js-attribute-value.selected').data('attr-value'); 8770 8771 // In checkout, this object does not exist, causing an error to be thrown in the console. 8772 if (!window.productCache) { 8773 return; 8774 } 8775 var colorSwatchVariantArray = window.productCache[variantMaster].variantMatrix.color[colorSwatchID]; 8776 if (colorSwatchVariantArray) { 8777 // Lookup variant sizes 8778 colorSwatchVariantArray.forEach(function (variant) { 8779 var variantSize = window.productCache[variantMaster].variantData[variant].size; 8780 var variantNotifyMe = window.productCache[variantMaster].variantData[variant].bisnflag; 8781 var $swatch = $('.js-size-swatch[data-attr-hover="' + variantSize + '"]'); 8782 8783 // Flag swatches to indicate notify me status (see forceOOSNotifyMe) 8784 $swatch.toggleClass('js-notifyme-swatch', !!variantNotifyMe); 8785 }); 8786 } 8787} 8788 8789/** 8790 * Force notify me message to display if all variants are OOS 8791 */ 8792function forceOOSNotifyMe() { 8793 var $notifymeVariant = $('.js-notifyme-swatch.selected'); 8794 var allOOS = $notifymeVariant.length && $('.js-size-swatch.unselectable').length === $('.js-size-swatch').length; 8795 if (allOOS && $('.js-notifyMeFormContainer').is(':empty')) { 8796 var selectedAttributeID = $notifymeVariant.closest('.js-attribute').data('attr'); 8797 var velocityMessage = $('.selectswatch-size-msg').text(); 8798 var pid = $('.product-detail').data('pid');
8799 var $productContainer = $notifymeVariant.closest('.set-item'); 8800 if (!$productContainer.length) { 8801 $productContainer = $notifymeVariant.closest('.product-detail'); 8802 } 8803 $(window).trigger('product:triggerNotifyMe', { 8804 hideForm: true 8805 }); 8806 $($productContainer).trigger('product:updateAvailability', { 8807 product: { 8808 id: pid, 8809 notifyme: true 8810 }, 8811 $productContainer: $productContainer, 8812 selectedAttributeID: selectedAttributeID, 8813 velocityMessage: velocityMessage 8814 }); 8815 } 8816} 8817 8818/** 8819 * Generates callout message html for promotions 8820 * 8821 * @param {array} promotions - list of promotions 8822 * @return {string} - Compiled HTML 8823 */ 8824function getPromotionCalloutHtml(promotions) { 8825 if (!promotions) { 8826 return ''; 8827 } 8828 var html = ''; 8829 promotions.forEach(function (promotion) { 8830 // Verify that these are not member exclusive promotions and that calloutMsg has a valid value 8831 // promotion.details is optional 8832 if (!promotion.isExclusive) { 8833 promotion.callOutMessageDisplayPages.forEac
8833h(function (displayPage) { 8834 if (displayPage.value === 'PDP' && promotion.calloutMsg) { 8835 html += "<div class=\"callout\" title=\"".concat(promotion.details, "\">").concat(promotion.calloutMsg, "</div>"); 8836 } 8837 }); 8838 } 8839 }); 8840 return html; 8841} 8842 8843/** 8844 * Generates callout message html for exclusive member promotions 8845 * 8846 * @param {Object} promotion - promotion 8847 * @return {string} - Compiled HTML 8848 */ 8849function getExclusivePromotionCalloutHtml(promotion) { 8850 if (!promotion || !promotion.callOutMessageDisplayPages) { 8851 return ''; 8852 } 8853 var html = ''; 8854 8855 // Verify that these are member exclusive promotions and that calloutMsg has a valid value 8856 // promotion.details is optional 8857 promotion.callOutMessageDisplayPages.forEach(function (displayPage) { 8858 if (displayPage.value === 'PDP' && promotion.calloutMsg) { 8859 var highlightClass = promotion.messageHighlight ? 'callout--highlight' : ''; 8860 if (promotion.calloutOpenAccount) { 8861 html += "\n <button class=\"callout ".concat(highlightClass, " btn btn-link js-open-account\" title=\"").concat(promotion.details, "\">\n ").concat(promotion.calloutMsg, "\n </button>"); 8862 } else { 8863 html += "<div class=\"callout ".concat(highlightClass, "\" title=\"").concat(promotion.details, "\">").concat(promotion.calloutMsg, "</div>"); 8864 } 8865 } 8866 }); 8867 return html; 8868} 8869 8870/** 8871 * Change product primary images when user hovers on color swatches 8872 * @param {Object} images - images to be updated 8873 * @param {Object} $productContainer - Product Details container reference 8874 */ 8875function onColorVariantHover(images, $productContainer) { 8876 // Update primary images 8877 if (images) { 8878 var $imageGalleries = $productContainer.find('.js-product-gallery, .js-product-gallery-thumb'); 8879 var retinaEnabled = window.resources.images.retinaEnabled || false; 8880 var hiresImgUrlParams = window.resources.images.hiresImgUrlParams; 8881 var pdpImgUrlParams = window.resources.images.pdpProductImgAppend; 8882 var badgeData = $productContainer.data('badge'); 8883 var pdpTechBadgeData = $productContainer.data('pdp-tech-badge'); 8884 var isQuickView = $productContainer.hasClass('product-quickview'); 8885 var enableStylitics = window.resources.stylitics && window.resources.stylitics.enabled; 8886 var MAX_QV_IMG_COUNT = 8; // Limit number of images on quickview 8887 8888 $imageGalleries.each(function () { 8889 var $imageGallery = $(this); 8890 var $swiperWrapper = $imageGallery.find('.swiper-wrapper'); 8891 var swiperSlideStyle = $swiperWrapper.find('.swiper-slide').first().attr('style') || ''; 8892 var isThumbnail = $imageGallery.hasClass('js-product-gallery-thumb'); 8893 var imageAltIdx = 1; 8894 $swiperWrapper.empty(); 8895 for (var idx = 0; idx < images.length; idx++) { 8896 var imageData = images[idx]; 8897 if (isQuickView && idx === MAX_QV_IMG_COUNT) { 8898 break; 8899 } 8900 if (!imageData) { 8901 continue; 8902 } 8903 var url = imageData.url; 8904 var alt = imageData.alt; 8905 var width = imageData.width; 8906 var height = imageData.height; 8907 var badgeHTML = Badge.displayBadge(badgeData); 8908 var techBadgeHTML = Badge.displayTechBadge(pdpTechBadgeData); 8909 var swiperSlideClass = ''; 8910 var $swiperSlide = void 0; 8911 var $swiperImg = void 0; 8912 var $zoomControls = void 0; 8913 var $styliticsLink = void 0; 8914 if (url.length && url.indexOf('?') <= 0) { 8915 url += pdpImgUrlParams; 8916 } 8917 if (idx === 0) { 8918 swiperSlideClass = isThumbnail ? 'swiper-slide-thumb-active' : 'swiper-slide-active'; 8919 } else if (idx === 1) { 8920 swiperSlideClass = 'swiper-slide-next'; 8921 } 8922 if (imageData.videoUrl) { 8923 swiperSlideClass += ' swiper-slide-video'; 8924 } else { 8925 swiperSlideClass += ' js-product-image'; 8926 } 8927 $swiperSlide = $("<li class=\"swiper-slide ".concat(swiperSlideClass, "\" style=\"").concat(swiperSlideStyle, "\" data-index=\"").concat(idx, "\"></li>")); 8928 if (imageData.videoUrl) { 8929 if (isThumbnail) { 8930 $swiperImg = $("\n <picture>\n <img\n src=\"".concat(imageData.posterUrl, "\"\n alt=\"Thumbnail: ").concat(imageData.productVideoAltText || alt, "\"\n itemprop=\"image\" />\n </picture>\n <svg class=\"svgicon video-icon text-white\"><use href=\"#play\"></use></svg>\n ")); 8931 } else { 8932 $swiperImg = $("\n <video auto
8932play loop playsinline muted poster=\"".concat(imageData.posterUrl, "\" class=\"img-fluid\" name=\"").concat(imageData.productVideoAltText || alt, "\">\n <source src=\"").concat(imageData.videoUrl, "\" type=\"video/mp4\" />\n </video>\n ")); 8933 } 8934 } else { 8935 var onModelAttribute = imageData.modelData ? "data-onmodel=\"".concat(encodeURIComponent(imageData.modelData), "\"") : ''; 8936 8937 // Do not attach zoom controls for QuickView 8938 $zoomControls = !isQuickView && !isThumbnail ? $("\n <button class=\"swiper-controls__zoom btn-icon js-pdp-gallery-zoom\">\n <svg class=\"swiper-controls__icon-zoom--in\" width=\"24\" height=\"24\">\n <use href=\"#zoom_in\"></use>\n </svg>\n <svg class=\"swiper-controls__icon-zoom--out\" width=\"24\" height=\"24\">\n <use href=\"#zoom_out\"></use>\n </svg>\n </button>\n ") : null; 8939 8940 // Do not attach stylitics jumplink for QuickView 8941 $styliticsLink = enableStylitics && !isQuickView && !isThumbnail ? $("\n <div class=\"stylitics-jumplink js-stylitics-jumplink\">\n <span class=\"stylitics-jumplink-text\">\n ".concat(window.resources.stylitics.jumplinkCta, "\n </span>\n <svg class=\"svgicon\" width=\"24\" height=\"24\">\n <use href=\"#expand_more\"></use>\n </svg>\n </div>\n ")) : ''; 8942 if (isThumbnail) { 8943 $swiperImg = $("\n <img\n src=\"".concat(url, "\"\n srcset=\"").concat(retinaEnabled && imageData.retinaUrl ? imageData.retinaUrl + ' 2x' : '', "\"\n alt=\"").concat('Thumbnail: ' + alt + ', image ' + imageAltIdx++, "\"\n class=\"js-model-image\"\n itemprop=\"image\"\n data-lowres=\"").concat(url, "\"\n data-hires=\"").concat(url.split('?')[0] + hiresImgUrlParams, "\"\n ").concat(onModelAttribute, "\n width=\"").concat(width, "\"\n height=\"").concat(height, "\"\n onerror=\"window.imageError(this, ").concat(retinaEnabled ? '\'retina\'' : '\'large\'', ")\"\n />\n ")); 8944 } else { 8945 $swiperImg = $("\n <div class=\"slide-container\">\n ".concat(badgeHTML, "\n ").concat(techBadgeHTML, "\n <div class=\"swiper-zoom-container\">\n <img\n src=\"").concat(url, "\"\n srcset=\"").concat(retinaEnabled && imageData.retinaUrl ? imageData.retinaUrl + ' 2x' : '', "\"\n alt=\"").concat(alt + ', image ' + imageAltIdx++, "\"\n class=\"js-model-image\"\n itemprop=\"image\"\n data-lowres=\"").concat(url, "\"\n data-hires=\"").concat(url.split('?')[0] + hiresImgUrlParams, "\"\n ").concat(onModelAttribute, "\n width=\"").concat(width, "\"\n height=\"").concat(height, "\"\n onerror=\"window.imageError(this, ").concat(retinaEnabled ? '\'retina\'' : '\'large\'', ")\"\n />\n </div>\n </div>\n ")); 8946 } 8947 } 8948 $swiperImg.append($zoomControls); 8949 $swiperImg.append($styliticsLink); 8950 $swiperSlide.append($swiperImg); 8951 $swiperSlide.appendTo($swiperWrapper); 8952 }
8953 this.swiper.update(); 8954 this.swiper.slideTo(0); 8955 }); 8956 $('body').trigger('product:afterImageGalleryUpdate'); 8957 } 8958} 8959 8960/** 8961 * Create sketchfab asset 8962 * @param {Object} assetData - assets to be updated 8963 * @param {boolean} isThumbnail - if asset is a thumbnail 8964 * @return {jQuery} $asset 8965 */ 8966function createSketchfabAsset(assetData, isThumbnail) { 8967 var $asset; 8968 if (isThumbnail) { 8969 $asset = $("\n <li class=\"swiper-slide\">\n <svg class=\"img-fluid\"><use xlink:href=\"#360icon\"></use></svg>\n </li>\n "); 8970 } else { 8971 $asset = $("\n <li id=\"pdp3Dsketch\" class=\"swiper-slide\">\n <iframe class=\"lazy\" width=\"640\" height=\"480\" src=\"https://sketchfab.com/models/".concat(assetData.modelId, "/embed\" frameborder=\"0\" allow=\"autoplay; fullscreen; vr\" mozallowfullscreen=\"true\" webkitallowfullscreen=\"true\"></iframe>\n </li>\n ")); 8972 } 8973 return $asset; 8974} 8975 8976/** 8977 * Create video asset 8978 * @param {Object} assetData - assets to be updated 8979 * @param {boolean} isThumbnail - if asset is a thumbnail 8980 * @return {jQuery} $asset 8981 */ 8982function createVideoAsset(assetData, isThumbnail) { 8983 var $asset; 8984 var $swiperContent; 8985 if (isThumbnail) { 8986 $asset = $("\n <li class=\"swiper-slide swiper-slide-video\">\n <svg class=\"svgicon video-icon text-white\"><use href=\"#play\"></use></svg>\n </li>\n "); 8987 } else { 8988 $asset = $("<li class=\"swiper-slide swiper-slide-video js-video-player video-play-button\" data-video-id=\"".concat(assetData.videoID, "\" data-host=\"").concat(assetData.videoType, "\"></li>")); 8989 } 8990 $swiperContent = $("\n <picture>\n <img\n src=\"".concat(assetData.productVideoThumbnail, "\"\n alt=\"").concat(assetData.productVideoThumbnailAltText, "\"\n itemprop=\"image\" />\n </picture>\n ")); 8991 $asset.prepend($swiperContent); 8992 return $asset; 8993} 8994 8995/** 8996 * Create asset slide and thumbnail 8997 * @param {Object} assetData - assets to be updated 8998 * @param {string} assetType - Asset type: video or sketchfab 8999 */ 9000function createSwiperAssets(assetData, assetType) { 9001 var $imageGalleries = $mainPDPGallery.closest('.primary-images').find('.js-product-gallery, .js-product-gallery-thumb'); 9002 $imageGalleries.each(function () { 9003 var $imageGallery = $(this); 9004 var $wrapper = $imageGallery.find('.swiper-wrapper'); 9005 var isThumbnail = $imageGallery.hasClass('js-product-gallery-thumb'); 9006 var $swiperSlide; 9007 if (assetType === 'sketchfab') { 9008 $swiperSlide = createSketchfabAsset(assetData, isThumbnail); 9009 } else if (assetType === 'video') { 9010 $swiperSlide = createVideoAsset(assetData, isThumbnail); 9011 } else { 9012 return; 9013 } 9014 $wrapper.append($swiperSlide); 9015 this.swiper.update(); 9016 }); 9017} 9018 9019/** 9020 * Create asset element 9021 * @param {Object} assetData - asset to be updated 9022 * @param {string} assetType - Asset type: video or sketchfab 9023 * @param {Object} $productContainer - for product container 9024 */ 9025function createAssets(assetData, assetType) { 9026 if (assetData) { 9027 createSwiperAssets(assetData, assetType); 9028 } 9029} 9030 9031/** 9032 * Create image container and hide existing images on products 9033 * @param {Object} images - images to be updated 9034 * @param {Object} $productContainer - Product Details container reference 9035 */ 9036function createImagesAndVideo(images, $productContainer) { 9037 // Update primary images 9038 if (images) { 9039 onColorVariantHover(images, $productContainer); 9040 } 9041 var altText = window.productThumbnailAltText ? window.productThumbnailAltText : 'null'; 9042 if (window.product_VideoData) { 9043 var productVideoData = window.product_VideoData; 9044 var videoData = { 9045 videoType: productVideoData.videoType, 9046 videoID: productVideoData.videoID, 9047 productVideoThumbnail: productVideoData.productVideoThumbnail, 9048 productVideoThumbnailAltText: altText 9049 }; 9050 createAssets(videoData, 'video'); 9051 } 9052 9053 // re-initialize video player after swiper update 9054 $(document).trigger('video:player:update'); 9055} 9056 9057/** 9058 * Parses JSON from Ajax call made whenever an attribute value is [de]selected 9059 * @param {Object} response - response from Ajax call 9060 * @param {Object} response.product - Product object 9061 * @param {string} response.product.id - Product ID 9062 * @param {Object[]} response.product.variationAttributes - Product attributes 9063 * @param {Object[]} response.product.images - Product images 9064 * @param {boolean} response.product.hasRequiredAttrsSelected - Flag as to whether all required 9065 * attributes have been selected. Used partially to 9066 * determine whether the Add to Cart button can be enabled 9067 * @param {jQuery}
9067 $productContainer - DOM element for a given product. 9068 * @param {Object} selectedAttributeID - attribute being updated 9069 */ 9070function handleVariantResponse(response, $productContainer, selectedAttributeID) { 9071 var isChoiceOfBonusProducts = $productContainer.parents('.choose-bonus-product-dialog').length > 0; 9072 var $omnibusPrice = $('.omnibus-price'); 9073 var isVariant; 9074 if (response.product.variationAttributes) { 9075 updateAttrs(response.product, $productContainer); 9076 isVariant = response.product.productType === 'variant'; 9077 if (isChoiceOfBonusProducts && isVariant) { 9078 $productContainer.parent('.bonus-product-item').data('pid', response.product.id); 9079 $productContainer.parent('.bonus-product-item').data('ready-to-order', response.product.readyToOrder); 9080 } 9081 } 9082 if (selectedAttributeID === 'color' && !window.resources.enableServerSideGallery) { 9083 var primaryImage = response.product.images.large; 9084 9085 // Update quickview/PDP primary images 9086 if ($('.quickview-modal').length) { 9087 createImagesAndVideo(primaryImage, $('.product-quickview')); 9088 } else if ($mainPDPGallery.length) { 9089 createImagesAndVideo(primaryImage, $('.product-detail')); 9090 } 9091 9092 // Reset notify me status on variant swatches 9093 setVariantNotifyMeStatus(); 9094 } 9095 9096 // Store attribute selections in the URL 9097 if (!$('.product-quickview').length && selectedAttributeID !== 'inventory' && response.variantUrl) { 9098 history.replaceState({ 9099 updatedAttr: selectedAttributeID 9100 }, '', response.variantUrl); 9101 } 9102 9103 // Update linked sizes URLs with attribute selections 9104 if (response.linkedSizesHtml) { 9105 $('.js-ext-size-type').replaceWith(response.linkedSizesHtml); 9106 } 9107 9108 // Update pricing 9109 if (!isChoiceOfBonusProducts) { 9110 var $priceSelector = $('.prices .price', $productContainer).length ? $('.prices .price', $productContainer) : $('.prices .price'); 9111 $priceSelector.replaceWith(response.product.price.html); 9112 } 9113 9114 // Update Omnibus pricing 9115 if (!response.product.lowestPrice30Days) { 9116 $omnibusPrice.empty(); 9117 } else if ($omnibusPrice.length) { 9118 $omnibusPrice.html(response.product.lowestPrice30Days.html); 9119 } 9120 9121 // Update promotions 9122 $('.promotions').html(getPromotionCalloutHtml(response.product.promotions)); 9123 $('.promotions').prepend(getExclusivePromotionCalloutHtml(response.product.exclusivePromotion)); 9124 if (isChoiceOfBonusProducts) { 9125 var $selectButton = $productContainer.find('.select-bonus-product'); 9126 $selectButton.trigger('bonusproduct:updateSelectButton', { 9127 product: response.product, 9128 $productContainer: $productContainer 9129 }); 9130 } else { 9131 // Enable "Add to Cart" button if all required attributes have been selected 9132 $('button.add-to-cart, button.add-to-cart-global, button.update-cart-product-global').trigger('product:updateAddToCart', { 9133 product: response.product, 9134 $productContainer: $productContainer 9135 }).trigger('product:statusUpdate', response.product); 9136 } 9137 updateAvailability(response, $productContainer, selectedAttributeID); 9138} 9139 9140/** 9141 * Get the selected swatches from the DOM. This data is used as a fallback to 9142 * retain the current user selections. Exclude the clicked attribute. 9143 * 9144 * @param {jQuery} $productContainer - DOM container for a given product 9145 * @param {jQuery} selectedAttributeID - The attribute that was last clicked (so we can exclude it) 9146 * @return {Object} - The results 9147 */ 9148function getUserSelectedAttributes($productContainer, selectedAttributeID) { 9149 var colorValue = $productContainer.find('.js-color-swatch.selected span').data('attr-value'); 9150 var sizeValue = $productContainer.find('.js-size-swatch.selected').data('attr-value'); 9151 var dimensionValue = $productContainer.find('.js-dimension-swatch.selected').data('attr-value'); 9152 var obj = {}; 9153 if (colorValue !== undefined || sizeValue !== undefined || dimensionValue !== undefined) { 9154 if (colorValue !== undefined && selectedAttributeID !== 'color') { 9155 obj['selection.color'] = colorValue; 9156 } 9157 if (sizeValue !== undefined && selectedAttributeID !== 'size') { 9158 obj['selection.size'] = sizeValue; 9159 } 9160 if (dimensionValue !== undefined && selectedAttributeID !== 'dimension') {
9161 obj['selection.dimension'] = dimensionValue; 9162 } 9163 } 9164 return obj; 9165} 9166 9167/** 9168 * dimension value append in URL parameter 9169 * 9170 * @param {string} selectedAttrUrl - the Url for the selected variation value 9171 * @return {string} - new selected variation value url 9172 */ 9173function appendDimensionParams(selectedAttrUrl) { 9174 var $url = selectedAttrUrl; 9175 var $dimensionSwatches = $('.product-detail').find('div.js-attribute-dimension .js-dimension-swatch'); 9176 if ($dimensionSwatches.length > 0) { 9177 if ($dimensionSwatches.length === 1 && $dimensionSwatches.hasClass('selected')) { 9178 $url = $url + '&dwvar_' + $('.product-detail').data('pid') + '_dimension=' + $dimensionSwatches.data('attr-value'); 9179 } else if ($dimensionSwatches.length > 1) { 9180 var $selectedAttr = $('.product-detail').find('div.js-attribute-dimension .js-dimension-swatch.selectable'); 9181 if ($selectedAttr.length === 1 && $selectedAttr.hasClass('selected')) { 9182 $url = $url + '&dwvar_' + $('.product-detail').data('pid') + '_dimension=' + $selectedAttr.data('attr-value'); 9183 } else { 9184 $selectedAttr = $('.product-detail').find('div.js-attribute-dimension .js-dimension-swatch.unselectable'); 9185 var len = $dimensionSwatches.length - $selectedAttr.length; 9186 if (len === 1) { 9187 $selectedAttr = $('.product-detail').find('div.js-attribute-dimension .js-dimension-swatch.selected'); 9188 if ($selectedAttr.length === 1) { 9189 $url = $url + '&dwvar_' + $('.product-detail').data('pid') + '_dimension=' + $selectedAttr.data('attr-value'); 9190 } 9191 } 9192 } 9193 } 9194 } 9195 return $url; 9196} 9197 9198/** 9199 * - Appends or removes the old chemistry message on a specific UPC. 9200 * - Message will be appended right after the Prop 65 message 9201 * or at the end of the entire bulleted list if there is no Prop 65 message. 9202 * - Do nothing if the old chemistry message exists in the data object parameter, 9203 * but the message already exists in the DOM. 9204 * - If the no old chemistry message exists in the data object parameter, 9205 * then remove any existing old chemistry message from the DOM. 9206 * 9207 * @param {Object} data - data object used to fill in dynamic portions of the html 9208 */ 9209function updateOldChemistryMessaging(data) { 9210 var $existingOldChemistryListItem = $('.js-old-chemistry'); 9211 if (data.product && data.product.oldChemistryText) { 9212 if (!$existingOldChemistryListItem.length) { 9213 var $prop65ListItemElement = $('.accordion__details').find('.js-prop-65'); 9214 var oldChemistryListItemHTMLString = '<li class="pdp-list__item js-old-chemistry">' + data.product.oldChemistryText + '</li>'; 9215 if ($prop65ListItemElement.length) { 9216 $prop65ListItemElement.after(oldChemistryListItemHTMLString); 9217 } else { 9218 $('.pdp-list').append(oldChemistryListItemHTMLString); 9219 } 9220 } 9221 } else { 9222 $existingOldChemistryListItem.remove(); 9223 } 9224} 9225 9226/**
9227 * Returns an object containing all non-dwvar_ parameters from the URLSearchParams object 9228 * @param {URLSearchParams} urlParams - The URLSearchParams object containing the query string parameters 9229 * @returns {object} - An object containing non dwvar_ parameters 9230 */ 9231var getNonDwvarParams = function getNonDwvarParams(urlParams) { 9232 var params = {}; 9233 9234 // URLSearchParams.entries() returns iterator 9235 var _iterator = _createForOfIteratorHelper(urlParams.entries()), 9236 _step; 9237 try { 9238 for (_iterator.s(); !(_step = _iterator.n()).done;) { 9239 var _step$value = _slicedToArray(_step.value, 2), 9240 key = _step$value[0], 9241 value = _step$value[1]; 9242 if (!key.includes('dwvar_')) { 9243 params[key] = value; 9244 } 9245 } 9246 } catch (err) { 9247 _iterator.e(err); 9248 } finally { 9249 _iterator.f(); 9250 } 9251 return params; 9252}; 9253 9254/** 9255 * updates the product view when a product attribute is selected or deselected 9256 * 9257 * @param {string} selectedValueUrl - the Url for the selected variation value 9258 * @param {jQuery} $productContainer - DOM element for current product 9259 * @param {string} selectedAttributeID - The ID of the swatch that was clicked (color, size, sizeType, dimension) 9260 */ 9261function attributeSelect(selectedValueUrl, $productContainer, selectedAttributeID) { 9262 if (selectedValueUrl) { 9263 var variantData = getUserSelectedAttributes($productContainer, selectedAttributeID); 9264 var galleryURL = selectedAttributeID === 'color' && $('.js-color-swatch[data-attr-url="' + selectedValueUrl + '"]').data('attr-gallery-url') || null; 9265 var urlParams = getNonDwvarParams(new URLSearchParams(window.location.search)); 9266 // if urlParams contains values, stringify them for http transport 9267 variantData.pageParams = Object.keys(urlParams).length ? JSON.stringify(urlParams) : ''; 9268 $('body').trigger('product:beforeAttributeSelect', { 9269 url: selectedValueUrl, 9270 container: $productContainer 9271 }); 9272 if (selectedAttributeID === 'color' && window.resources.enableServerSideGallery && galleryURL) { 9273 $.ajax({ 9274 url: galleryURL, 9275 method: 'GET', 9276 data: variantData, 9277 success: function success(data) { 9278 var $$productGalleryContainer = $productContainer.find('.primary-images'); 9279 if (data && $$productGalleryContainer.length) { 9280 var $productGallery = $$productGalleryContainer.find('.js-product-gallery'); 9281 var $productGalleryThumb = $$productGalleryContainer.find('.js-product-gallery-thumb'); 9282 if ($productGallery.length && $productGalleryThumb.length) { 9283 $productGallery[0].swiper.destroy(); 9284 $productGalleryThumb[0].swiper.destroy(); 9285 } 9286 $$productGalleryContainer.replaceWith(data); 9287 $(document).trigger('product:swiper:update'); 9288 } 9289 } 9290 }); 9291 } 9292 $.ajax({ 9293 url: selectedValueUrl, 9294 method: 'GET', 9295 data: variantData, 9296 // This data used as fallback to retain current user selections 9297 success: function success(data) { 9298 if (data) { 9299 handleVariantResponse(data, $productContainer, selectedAttributeID); 9300 if (window.preQuickViewModalDigitalData && 'dtmLayer' in data && 'digitalData' in window) { 9301 // Updating only the product object in the digital data when variations are selected from the quick view modal. 9302 if (data.dtmLayer.page && window.digitalData.page) { 9303 window.digitalData.page.product = data.dtmLayer.page.product; 9304 } 9305 } else if ('dtmLayer' in data && 'digitalData' in window) { 9306 if (data.dtmLayer.page) { 9307 window.digitalData.page = data.dtmLayer.page; 9308 } 9309 if (data.dtmLayer.user) { 9310 window.digitalData.user = data.dtmLayer.user; 9311 } 9312 if (data.dtmLayer.cart) { 9313 window.digitalData.cart = data.dtmLayer.cart; 9314 } 9315 } 9316 $('body').trigger('product:afterAttributeSelect', { 9317 data: data, 9318 container: $productContainer 9319 }); 9320 9321 // using native JS .dispatchEvent() rather than jQuery .trigger() 9322 // so that Adobe Launch can listen for this custom event. 9323 document.body.dispatchEvent(new CustomEvent('product:afterAttributeSelect:dtm', { 9324 detail: { 9325 // data: data, // optionally, we can send the data to Launch rather than have it pull it from digitalData 9326 attributeType: selectedAttributeID 9327 } 9328 }));
9329 updateOOSColorVariants($productContainer); 9330 onModel.triggerOnModelDescription(); 9331 updateOldChemistryMessaging(data); 9332 } 9333 $.spinner().stop(); 9334 }, 9335 error: function error() { 9336 $.spinner().stop(); 9337 } 9338 }); 9339 } 9340} 9341 9342/** 9343 * Retrieves url to use when adding a product to the cart 9344 * 9345 * @return {string} - The provided URL to use when adding a product to the cart 9346 */ 9347function getAddToCartUrl() { 9348 return $('.add-to-cart-url').val(); 9349} 9350 9351/** 9352 * Parses the html for a modal window 9353 * @param {string} html - representing the body and footer of the modal window 9354 * 9355 * @return {Object} - Object with properties body and footer. 9356 */ 9357function parseHtml(html) { 9358 var $html = $('<div>').append($.parseHTML(html)); 9359 var body = $html.find('.choice-of-bonus-product'); 9360 var footer = $html.find('.modal-footer').children(); 9361 return { 9362 body: body, 9363 footer: footer 9364 }; 9365} 9366 9367/** 9368 * Retrieves url to use when adding a product to the cart 9369 * 9370 * @param {Object} data - data object used to fill in dynamic portions of the html 9371 */ 9372function chooseBonusProducts(data) { 9373 $.spinner().start(); 9374 $('#chooseBonusProductModal').remove(); 9375 var bonusUrl = data.bonusChoiceRuleBased ? data.showProductsUrlRuleBased : data.showProductsUrlListBased; 9376 var htmlString = utils.createModalMarkup('', { 9377 modalId: 'chooseBonusProductModal', 9378 title: data.labels.selectprods, 9379 customClasses: 'choose-bonus-product-dialog' 9380 }); 9381 $('body').append(htmlString); 9382 $('#chooseBonusProductModal .modal-dialog').data({ 9383 'total-qty': data.maxBonusItems, 9384 UUID: data.uuid, 9385 pliUUID: data.pliUUID, 9386 addToCartUrl: data.addToCartUrl, 9387 pageStart: 0, 9388 pageSize: data.pageSize, 9389 moreURL: data.showProductsUrlRuleBased, 9390 bonusChoiceRuleBased: data.bonusChoiceRuleBased 9391 }); 9392 $.ajax({ 9393 url: bonusUrl, 9394 method: 'GET', 9395 dataType: 'html', 9396 success: function success(html) { 9397 var parsedHtml = parseHtml(html); 9398 $('#chooseBonusProductModal .modal-body').html(parsedHtml.body); 9399 $('#chooseBonusProductModal .modal-footer').html(parsedHtml.footer); 9400 $('#chooseBonusProductModal').modal('show'); 9401 $.spinner().stop(); 9402 }, 9403 error: function error() { 9404 $.spinner().stop(); 9405 } 9406 }); 9407} 9408 9409/** 9410 * Updates the Mini-Cart quantity value after the customer has pressed the "Add to Cart" button 9411 * @param {string} response - ajax response from clicking the add to cart button 9412 */ 9413function handlePostCartAdd(response) { 9414 if (response && $.isNumeric(response.quantityTotal)) { 9415 $(document).trigger('minicart:updatecount', response.quantityTotal); 9416 } 9417 9418 // vars defined to make if/else logic easier to read 9419 var isReservable = response.reservableProduct; 9420 var hasError = response.error; 9421 if (isReservable) { 9422 // reservation banner 9423 var reservationTimerHelper = __webpack_require__(/*! ../components/reservationTimer */ "./.tmp/app_col_eu_core/js/components/reservationTimer.js"); 9424 reservationTimerHelper.updateReservationData(response); 9425 } else if (hasError) { 9426 var $productDetailWrapper = $('.product-detail'); 9427 if ($productDetailWrapper.length) { 9428 // Add to cart errors pop down a banner under the header 9429 $productDetailWrapper.alert({ 9430 content: "".concat(response.message), 9431 theme: 'danger', 9432 customClass: 'mt-0 text-center', 9433 attachment: 'before', 9434 icon: '', 9435 dismissible: false 9436 }); 9437 if (!$('.product-quickview').length) { 9438 // Scroll to alert only if alert is not visible in viewport 9439 var scrollTop = $(window).scrollTop(); 9440 var headerOffset = $('.siteheader').outerHeight() || 0; 9441 var isAtTop = scrollTop <= headerOffset; // Consider "at top" if within site header area 9442 9443 if (!isAtTop && !$('.product-quickview').length) { 9444 var alertElement = $('.alert').first(); 9445 if (alertElement.length) { 9446 var alertHeight = 54; // Height of alert container 9447 9448 // Check if alert is not visible in viewport 9449 var isAlertVisible = alertElement.offset().top >= scrollTop; 9450 if (!isAlertVisible) { 9451 $('html, body').animate({ 9452 scrollTop: alertHeight 9453 }, 1000); 9454 } 9455 } 9456 } 9457 } 9458 } 9459 } else { 9460 // minicart 9461 $(document).trigger('minicart:show'); 9462 var hideMinicartTimeout = setTimeout(function () { 9463 $(document).trigger('minicart:hide'); 9464 }, 7000); 9465 $('body').one('mouseenter', '.minicart-drawer', function () { 9466 clearTimeout(hideMinicartTimeout); 9467 }); 9468 } 9469 if ('_satellite' in window && 'dtmEvent' in response) { 9470 if (!!response.dtmEvent && response.dtmEvent.length) { 9471 response.dtmEvent.forEach(function (action) { 9472 _satellite.track(action.event, action.data); //eslint-disable-line 9473 }); 9474 } 9475 } 9476} 9477 9478/** 9479 * Retrieves the bundle product item ID's for the Controller to replace bundle master product 9480 * items with their selected variants 9481 * 9482 * @return {string[]} - List of selected bundle product item ID's 9483 */ 9484function getChildProducts() { 9485 var childProducts = []; 9486 $('.bundle-item').each(function () { 9487 childProducts.push({ 9488 pid: $(this).find('.product-id').data('pid'), 9489 quantity: parseInt($(this).find('label.quantity').data('quantity'), 10) 9490 }); 9491 }); 9492 return childProducts.length ? JSON.stringify(childProducts) : []; 9493} 9494 9495/** 9496 * Retrieve product options 9497 * 9498 * @param {jQuery}
9498 $productContainer - DOM element for current product 9499 * @return {string} - Product options and their selected values 9500 */ 9501function getOptions($productContainer) { 9502 var options = $productContainer.find('.product-option').map(function () { 9503 var $elOption = $(this).find('.options-select'); 9504 var urlValue = $elOption.val(); 9505 var selectedValueId = $elOption.find('option[value="' + urlValue + '"]').data('value-id'); 9506 return { 9507 optionId: $(this).data('option-id'), 9508 selectedValueId: selectedValueId 9509 }; 9510 }).toArray(); 9511 return JSON.stringify(options); 9512} 9513 9514/** 9515 * Test to see if all available product attributes have been selected 9516 * 9517 * @param {jQuery} $addToCartButton - add to cart button that was clicked 9518 * @returns {boolean} Have all needed selections been made? 9519 */ 9520function isEverythingSelected($addToCartButton) { 9521 var $swatchAttributes; 9522 var commonParentSelector = '.js-product-content'; 9523 var swatchGroupSelectors = '.js-color-attribute, .js-size-attribute, .js-dimension-attribute'; 9524 if ($addToCartButton) { 9525 $swatchAttributes = $addToCartButton.closest(commonParentSelector).find(swatchGroupSelectors); 9526 } else { 9527 $swatchAttributes = $(swatchGroupSelectors); 9528 } 9529 var allAttributesSelected = true; 9530 if ($swatchAttributes.length === 0 && !$('.js-product-content').hasClass('js-gc-attributes')) { 9531 allAttributesSelected = false; 9532 } else { 9533 $swatchAttributes.each(function () { 9534 var $thisAttribute = $(this); 9535 if (!$thisAttribute.find('.selected').length) { 9536 allAttributesSelected = false; 9537 } 9538 }); 9539 } 9540 return allAttributesSelected; 9541} 9542 9543/** 9544 * Add positioning class to popup if necessary. 9545 * @param {jQuery} $el - DOM element parent element 9546 * @param {jQuery} $popup - DOM element current popup 9547 */ 9548function popupAlignment($el, $popup) { 9549 var viewportWidth = $(window).width(); 9550 var positionLeft = $el.offset().left; 9551 var elementWidth = $el.outerWidth(); 9552 var elementCenter = positionLeft + elementWidth / 2; 9553 var popupHalfWidth = $popup.outerWidth() / 2; 9554 var left = elementCenter <= popupHalfWidth; 9555 var right = popupHalfWidth > viewportWidth - elementCenter; 9556 $popup[left ? 'addClass' : 'removeClass']('left-arrow'); 9557 $popup[right ? 'addClass' : 'removeClass']('right-arrow'); 9558} 9559 9560/** 9561 * Prana Only: Show out of stock popup on size swatch 9562 * @param {jQuery} $sizeSwatch - DOM element 9563 * @param {string} eventType - Event type 9564 */ 9565function showOutOfStockPopup($sizeSwatch, eventType) { 9566 // TODO: Needs information about "Shop Our Partners" functionality. 9567 var $popup = $sizeSwatch.find('.product-outofstock__popup'); 9568 if ($popup.length) { 9569 // This only applicable for Prana 9570 var thisSwatch = $sizeSwatch; 9571 if (eventType === 'addToCart') { 9572 // Desktop/Mobile: Show "Sold Out" popup after clicking these "Add to Cart/Out of Stock" button. 9573 popupAlignment($sizeSwatch, $popup); 9574 $popup.removeClass('invisible'); 9575 setTimeout(function () { 9576 $(thisSwatch).find('.product-outofstock__popup').addClass('invisible'); 9577 }, 3000); 9578 } else if (breakpoints.isLowRes()) { 9579 // Mobile: Opens on click. 9580 if (eventType === 'click') { 9581 popupAlignment($sizeSwatch, $popup); 9582 $popup.removeClass('invisible'); 9583 $(document).one('click', function () { 9584 $(thisSwatch).find('.product-outofstock__popup').addClass('invisible'); 9585 }); 9586 } 9587 } else { 9588 // Desktop: Opens on hover. 9589 if (eventType === 'mouseenter') { 9590 // eslint-disable-line 9591 popupAlignment($sizeSwatch, $popup); 9592 $popup.removeClass('invisible'); 9593 } else if (eventType === 'mouseleave') { 9594 popupAlignment($sizeSwatch, $popup); 9595 $popup.addClass('invisible'); 9596 } 9597 } 9598 } 9599} 9600 9601/** 9602 * Restores the digitalData object. 9603 * @param {Object} data The data to set in the digitalData object 9604 */ 9605function restoreDTM(data) { 9606 if (!!data && 'digitalData' in window) { 9607 var propsToUpdate = ['pageInstanceID', 'page', 'user']; 9608 propsToUpdate.forEach(function (prop) { 9609 if (data[prop]) { 9610 window.digitalData[prop] = data[prop]; 9611 } 9612 }); 9613 delete window.preQuickViewModalDigitalData; 9614 } 9615} 9616 9617/** 9618 * Handle click on button.add-to-cart when it is disabled 9619 */ 9620function onClickAddToCartButtonDisabled() {
9621 var $productContainer = $(this).closest('.product-detail'); 9622 9623 // Scrolls to the top of the product__attributes section if they are not all set. 9624 // offset to view all product attributes after alert disapears. 9625 var offset = $('.siteheader').outerHeight(); 9626 $('.product__attributes').scrollTo(offset, 750); // TODO: GSD-11472 - can we just listen for the alert.closed event? 9627 9628 // Reveal "Select a size" message. 9629 var $sizeSwatchSelected = $productContainer.find('.js-attribute-size .selected'); 9630 var isSizeSwatchSelected = $sizeSwatchSelected.length; 9631 if (!isSizeSwatchSelected) { 9632 $('.selectswatch-size-msg', $productContainer).removeClass('d-none'); 9633 } 9634 9635 // Reveal any "Sold Out" messaging. 9636 if ($sizeSwatchSelected.find('.product-outofstock__popup').length) { 9637 // For Prana reveal the popup "Sold Out" message. 9638 $('body').trigger('product:showOutOfStockPopup', $sizeSwatchSelected); 9639 } else { 9640 // For other brands, reveal "Sold Out" div if they are not empty 9641 $('.product__message--velocity:parent', $productContainer).show(); 9642 $('.outofstock-combination-msg:parent', $productContainer).show(); 9643 } 9644 $('.accordion').trigger('collapse-changed'); // Refresh hc-sticky to avoid ovelaping content if velocity message appears. 9645} 9646 9647/** 9648 * Handles disabled add to cart button interactions 9649 */ 9650function disabledAddToCartHandler() { 9651 if ($('.add-to-cart__container .btn-add-to-cart').eq(0).prop('disabled')) { 9652 // if add to cart button is disabled 9653 var $dimElement = $('.js-dimension-attribute'); 9654 var $sizeElement = $('.js-size-attribute'); 9655 if ($dimElement.length) { 9656 $('.selectswatch-dimension-msg').toggleClass('d-none', !!$dimElement.find('a.selected').length); 9657 } 9658 if ($sizeElement.length) { 9659 $('.selectswatch-size-msg').toggleClass('d-none', !!$sizeElement.find('a.selected').length); 9660 } 9661 onClickAddToCartButtonDisabled(); 9662 } 9663} 9664 9665/** 9666 * Updates attribute label on swatch interaction 9667 * @param {jQuery} $swatch swatch element that was interacted with 9668 */ 9669function updateSwatchAttributeLabel($swatch) { 9670 var selectedValue; 9671 var attrType = $swatch.closest('.js-attribute').data('attr'); 9672 if (attrType === 'color') { 9673 selectedValue = $swatch.find('.color-value').attr('title'); 9674 } else { 9675 selectedValue = $swatch.data('attr-hover'); 9676 } 9677 if (selectedValue !== undefined) { 9678 $swatch.closest('.js-attribute').find('.js-attr-label-value').text(selectedValue); 9679 } 9680} 9681module.exports = { 9682 initExclusiveEvents: function initExclusiveEvents() { 9683 $(document).on('click', '.js-open-account', function (e) { 9684 var qvPid = $(e.target).closest('.product-quickview').data('pid'); 9685 if (qvPid) { 9686 $(document).on('form:preauth:success.quickview', 'form.authGateway', function () { 9687 sessionStorage.setItem('quickview', qvPid); 9688 }); 9689 $(document).on('click.quickview', '.js-loyalty-banner-signup-btn', function () { 9690 sessionStorage.setItem('quickview', qvPid); 9691 }); 9692 9693 // if drawer is closed assume user does not want to sign in/join now 9694 // remove event listeners and session storage for reopening quickview 9695 $(document).on('hide.drawer', function () { 9696 $(document).off('.quickview'); 9697 sessionStorage.removeItem('quickview'); 9698 }); 9699 } 9700 $(document).trigger('accountDrawer:show'); 9701 }); 9702 }, 9703 isEverythingSelected: isEverythingSelected, 9704 attributeSelect: attributeSelect, 9705 updateOOSColorVariants: updateOOSColorVariants, 9706 methods: { 9707 editBonusProducts: function editBonusProducts(data) { 9708 chooseBonusProducts(data); 9709 } 9710 }, 9711 selectAttribute: function selectAttribute() { 9712 $('.product-detail').find('.js-attribute a.selected').each(function () { 9713 updateSwatchAttributeLabel($(this)); 9714 }); 9715 9716 // js event listener that accepts an html swatch element and runs attributeSelect() code to select that swatch 9717 document.body.addEventListener('selectAttribute', function (e) { 9718 var $swatch = $(e.detail); 9719 if ($swatch) { 9720 var url = $swatch.data('attr-url'); 9721 var $container = $swatch.closest('.product-detail'); 9722 var attrType = $swatch.closest('.js-attribute').data('attr'); 9723 attributeSelect(url, $container, attrType); 9724 } 9725 }); 9726 $(document).on('click touchend', '.product-detail .js-swatch', function (e) { 9727 e.preventDefault(); 9728 var $swatchClicked = $(e.currentTarget); 9729 if ($swatchClicked.not('.js-notifyme-swatch').hasClass('selected') || $swatchClicked.hasClass('invalid') || $swatchClicked.hasClass('not-orderable')) { 9730 return; 9731 } 9732 $swatchClicked.off('mouseleave'); 9733 $swatchClicked.trigger('attribute:click'); 9734 updateSwatchAttributeLabel($swatchClicked);
9735 var $productContainer = $swatchClicked.closest('.set-item'); 9736 if (!$productContainer.length) { 9737 $productContainer = $swatchClicked.closest('.product-detail'); 9738 } 9739 var selectedAttributeID = $(this).closest('.js-attribute').data('attr'); 9740 var $selectedAttrUrl = $swatchClicked.data('attr-url'); 9741 if (selectedAttributeID === 'size') { 9742 $selectedAttrUrl = appendDimensionParams($selectedAttrUrl); 9743 } 9744 attributeSelect($selectedAttrUrl, $productContainer, selectedAttributeID); 9745 }); 9746 9747 // Color Swatch hover effects 9748 $(document).off('mouseenter').on('mouseenter', '.product-detail .js-swatch', function (e) { 9749 if (breakpoints.isHighRes()) { 9750 var $swatchEntered = $(e.currentTarget); 9751 9752 // do not reload selected swatch 9753 if ($swatchEntered.hasClass('selected')) return; 9754 var currentLabelText = $swatchEntered.closest('.js-attribute').find('.js-attr-label-value').text(); 9755 updateSwatchAttributeLabel($swatchEntered); 9756 $swatchEntered.one('mouseleave', function () { 9757 $swatchEntered.closest('.js-attribute').find('.js-attr-label-value').text(currentLabelText); 9758 }); 9759 } 9760 }); 9761 9762 // Prana only: "Sold Out" popup which appears when hovering/clicking on an out of stock size/dimension swatch. 9763 $(document).on('mouseenter mouseleave click', '.product-detail .js-size-swatch.unselectable, .product-detail .js-dimension-swatch.unselectable', function (e) { 9764 showOutOfStockPopup($(this), e.type); 9765 }); 9766 $('body').on('product:showOutOfStockPopup', function (e, sizeSwatch) { 9767 showOutOfStockPopup($(sizeSwatch), 'addToCart'); 9768 }); 9769 }, 9770 quickViewSwatchFunctionality: function quickViewSwatchFunctionality() { 9771 // On Page Load if a color/size/dimension is selected display the Swatch value in the label 9772 $('.quickview-modal .product-detail .js-attribute a.selected').each(function () { 9773 updateSwatchAttributeLabel($(this)); 9774 }); 9775 }, 9776 availability: function availability() { 9777 /** 9778 * Quantity change event for the productlineitems 9779 * extended with pickupinstore 9780 */ 9781 $(document).on('change', '.quantity-select', function (e) { 9782 e.preventDefault(); 9783 var searchPID = $(this).closest('.product-detail').attr('data-pid'); 9784 var selectorPrefix = '.product-detail[data-pid="' + searchPID + '"]'; 9785 if ($(selectorPrefix + ' .selected-store-with-inventory').is(':visible')) { 9786 return; 9787 } 9788 var $productContainer = $(this).closest('.product-detail');
9789 if (!$productContainer.length) { 9790 $productContainer = $(this).closest('.modal-content').find('.product-quickview'); 9791 } 9792 if ($('.bundle-items', $productContainer).length === 0) { 9793 base.attributeSelect($(e.currentTarget).find('option:selected').data('url'), $productContainer); 9794 } 9795 }); 9796 }, 9797 addToCart: function addToCart() { 9798 $(document).off('click', 'button.add-to-cart, button.add-to-cart-global').on('click', 'button.add-to-cart, button.add-to-cart-global', function () { 9799 var addToCartUrl; 9800 var pid; 9801 var pidsObj; 9802 var setPids; 9803 var $addToCartButton = $(this); 9804 if (!isEverythingSelected($addToCartButton)) { 9805 $('button.add-to-cart, button.add-to-cart-global, button.update-cart-product-global').attr('disabled', true); 9806 disabledAddToCartHandler(); 9807 $.spinner().stop(); 9808 } else { 9809 $('body').trigger('product:beforeAddToCart', this); 9810 if ($('.set-items').length && $(this).hasClass('add-to-cart-global')) { 9811 setPids = []; 9812 $('.product-detail').each(function () { 9813 if (!$(this).hasClass('product-set-detail')) { 9814 setPids.push({ 9815 pid: $(this).find('.product-id').data('pid'), 9816 qty: 1, 9817 options: getOptions($(this)) 9818 }); 9819 } 9820 }); 9821 pidsObj = JSON.stringify(setPids); 9822 } 9823 pid = getPidValue($(this)); 9824 var $productContainer = $(this).closest('.product-detail');
9825 if (!$productContainer.length) { 9826 $productContainer = $(this).closest('.quick-view-dialog').find('.product-detail'); 9827 } 9828 addToCartUrl = getAddToCartUrl(); 9829 var form = { 9830 pid: pid, 9831 pidsObj: pidsObj, 9832 childProducts: getChildProducts(), 9833 quantity: 1 9834 }; 9835 if (!$('.bundle-item').length) { 9836 form.options = getOptions($productContainer); 9837 } 9838 $(this).trigger('updateAddToCartFormData', form); 9839 if (addToCartUrl) { 9840 $.ajax({ 9841 url: addToCartUrl, 9842 method: 'POST', 9843 data: form, 9844 success: function success(data) { 9845 $.spinner().stop(); 9846 handlePostCartAdd(data); 9847 if (!data.error) { 9848 $('body').trigger('product:afterAddToCart', data); 9849 window.dispatchEvent(new Event('cart:updated:dtm')); 9850 } 9851 if (window.preQuickViewModalDigitalData) { 9852 // Restoring the digital data back to that of CLP page before opening the quick view modal. 9853 window.preQuickViewModalDigitalData = JSON.parse(window.preQuickViewModalDigitalData); 9854 setTimeout(function () { 9855 restoreDTM(window.preQuickViewModalDigitalData); 9856 }, 1000); 9857 } else if (data.dtmLayer && 'digitalData' in window) { 9858 if (data.dtmLayer.page) { 9859 window.digitalData.page = data.dtmLayer.page; 9860 } 9861 if (data.dtmLayer.user) { 9862 window.digitalData.user = data.dtmLayer.user; 9863 } 9864 } 9865 if (data.dtmLayer && data.dtmLayer.cart && 'digitalData' in window) { 9866 window.digitalData.cart = data.dtmLayer.cart; 9867 minicartSaleItemAlertBadge.toggleAlertBadge(); 9868 } 9869 }, 9870 error: function error() { 9871 $.spinner().stop(); 9872 } 9873 }); 9874 } 9875 } 9876 }); 9877 }, 9878 getPidValue: getPidValue, 9879 setVariantNotifyMeStatus: setVariantNotifyMeStatus,
9880 forceOOSNotifyMe: forceOOSNotifyMe, 9881 overviewInit: Overview.init() 9882}; 9883 9884/***/ }), 9885
9886/***/ "./.tmp/app_col_eu_core/js/product/imageGallery.js": 9887/*!*********************************************************!*\ 9888 !*** ./.tmp/app_col_eu_core/js/product/imageGallery.js ***! 9889 \*********************************************************/ 9890/*! no static exports found */ 9891/***/ (function(module, exports, __webpack_require__) { 9892 9893"use strict"; 9894 9895 9896var Swiper = __webpack_require__(/*! swiper/swiper-bundle.min.js */ "./node_modules/swiper/swiper-bundle.min.js"); 9897var breakpoints = __webpack_require__(/*! ../components/breakpoints */ "./.tmp/app_col_eu_core/js/components/breakpoints.js"); 9898var utils = __webpack_require__(/*! ../components/utils */ "./.tmp/app_col_eu_core/js/components/utils.js"); 9899var onModel = __webpack_require__(/*! ./onModelDescription */ "./.tmp/app_col_eu_core/js/product/onModelDescription.js"); 9900var $mainGallery; 9901var $thumbnailGallery; 9902 9903// swiper instances 9904var swiperMain; 9905var swiperThumb; 9906 9907// video player instance 9908var player; 9909 9910/** 9911 * Initialize Swiper Gallery 9912 * @param {jQuery} $main jQuery reference to main gallery element 9913 * @param {jQuery|undefined} $thumbnail jQuery reference to thumbnail gallery element 9914 */ 9915function initSwiperGallery($main, $thumbnail) { 9916 var swiperGalleryMain = $main[0]; 9917 var swiperConfigMain = { 9918 centeredSlides: true, 9919 slidesPerView: 1, 9920 zoom: { 9921 toggle: false 9922 }, 9923 navigation: { 9924 nextEl: '.swiper-button-next', 9925 prevEl: '.swiper-button-prev', 9926 disabledClass: 'd-none' 9927 }, 9928 loop: false 9929 }; 9930 var removeSlideSelectors = ['.product-quickview .video-slide']; 9931 if ($thumbnail.length) { 9932 var swiperGalleryThumb = $thumbnail[0]; 9933 swiperThumb = new Swiper(swiperGalleryThumb, { 9934 width: 44, 9935 slidesPerView: 'auto', 9936 loop: false, 9937 threshold: 1000 // arbitrary high value to prevent cancellation of click event 9938 }); 9939 9940 swiperConfigMain.thumbs = { 9941 swiper: swiperThumb 9942 }; 9943 9944 // Prevent screenreader from reading all alt tags whenever the gallery is updated 9945 $thumbnail.find('.swiper-wrapper').removeAttr('aria-live'); 9946 } 9947 $(removeSlideSelectors.join(',')).each(function (i, slide) { 9948 $(slide).remove(); 9949 }); 9950 swiperMain = new Swiper(swiperGalleryMain, swiperConfigMain); 9951 9952 // Prevent screenreader from reading all alt tags whenever the gallery is updated 9953 $main.find('.swiper-wrapper').removeAttr('aria-live'); 9954} 9955 9956/** 9957 * Initialize zoom container 9958 * @param {Object} $zoomModal: Reference to zoom container 9959 * @param {number} zoomIndex: The index to zoom on init 9960 */ 9961function initZoom($zoomModal, zoomIndex) { 9962 var $zoomViewer = $zoomModal.find('.js-product-zoom-viewer'); 9963 var $bigImg = $zoomViewer.find('img'); 9964 9965 // On thumbnail click inside zoom viewer, change to the zoomed view of the clicked image 9966 $zoomModal.on('click', '.js-product-thumb', function (e) { 9967 e.preventDefault(); 9968 var $elem = $(this); 9969 var hiResImage = $elem.data('img-hi-res'); 9970 var altZoomThumbSubstring = 'Zoom thumbnail:'; 9971 var altZoomSubstring = 'Zoom:'; 9972 9973 // Get alt description from thumbnail and modify for zoom image 9974 var alt = $elem.find('img').attr('alt'); 9975 if (alt.substring(altZoomThumbSubstring)) { 9976 alt = alt.replace(altZoomThumbSubstring, altZoomSubstring); 9977 } 9978 $zoomModal.find('.js-product-thumb').removeClass('active'); 9979 $elem.addClass('active'); 9980 $bigImg.attr('src', hiResImage); 9981 $bigImg.attr('alt', alt); 9982 }) 9983 // Move around the zoomed image with mouse 9984 .on('mousemove', '.js-product-zoom-viewer', function (e) { 9985 var viewerWidth = $zoomViewer.outerWidth(); 9986 var viewerHeight = $zoomViewer.outerHeight(); 9987 var difWidth = viewerWidth - $bigImg.outerWidth(); 9988 var difHeight = viewerHeight - $bigImg.outerHeight(); 9989 var viewerOffset = $zoomViewer.offset(); 9990 // Track mouse movement on desktop 9991 var x = 0; 9992 var y = 0; 9993 var imgX; 9994 var imgY; 9995 if (difWidth < 0) { 9996 x = e.pageX - viewerOffset.left; 9997 imgX = difWidth * (x / viewerWidth - 0.5); 9998 } else { 9999 imgX = 0; 10000 } 10001 if (difHeight < 0) { 10002 y = e.pageY - viewerOffset.top; 10003 imgY = difHeight * (y / viewerHeight - 0.5); 10004 } else { 10005 imgY = 0; 10006 } 10007 $bigImg.css('transform', "translate3d(".concat(imgX, "px, ").concat(imgY, "px, 0)")); 10008 }).on('hide.bs.modal', function () { 10009 // slide swiper gallery to image that was open in zoom 10010 var activeIndex = $zoomModal.find('.js-product-thumb.active').data('index'); 10011 swiperMain.slideTo(activeIndex); 10012 }).on('hidden.bs.modal', function () { 10013 // remove the modal markup completely 10014 $(this).remove(); 10015 }); 10016 10017 // On init, open the last image that was being viewed in the product gallery 10018 var $activeThumb = $zoomModal.find('.js-product-thumb[data-index="' + zoomIndex + '"]'); 10019 if ($activeThumb.length) { 10020 $activeThumb.trigger('click'); 10021 } 10022} 10023 10024/** 10025 * Initialize video player 10026 */ 10027function initVideoPlayer() { 10028 var $videoSlide = $mainGallery.find('.js-video-player'); 10029 10030 // exit if no video player exists 10031 if (!$videoSlide.length) return; 10032 var playerHost = $videoSlide.data('host'); 10033 var videoId = $videoSlide.data('video-id'); 10034 var playerId = playerHost === 'youtube' ? 'ytPlayer_' + videoId : 'vimeoPlayer_' + videoId; 10035 10036 // preload youtube video player dependency 10037 if (playerHost === 'youtube') { 10038 var tagId = 'youtube-api-script'; 10039 var tagExists = document.getElementById(tagId); 10040 if (!tagExists) { 10041 var tag = document.createElement('script'); 10042 tag.src = 'https://www.youtube.com/iframe_api'; 10043 tag.id = tagId; 10044 var firstScriptTag = document.getElementsByTagName('script')[0]; 10045 firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 10046 } 10047 } 10048
10049 // wait for video player node to be created 10050 var videoPlayerObserver = new MutationObserver(function () { 10051 player = window.videoPlayers[playerId]; 10052 if (player) { 10053 videoPlayerObserver.disconnect(); 10054 } 10055 }); 10056 videoPlayerObserver.observe($videoSlide[0], { 10057 childList: true, 10058 subtree: true 10059 }); 10060 10061 // pause product video on slide change 10062 swiperMain.on('slideChange', function () { 10063 if (player) { 10064 if (playerHost === 'youtube') { 10065 player.pauseVideo(); 10066 } else { 10067 player.pause(); 10068 } 10069 } 10070 }); 10071} 10072 10073/** 10074 * Initialize product gallery events 10075 */ 10076function initGalleryEvents() { 10077 $mainGallery.off('.zoom') 10078 // prevent swiping when zoom icon is being interacted with 10079 .on('mousedown.zoom', '.js-pdp-gallery-zoom', function () { 10080 if (swiperMain.allowTouchMove) { 10081 swiperMain.allowTouchMove = false; 10082 setTimeout(function () { 10083 swiperMain.allowTouchMove = true; 10084 }, 500); 10085 } 10086 }) 10087 // When zoom button is clicked, enable zoom 10088 .on('click.zoom', '.js-pdp-gallery-zoom', function () { 10089 if (breakpoints.isLowRes()) { 10090 swiperMain.zoom.toggle(); 10091 } else { 10092 var $imageClicked = $(this).closest('.js-product-image'); 10093 var url = $imageClicked.closest('.js-product-gallery').data('zoom-url'); 10094 10095 // If a color swatch has been selected 10096 var $selectedColorSwatch = $('[data-attr="color"] .color-value.selected'); 10097 if ($selectedColorSwatch.length && url) { 10098 var pid = $('.product-detail').data('pid').toString(); 10099 var color = $selectedColorSwatch.data('attr-value'); 10100 var urlPid = utils.getParamsFromURL(url).pid; 10101 if (pid !== urlPid) { 10102 url = utils.updateURLParam(url, 'pid', pid); 10103 } 10104 if (color && pid) { 10105 // get base pid without appended _S 10106 var basePid = pid.split('_')[0]; 10107 url = utils.appendParamToURL(url, 'dwvar_' + basePid + '_color', color); 10108 } 10109 } 10110 if (!url) { 10111 return; 10112 } 10113 $.spinner().start(); 10114 $.ajax({ 10115 url: url, 10116 method: 'GET', 10117 dataType: 'html', 10118 success: function success(html) { 10119 $.spinner().stop(); 10120 var modalHTML = utils.createModalMarkup(html, { 10121 modalSizeClass: 'modal-fluid' 10122 }); 10123 var $zoomModal = $(modalHTML).modal(); 10124 var imageIndexToZoom = 0; 10125 if ($imageClicked.data('index')) { 10126 imageIndexToZoom = $imageClicked.data('index'); 10127 } 10128 10129 // fix for IE: 10130 var ua = window.navigator.userAgent; 10131 if (ua.indexOf('MSIE ') > -1 || ua.indexOf('Trident/') > -1) { 10132 $zoomModal.one('shown.bs.modal', function () { 10133 var $modalBody = $zoomModal.find('.modal-body'); 10134 var zoomViewerHeight = $modalBody.find('.js-product-zoom-viewer').outerHeight(); 10135 var modalBodyPadding = parseFloat($modalBody.css('padding-top')) + parseFloat($modalBody.css('padding-bottom')); 10136 $modalBody.css('height', zoomViewerHeight + modalBodyPadding); 10137 }); 10138 } 10139 initZoom($zoomModal, imageIndexToZoom); 10140 }, 10141 error: function error() { 10142 $.spinner().stop(); 10143 } 10144 }); 10145 } 10146 }); 10147 10148 // use to swap image low/high resolution when zoom button is clicked 10149 swiperMain.on('zoomChange', function (swiper, scale, imageEl) { 10150 // zoomChange fires with these params: swiper, scale, imageEl, slideEl 10151 var setImageUrl = $(imageEl).data('lowres'); 10152 if (scale !== 1) { 10153 setImageUrl = $(imageEl).data('hires'); 10154 } 10155 $(imageEl).attr('src', setImageUrl); 10156 }); 10157 10158 // re-initialize video player when swatch interaction refreshes gallery 10159 $(document).on('video:player:update', function () { 10160 initVideoPlayer(); 10161 }); 10162} 10163 10164/** 10165 * Disable/hide zoom button 10166 */ 10167function disableZoom() { 10168 $('.js-pdp-gallery-zoom').addClass('d-none'); 10169} 10170 10171/** 10172 * Get jQuery elements required to build image gallery via configuration 10173 * @param {Object} config allowable options specified in configDefault 10174 * @returns {Object} jQuery elements required to build image gallery 10175 */ 10176function getGalleryElements(config) { 10177 var configDefault = { 10178 hasThumbnails: true, 10179 isQuickview: false,
10180 gallerySelector: '.js-product-gallery', 10181 thumbnailSelector: '.js-product-gallery-thumb', 10182 galleryContainerSelector: '.primary-images' 10183 }; 10184 var options = $.extend({}, configDefault, config); 10185 var galleryElements = {}; 10186 var $galleryContainer = $(options.galleryContainerSelector).first(); 10187 if ($galleryContainer.length) { 10188 var $gallery = $galleryContainer.find(options.gallerySelector).first(); 10189 if ($gallery.length) { 10190 galleryElements.$gallery = $gallery; 10191 galleryElements.$galleryContainer = $galleryContainer; 10192 galleryElements.isQuickview = !!options.isQuickview; 10193 if (options.hasThumbnails) { 10194 var $thumbnail = $galleryContainer.find(options.thumbnailSelector).first(); 10195 if ($thumbnail.length) { 10196 galleryElements.$thumbnail = $thumbnail; 10197 galleryElements.hasThumbnails = true; 10198 } 10199 } 10200 } 10201 } 10202 return galleryElements; 10203} 10204module.exports = function (galleryConfig) { 10205 var galleryElements = getGalleryElements(galleryConfig); 10206 $mainGallery = galleryElements.$gallery; 10207 $thumbnailGallery = galleryElements.$thumbnail; 10208 var hasThumbnails = galleryElements.hasThumbnails; 10209 var isQuickview = galleryElements.isQuickview; 10210 if (!$mainGallery || !$mainGallery.length || $mainGallery[0].swiper) { 10211 return { 10212 init: function init() {} 10213 }; 10214 } 10215 this.$gallery = $mainGallery; 10216 if (hasThumbnails) { 10217 this.$thumbnailGallery = $thumbnailGallery; 10218 } 10219 this.init = function () { 10220 initSwiperGallery($mainGallery, $thumbnailGallery); 10221 if (!isQuickview) { 10222 initVideoPlayer(); 10223 initGalleryEvents(); 10224 onModel.triggerOnModelDescription(); 10225 } else { 10226 disableZoom(); 10227 } 10228 }; 10229 return this; 10230}; 10231 10232/***/ }), 10233
10234/***/ "./.tmp/app_col_eu_core/js/product/loyalty.js": 10235/*!****************************************************!*\ 10236 !*** ./.tmp/app_col_eu_core/js/product/loyalty.js ***! 10237 \****************************************************/ 10238/*! no static exports found */ 10239/***/ (function(module, exports, __webpack_require__) { 10240 10241"use strict"; 10242 10243 10244/** 10245 * When a promotion multiplier is in effect, highlight the bonus reward 10246 * if a strikeout price (sibling element) is detected 10247 */ 10248function highlightMultiplierReward() { 10249 if ($('.js-rewards-highlight + s').length) { 10250 $('.js-rewards-highlight').addClass('forecasted-loyalty-rewards__text--highlight'); 10251 } 10252} 10253 10254/** 10255 * Displays the Loyalty points forecast on PDP 10256 * @param {HTML} html Product data passed on attribute selection 10257 */ 10258function updateLoyaltyForecastPoints(html) { 10259 var $rewardsContainer = $('.js-rewards-container'); 10260 $rewardsContainer.html(html); 10261 highlightMultiplierReward(); 10262} 10263module.exports = { 10264 init: function init() { 10265 // Attribute Select Event 10266 $('body').on('product:afterAttributeSelect', function (e, response) { 10267 var rewardsData = response.data.product.rewardsHtml; 10268 if (rewardsData) { 10269 updateLoyaltyForecastPoints(rewardsData); 10270 } 10271 }); 10272 highlightMultiplierReward(); 10273 } 10274}; 10275 10276/***/ }), 10277
10278/***/ "./.tmp/app_col_eu_core/js/product/onModelDescription.js": 10279/*!***************************************************************!*\ 10280 !*** ./.tmp/app_col_eu_core/js/product/onModelDescription.js ***! 10281 \***************************************************************/ 10282/*! no static exports found */ 10283/***/ (function(module, exports, __webpack_require__) { 10284 10285"use strict"; 10286 10287 10288var utils = __webpack_require__(/*! ../components/utils */ "./.tmp/app_col_eu_core/js/components/utils.js"); 10289var $mainPDPGallery = $('.product-gallery--main'); 10290var $modelDescription = $('.js-onmodel-description'); 10291 10292/** 10293 * Reset (hide) model description 10294 */ 10295function resetModelDescription() { 10296 $modelDescription.removeClass('d-block').addClass('d-none'); 10297} 10298 10299/** 10300 * Render model description from JSON object with the following structure: 10301 * Example: 10302 * { 10303 * "prefix": "Model", 10304 * "attributes": [ 10305 * { 10306 * "label": "Height", 10307 * "value": "5'10", 10308 * "key": "height" 10309 * }, 10310 * { 10311 * "label": "Size", 10312 * "value": "M", 10313 * "key": "size" 10314 * } 10315 * ], 10316 * "conjunctions": { 10317 * "and": "and" 10318 * } 10319 * } 10320 * @param {*} descriptionObj - JSON object containing model description data 10321 * @returns {string} - Formatted model description string 10322 */ 10323function renderModelDescription(descriptionObj) { 10324 if (!descriptionObj.attributes || descriptionObj.attributes.length === 0) { 10325 return ''; 10326 } 10327 var description = descriptionObj.prefix + ' '; 10328 for (var i = 0; i < descriptionObj.attributes.length; i++) { 10329 var attr = descriptionObj.attributes[i]; 10330 description += attr.label + ' <strong>' + attr.value + '</strong>'; 10331 if (descriptionObj.attributes.length - 2 === i) { 10332 description += ' ' + descriptionObj.conjunctions.and + ' '; 10333 } else if (descriptionObj.attributes.length - 3 >= i) { 10334 description += ', '; 10335 } 10336 } 10337 return description + '.'; 10338} 10339 10340/** 10341 * Initialize model data 10342 * @param {string} onModelValue: Reference to data model of thumbnail image 10343 * @returns {boolean} True if no errors occur 10344 */ 10345function getOnModelData(onModelValue) { 10346 var modelKey; 10347 var modelValue; 10348 var modelObject; 10349 var url = $mainPDPGallery.data('model-url'); 10350 try { 10351 var onModelObj = onModelValue && JSON.parse(decodeURIComponent(onModelValue)); 10352 if (onModelObj) { 10353 modelKey = Object.keys(onModelObj)[0]; 10354 modelValue = onModelObj[modelKey]; 10355 modelObject = { 10356 modelKey: modelKey, 10357 modelValue: modelValue 10358 }; 10359 $.ajax({ 10360 url: utils.setUrlKeyValue(url, 'pid', onModelObj.variantUPC.trim()), 10361 type: 'post', 10362 dataType: 'json', 10363 data: modelObject, 10364 success: function success(data) { 10365 if (data && data.modelDescription) { 10366 $modelDescription.html(renderModelDescription(data.modelDescription)).removeClass('d-none').addClass('d-block'); 10367 } 10368 }, 10369 error: function error() { 10370 $.spinner().stop(); 10371 } 10372 }); 10373 } 10374 } catch (e) { 10375 return false; 10376 } 10377 return true; 10378} 10379 10380/** 10381 * Initialize model data 10382 * @returns {string} modeldataValue on model data value of image 10383 */ 10384function imageModelData() { 10385 var modelImg = $mainPDPGallery.find('.js-model-image'); 10386 var modelDataValue; 10387 if (modelImg) { 10388 var modelImgArray = Array.from(modelImg); 10389 modelDataValue = modelImgArray.find(function (element) { 10390 return $(element).data('onmodel') !== null; 10391 }); 10392 } 10393 return modelDataValue; 10394} 10395 10396/** 10397 * Trigger display of OnModel description 10398 * Dependency: imageModelData() 10399 */ 10400function triggerOnModelDescription() { 10401 var modelValue = imageModelData(); 10402 var imageclick = $(modelValue).data('onmodel'); 10403 resetModelDescription(); 10404 getOnModelData(imageclick); 10405} 10406module.exports = { 10407 getOnModelData: getOnModelData, 10408 imageModelData: imageModelData, 10409 triggerOnModelDescription: triggerOnModelDescription 10410}; 10411 10412/***/ }), 10413
10414/***/ "./.tmp/app_col_eu_core/js/product/overview.js": 10415/*!*****************************************************!*\ 10416 !*** ./.tmp/app_col_eu_core/js/product/overview.js ***! 10417 \*****************************************************/ 10418/*! no static exports found */ 10419/***/ (function(module, exports, __webpack_require__) { 10420 10421"use strict"; 10422 10423 10424/** 10425 * Remove overview modal and backdrop 10426 */ 10427function closeModal() { 10428 $('.overview-modal, .modal-backdrop').remove(); 10429 10430 // Account for scrollbars to prevent CLS 10431 $.enableScroll(); 10432 $('body').removeClass('modal-open').css('padding-right', ''); 10433 $(window).trigger('scroll'); 10434} 10435 10436/** 10437 * Builds HTML element that will display the overview benefit modal contents 10438 * @param {HTML} html response used render modal content 10439 * @returns {HTMLElement} Reference to modal JQuery object 10440 */ 10441function buildModal(html) { 10442 var $modal = $.modal({ 10443 content: html, 10444 customClasses: 'overview-modal', 10445 modalSizeClass: 'modal-lg' 10446 }).on('hidden.bs.modal', function () { 10447 closeModal(); 10448 }); 10449 return $modal; 10450} 10451 10452/** 10453 * Fetches overview html from server and launches modal 10454 * @param {string} url - Overview controller endpoint url 10455 * @param {HTMLElement} $modal - Reference to modal JQuery object 10456 */ 10457function launchModal(url) { 10458 if (!url) { 10459 return; 10460 } 10461 $.ajax({ 10462 url: url, 10463 method: 'GET', 10464 dataType: 'html', 10465 success: function success(data) { 10466 buildModal(data); 10467 }, 10468 complete: function complete() { 10469 $.spinner().stop(); 10470 $.disableScroll(); 10471 }, 10472 error: function error() { 10473 closeModal(); 10474 } 10475 }); 10476} 10477module.exports = { 10478 init: function init() { 10479 $('body').off('click.overview', '.js-overview-modal').on('click.overview', '.js-overview-modal', function (e) { 10480 e.preventDefault(); 10481 var $this = $(e.currentTarget); 10482 var link = $this.data('link') || $this.attr('href'); 10483 launchModal(link); 10484 }); 10485 }, 10486 buildModal: buildModal, 10487 launchModal: launchModal, 10488 closeModal: closeModal 10489}; 10490 10491/***/ }), 10492
10493/***/ "./.tmp/app_col_eu_core/js/product/pdpActions.js": 10494/*!*******************************************************!*\ 10495 !*** ./.tmp/app_col_eu_core/js/product/pdpActions.js ***! 10496 \*******************************************************/ 10497/*! no static exports found */ 10498/***/ (function(module, exports, __webpack_require__) { 10499 10500"use strict"; 10501 10502 10503/** 10504 * This file has the pdp actions that are going to be shared between quickview and pdp 10505 * The methods included here are initialized globally, and there is no need to initialize them 10506 * again on PDP 10507 */ 10508var base = __webpack_require__(/*! ./base */ "./.tmp/app_col_eu_core/js/product/base.js"); 10509module.exports = { 10510 selectAttribute: base.selectAttribute, 10511 availability: base.availability, 10512 addToCart: base.addToCart, 10513 showSelectedSwatchValue: base.quickViewSwatchFunctionality 10514}; 10515 10516/***/ }), 10517
10518/***/ "./.tmp/app_col_eu_core/js/product/productTile.js": 10519/*!********************************************************!*\ 10520 !*** ./.tmp/app_col_eu_core/js/product/productTile.js ***! 10521 \********************************************************/ 10522/*! no static exports found */ 10523/***/ (function(module, exports, __webpack_require__) { 10524 10525"use strict"; 10526/* global LazyLoad _satellite */ 10527 10528 10529var breakpoints = __webpack_require__(/*! ../components/breakpoints */ "./.tmp/app_col_eu_core/js/components/breakpoints.js"); 10530var _ = __webpack_require__(/*! underscore */ "./node_modules/underscore/modules/index-all.js"); 10531var debounce = __webpack_require__(/*! lodash/debounce */ "./node_modules/lodash/debounce.js"); 10532var swiperInit = __webpack_require__(/*! ../thirdParty/swiperInit */ "./.tmp/app_col_eu_core/js/thirdParty/swiperInit.js"); 10533var $body = $('body'); 10534 10535/** 10536 * Loads all primary images when an event/interaction occurs 10537 * @param {Element} $tile Product tile containing images to be lazyloaded 10538 */ 10539function lazyloadPrimaryImages($tile) { 10540 var $primaryImages = $tile.find('.tile__image--primary:not(.loaded)'); 10541 $.each($primaryImages, function (i, primaryImage) { 10542 if (!$(primaryImage).data('ll-status')) { 10543 LazyLoad.load(primaryImage); 10544 } 10545 }); 10546} 10547 10548/** 10549 * Selects supplied swatch 10550 * @param {Element} swatch swatch to be selected 10551 */ 10552function selectSwatch(swatch) { 10553 var $gridTile = $(swatch).closest('.js-grid-tile'); 10554 var $hoverSwatch = $(swatch).closest('.js-color-swatch'); 10555 // Modify ID selectors that contain characters that have special meaning in CSS 10556 var variantID = $.escapeSelector($hoverSwatch.data('variant-id')); 10557 10558 // handle element selection 10559 $('.selected', $gridTile).removeClass('selected'); 10560 $hoverSwatch.addClass('selected'); 10561 $gridTile.find("[data-img-variant-id=".concat(variantID, "]")).addClass('selected'); 10562 10563 // Change quickview url to show selected color variant 10564 $gridTile.find('.js-quickview').data('link', $hoverSwatch.data('quickview-url')); 10565 10566 // Change product title url to show selected color variant 10567 $gridTile.find('.js-tile-link').attr('href', $hoverSwatch.attr('href')); 10568 10569 // Change product title url for ratings to show selected color variant 10570 $gridTile.find('.js-tile-ratings').attr('href', $hoverSwatch.attr('href') + '#product-accordion-reviews'); 10571 10572 // Letting know compare feature about changing the swatch 10573 $gridTile.find('.js-compare-checkbox input').trigger('swatch-changed'); 10574 10575 // Lazy load the appropriate image 10576 lazyloadPrimaryImages($gridTile); 10577 swiperInit.initTileImageSwiper($gridTile); 10578} 10579 10580/** 10581 * Toggle swatch less/more control 10582 * @param {JQuery} selectedSwatch JQuery object for selected swatch 10583 */ 10584function updateSwatchToggle(selectedSwatch) { 10585 var $tile = $(selectedSwatch).closest('.product-tile'); 10586 var $toggle = $tile.find('.swatch--toggle'); 10587 var $more = $toggle.find('.js-swatches-more'); 10588 var $less = $toggle.find('.js-swatches-less'); 10589 if (breakpoints.isLowRes()) { 10590 // On mobile, toggle more/less links 10591 if ($less.hasClass('d-none')) { 10592 // Hide More link --> Show Less link 10593 $more.addClass('d-none'); 10594 $less.removeClass('d-none'); 10595 10596 // Override classes that hide responsive swatches 10597 $tile.find('.swatch:not(.js-swatches-toggle)').addClass('d-block'); 10598 } else { 10599 // Hide Less link --> Show More link 10600 $more.removeClass('d-none'); 10601 $less.addClass('d-none'); 10602 10603 // Override classes that hide responsive swatches 10604 $tile.find('.swatch:not(.js-swatches-toggle)').removeClass('d-block'); 10605 } 10606 } 10607} 10608 10609/** 10610 * Promote selected swatch in the "more swatches" section to be the 10611 * last of the visible tile swatches when "more swatches" are hidden. 10612 * @param {JQuery} selectedSwatch JQuery object for selected swatch 10613 */ 10614function updateVisibleSwatches(selectedSwatch) { 10615 var $swatchContainer = $(selectedSwatch).closest('.swatch__container'); 10616 var $visibleSwatches = $swatchContainer.find('.swatch--color').not('[class*="swatch--hide"]').not('.swatch--toggle'); 10617 var $visibleSwatchToHide = $($visibleSwatches[$visibleSwatches.length - 1]); 10618 var isSelectedSwatchVisible = $visibleSwatches.index($(selectedSwatch)); 10619 if (isSelectedSwatchVisible < 0) { 10620 // Hide one of the original visible swatches 10621 // i.e. Swap places with the selected hidden swatch 10622 $visibleSwatchToHide.addClass('swatch--hide'); 10623 10624 // Remove "hide classes" from clicked swatch 10625 $(selectedSwatch).removeClass('swatch--hide'); 10626 } 10627} 10628 10629/** 10630 * Keyboard Accessibility Events 10631 */ 10632function keyboardEvents() { 10633 $('.product-tile').off('.tilefocus').on('focusin.tilefocus', function (e) { 10634 // unselect any previously selected tiles 10635 $('.product-tile--hover').removeClass('product-tile--hover'); 10636 $(e.target).closest('.product-tile').addClass('product-tile--hover'); 10637 }); 10638 10639 // if focused element is not a child of a tile, unselect all tiles 10640 $(window).on('focusin', function (e) { 10641 if (!$(e.target).closest('.product-tile--hover').length) { 10642 $('.product-tile--hover').removeClass('product-tile--hover'); 10643 } 10644 }); 10645} 10646 10647/** 10648 * Adjusts the visibility of swatches and handles the toggle functionality for a recommendation tile. 10649 * @param {jQuery} $tile - The jQuery object representing the tile element. 10650 * @param {number} maxCountVisibleSwatches - The maximum number of swatches to display. 10651 * @param {boolean} isHighRes - Indicates if the view is in high-resolution mode. 10652 */ 10653function handleRecommendationTileOnAdjust($tile, maxCountVisibleSwatches, isHighRes) { 10654 var $swatches = $tile.find('.swatch:not(.js-swatches-toggle)'); 10655 var $toggleSwatch = $tile.find('.js-swatches-toggle'); 10656 var numberOfSwatches = $swatches.length; 10657 if (numberOfSwatches <= maxCountVisibleSwatches) { 10658 $swatches.removeClass('swatch--hide'); 10659 $toggleSwatch.addClass('d-none'); 10660 } else { 10661 $toggleSwatch.removeClass('d-none'); 10662 var hiddenSwathesCount = numberOfSwatches - (maxCountVisibleSwatches - 1); 10663 $toggleSwatch.find('.js-area-show-more').html('+' + hiddenSwathesCount); 10664 if (isHighRes) { 10665 var $more = $toggleSwatch.find('.js-swatches-more'); 10666 var $less = $toggleSwatch.find('.js-swatches-less'); 10667 $more.removeClass('d-none'); 10668 $less.addClass('d-none'); 10669 } 10670 for (var i = $swatches.length - 1; i >= 0; i--) { 10671 if (hiddenSwathesCount === 0 || $swatches.eq(i).hasClass('selected')) { 10672 $swatches.eq(i).removeClass('swatch--hide'); 10673 } else { 10674 $swatches.eq(i).addClass('swatch--hide'); 10675 hiddenSwathesCount--; 10676 } 10677 if (isHighRes) { 10678 $swatches.eq(i).removeClass('d-block'); 10679 } 10680 } 10681 } 10682} 10683 10684/** 10685 * Calculates the maximum number of visible swatches for a given tile based on its width. 10686 * @param {jQuery} $tile - The jQuery object representing the tile element. 10687 * @returns {number} - The maximum number of swatches that can fit in the tile. 10688 */ 10689function getMaxCountVisibleSwatches($tile) { 10690 var containerWidth = $tile.find('.swatch__container').innerWidth(); 10691 var $toggleSwatch = $tile.find('.js-swatches-toggle'); 10692 var swatchWidth = $toggleSwatch.outerWidth(true); 10693 return Math.floor(containerWidth / swatchWidth); 10694} 10695 10696/** 10697 * adjust number of shown swatches for recommendation slots 10698 * @param {JQuery} $tiles tiles from recommendation slots 10699 */ 10700function adjustSwatches() { 10701 var $tiles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : $('.swiper-container--recommendations .js-grid-tile'); 10702 if (!$tiles.length) { 10703 return; 10704 } 10705 var maxCountVisibleSwatches = null; 10706 var isHighRes = breakpoints.isHighRes(); 10707 $tiles.each(function (index) { 10708 var $tile = $tiles.eq(index); 10709 if (!maxCountVisibleSwatches) { 10710 maxCountVisibleSwatches = getMaxCountVisibleSwatches($tile); 10711 } 10712 handleRecommendationTileOnAdjust($tile, maxCountVisibleSwatches, isHighRes); 10713 }); 10714} 10715module.exports = { 10716 keyboardAccessibility: function keyboardAccessibility() { 10717 $(document).ready(function () { 10718 if (breakpoints.isHighRes()) { 10719 keyboardEvents(); 10720 } 10721 }); 10722 }, 10723 onGridScroll: function onGridScroll() { 10724 var $productGrid = $('.product-grid'); 10725 if ($productGrid.length) { 10726 var preventSuppression = false;
10727 var preventSuppressionTimeout; 10728 var scrollTimeout; 10729 window.addEventListener('mousemove', _.throttle(function () { 10730 if (breakpoints.isHighRes()) { 10731 // enable hover styles by cancelling suppression from scrolling 10732 $productGrid.removeClass('suppress-hover'); 10733 preventSuppression = true; 10734 clearTimeout(preventSuppressionTimeout); 10735 10736 // prevent suppression from scroll for 1s after done moving mouse 10737 preventSuppressionTimeout = setTimeout(function () { 10738 preventSuppression = false; 10739 }, 1000); 10740 } 10741 }, 250), { 10742 passive: true 10743 }); 10744 window.addEventListener('scroll', _.throttle(function () { 10745 if (breakpoints.isHighRes()) { 10746 // suppress hover styles while scrolling 10747 if (!preventSuppression) { 10748 $productGrid.addClass('suppress-hover'); 10749 } 10750 clearTimeout(scrollTimeout); 10751 10752 // cancel hover style suppression 0.5s after done scrolling 10753 scrollTimeout = setTimeout(function () { 10754 $productGrid.removeClass('suppress-hover'); 10755 }, 500); 10756 } 10757 }, 500), { 10758 passive: true 10759 }); 10760 } 10761 }, 10762 onTileHover: function onTileHover() { 10763 $('body').on('mouseenter', '.tile__image-container a', function () { 10764 var $primaryImage = $(this).find('.tile__image--primary'); 10765 var $altImage = $(this).find('.tile__image--alt'); 10766 if ($altImage.length <= 0 || $altImage.data('ll-status')) { 10767 return; 10768 } 10769 var lazyLoadedCallback = function lazyLoadedCallback() { 10770 $primaryImage.addClass('loaded-alt'); 10771 }; 10772 LazyLoad.load($altImage[0], { 10773 callback_loaded: lazyLoadedCallback 10774 }); 10775 }).on('mouseenter', '.js-grid-tile .product-tile', function (e) { 10776 if (breakpoints.isHighRes()) { 10777 var $tileHover = $(e.target).closest('.product-tile'); 10778 var $carouselContainer = $tileHover.closest('.product-carousel, .slick-slider'); 10779 var isCarousel = $carouselContainer.length > 0; 10780 var $hotSpotWrapper = $(e.target).closest('.hotSpot__content-wrapper'); 10781 10782 // On desktop, load all primary images on hover so switching swatches does not produce a flash when images are switched. 10783 lazyloadPrimaryImages($tileHover); 10784 if (isCarousel) { 10785 var $productCarousel = $carouselContainer.find('.swiper-container, .slick-track'); 10786 $carouselContainer.css('height', $carouselContainer.outerHeight()); 10787 $tileHover.addClass('product-tile--hover'); 10788 var tileHeight = $tileHover.outerHeight(); 10789 var carouselHeight = $productCarousel.outerHeight(); 10790 10791 // only use tile height if it is larger than carousel container height 10792 if (carouselHeight > tileHeight) { 10793 tileHeight = carouselHeight; 10794 } 10795 $productCarousel.css('height', tileHeight); 10796 if ($productCarousel.hasClass('swiper-container')) { 10797 $productCarousel.css('position', 'absolute'); 10798 } 10799 } else { 10800 $tileHover.css('height', $tileHover.height()).addClass('product-tile--hover'); 10801 10802 // if the hotspot component is being used on Tile hover, toggle the overflow of the product tile on hover 10803 if ($hotSpotWrapper.length) { 10804 $hotSpotWrapper.css('overflow', 'visible'); 10805 } 10806 } 10807 } 10808 }).on('mouseleave', '.js-grid-tile .product-tile', function (e) { 10809 if (breakpoints.isHighRes()) { 10810 var $tileHover = $(e.target).closest('.product-tile'); 10811 var $carouselContainer = $tileHover.closest('.product-carousel, .slick-slider'); 10812 var isCarousel = $carouselContainer.length > 0; 10813 var $hotSpotWrapper = $(e.target).closest('.hotSpot__content-wrapper'); 10814 if (isCarousel) { 10815 var $productCarousel = $carouselContainer.find('.swiper-container--recommendations, .slick-track'); 10816 $carouselContainer.css('height', 'auto'); 10817 $tileHover.removeClass('product-tile--hover'); 10818 $productCarousel.css('height', 'auto').css('position', 'static'); 10819 } else { 10820 $tileHover.css('height', 'auto').removeClass('product-tile--hover'); 10821 10822 // if the hotspot component is being used on Tile hover, toggle the overflow of the product tile on hover 10823 if ($hotSpotWrapper.length) { 10824 $hotSpotWrapper.css('overflow', 'hidden'); 10825 } 10826 } 10827 } 10828 }) 10829 // updateVisibleSwatches needs to be triggered on click for desktop, touch for mobile 10830 .on('click touchstart', '.swatch--color:not(.js-swatches-toggle)', function () { 10831 updateVisibleSwatches($(this)); 10832 }) 10833 // for Mobile, change the hover functionality to click/tap 10834 .on('click', '.js-grid-tile .product-tile .image-container:not(.lookswelove .js-grid-tile .product-tile .image-container)', function (e) { 10835 if (breakpoints.isLowRes()) { 10836 window.location.href = $(e.target).closest('a').attr('href'); 10837 e.preventDefault(); 10838 } 10839 }); 10840 },
10841 onTileFocus: function onTileFocus() { 10842 $('.product-tile').on('focusin focusout', function (e) { 10843 if (e.type === 'focusin') { 10844 $(this).addClass('product-tile--focus'); 10845 } else { 10846 $(this).removeClass('product-tile--focus'); 10847 } 10848 }); 10849 }, 10850 onClickColorSwatches: function onClickColorSwatches() { 10851 $body.on('click', '.js-grid-tile .js-color-swatch', function (e) { 10852 e.preventDefault(); 10853 selectSwatch(e.target); 10854 if (breakpoints.isLowRes()) { 10855 var $gridTile = $(e.target).closest('.js-grid-tile'); 10856 var $clickedSwatch = $(e.target).closest('.js-color-swatch'); 10857 $('.js-color-swatch', $gridTile).removeClass('selected'); 10858 $clickedSwatch.addClass('selected'); 10859 } 10860 }); 10861 }, 10862 onClickColorToggle: function onClickColorToggle() { 10863 $body.on('click', '.js-swatches-toggle', function (e) { 10864 e.preventDefault(); 10865 e.stopPropagation(); 10866 var $clickedLink = $(e.target); 10867 var $gridTile = $clickedLink.closest('.js-grid-tile'); 10868 updateSwatchToggle($clickedLink); 10869 // Proactively load images to prevent flashing on mobile 10870 lazyloadPrimaryImages($gridTile); 10871 }); 10872 }, 10873 onClickRecommendations: function onClickRecommendations() { 10874 $('body').on('click', '.js-show-tile-recommendations', function () { 10875 var $recsBtn = $(this); 10876 var $tile = $recsBtn.closest('.product-tile'); 10877 var tileRecsUrl = $tile.data('tile-recs-url'); 10878 var $tileImg = $tile.find('.tile__image-container .selected .tile__image--primary'); 10879 var drawerTitle = window.resources && window.resources.recommendations && window.resources.recommendations.drawerTitle || 'More Like This'; 10880 $.drawer({ 10881 src: tileRecsUrl, 10882 // Tile-AjaxRecommendations?pid= 10883 title: "\n <img src=\"".concat($tileImg.attr('src'), "\" alt=\"").concat($tileImg.attr('alt'), "\" class=\"drawer__title-thumb\" />\n <span class=\"recommend-heading-text-pos heading-recommended-product\">").concat(drawerTitle, "</span>\n "), 10884 size: 'sm', 10885 class: 'drawer--tile-recommendations' 10886 }); 10887 if (_satellite) { 10888 var pid = $recsBtn.closest('.product').data('pid'); 10889 _satellite.track('gridUpsell', { 10890 productID: pid 10891 }); 10892 } 10893 }); 10894 }, 10895 onWindowResize: function onWindowResize() { 10896 $(window).one('tiles:asyncLoaded', function () { 10897 $(window).on('resize tiles:carouselInited', debounce(function () { 10898 return adjustSwatches(); 10899 }, 300)); 10900 }); 10901 } 10902}; 10903 10904/***/ }), 10905
10906/***/ "./.tmp/app_col_eu_core/js/product/quickView.js": 10907/*!******************************************************!*\ 10908 !*** ./.tmp/app_col_eu_core/js/product/quickView.js ***! 10909 \******************************************************/ 10910/*! no static exports found */ 10911/***/ (function(module, exports, __webpack_require__) { 10912 10913"use strict"; 10914 10915 10916var utils = __webpack_require__(/*! ../components/utils */ "./.tmp/app_col_eu_core/js/components/utils.js"); 10917var base = __webpack_require__(/*! ./base */ "./.tmp/app_col_eu_core/js/product/base.js"); 10918var loyalty = __webpack_require__(/*! ./loyalty */ "./.tmp/app_col_eu_core/js/product/loyalty.js"); 10919var ImageGallery = __webpack_require__(/*! ./imageGallery */ "./.tmp/app_col_eu_core/js/product/imageGallery.js"); 10920var initialPageLoad = true; 10921 10922/** 10923 * Hide Quickview Modal 10924 */ 10925var hideQuickview = function hideQuickview() { 10926 if ($('.product-gallery--quickview').swiper) { 10927 $('.product-gallery--quickview').swiper.destroy(); 10928 } 10929 $('.quickview-modal').remove(); // this class is added to the modal when it is created, in createQVModal(). 10930 // also remove the backdrop 10931 $('.modal-backdrop').remove(); 10932 $.enableScroll(); 10933 $('body').removeClass('modal-open').css('padding-right', ''); 10934 $(window).trigger('scroll'); 10935}; 10936var createQVModal = function createQVModal() { 10937 var modalMarkup = utils.createModalMarkup('', { 10938 title: ' ', 10939 // Passing a blank / space character creates a blank header-title element in the modal. 10940 centeredClass: 'modal-dialog-centered', 10941 customClasses: 'quickview-modal', 10942 enableLayeredDrawers: true 10943 }); 10944 var $modal = $(modalMarkup).modal(); 10945 $modal.on('hidden.bs.modal', function () { 10946 hideQuickview(); 10947 }); 10948 return $modal; 10949}; 10950 10951/** 10952 * Updates the digitalData object. 10953 * @param {Object} data The data to set in the digitalData object 10954 */ 10955var updateDTM = function updateDTM(data) { 10956 if (!!data && 'dtmLayer' in data && 'digitalData' in window) { 10957 var propsToUpdate = ['pageInstanceID', 'page', 'user', 'cart']; 10958 propsToUpdate.forEach(function (prop) { 10959 if (data.dtmLayer[prop]) { 10960 window.digitalData[prop] = data.dtmLayer[prop]; 10961 } 10962 }); 10963 } 10964}; 10965 10966/** 10967 * Restores the digitalData object. 10968 * @param {Object} data The data to set in the digitalData object 10969 */ 10970var restoreDTM = function restoreDTM(data) { 10971 if (!!data && 'digitalData' in window) { 10972 var propsToUpdate = ['pageInstanceID', 'page', 'user']; 10973 propsToUpdate.forEach(function (prop) { 10974 if (data[prop]) { 10975 window.digitalData[prop] = data[prop]; 10976 } 10977 }); 10978 delete window.preQuickViewModalDigitalData; 10979 } 10980}; 10981 10982/** 10983 * Initialize prodict image gallery 10984 */ 10985var initGallery = function initGallery() { 10986 var quickviewGalleryConfig = { 10987 isQuickview: true, 10988 galleryContainerSelector: '.product-quickview .primary-images' 10989 }; 10990 var swiperImageGallery = new ImageGallery(quickviewGalleryConfig); 10991 swiperImageGallery.init(); 10992}; 10993 10994/** 10995 * Fetches quickview html from server and launches modal 10996 * @param {string} quickViewUrl - Quick view controller endpoint url 10997 * @param {HTMLElement} $modal - Reference to modal JQuery object 10998 */ 10999var launchQuickview = function launchQuickview(quickViewUrl, $modal) { 11000 if (!quickViewUrl) { 11001 return; 11002 } 11003 if (!$modal) { 11004 $modal = createQVModal(); // eslint-disable-line no-param-reassign 11005 } 11006 11007 $modal.modal('show'); 11008 $modal.find('.modal-body').spinner().start(); 11009 var successHandler = function successHandler(html) { 11010 $modal.find('.modal-body').html(html); 11011 // updated the header 11012 var $modalContainer = $modal.find('.product-quickview'); 11013 window.dispatchEvent(new Event('quickview:shown:dtm')); 11014 initGallery(); 11015 $(document).on('product:swiper:update', function () { 11016 initGallery(); 11017 }); 11018 if ($('.quickview-modal-looks').length) { 11019 var _loop = function _loop(i) { 11020 var looksPdpUrl = $('.set-item-' + i + ' .looks-pdp-url').attr('href'); 11021 $('.set-item-' + i + ' .qv-ratings').attr('data-link', looksPdpUrl + '?bvOpen=true'); 11022 // check custom preference 'redirectToReviewFromQuickViewLink' 11023 if ($('.qv-ratings').data('review-link')) { 11024 $('.set-item-' + i + ' .qv-ratings').on('click', function (e) { 11025 e.preventDefault(); 11026 looksPdpUrl = utils.setUrlKeyValue(looksPdpUrl, 'bvOpen', true); 11027 window.location.href = looksPdpUrl; 11028 }); 11029 } 11030 }; 11031 // conditional for Looks We Love specific modal to account for multiple Product url review links for the Product Set 11032 for (var i = 0; i < $('.set-item').length; i++) { 11033 _loop(i); 11034 } 11035 } else if ($('.qv-ratings').data('review-link')) { 11036 $('.qv-ratings').on('click', function (e) { 11037 e.preventDefault(); 11038 var basePDPUrl = $modalContainer.find('.js-qv-pdp-url').attr('href'); 11039 basePDPUrl = utils.setUrlKeyValue(basePDPUrl, 'bvOpen', true); 11040 window.location.href = basePDPUrl.replace('#void', ''); 11041 }); 11042 } 11043 11044 /* 11045 * On click of a LWL Multi View thumbnail alternate, display the corresponding alternate LWL Multi View product 11046 */ 11047 $('.set-item-multi').on('click', function () { 11048 var setItem = $('.set-item-' + $(this).data('index')); 11049 var setItemMulti = $('.set-item-multi-' + $(this).data('index')); 11050 $('.set-items').find('.set-item.d-block').removeClass('d-block'); 11051 $('.set-items-looks').find('.set-item-multi.active').removeClass('active'); 11052 $(setItem).toggleClass('d-block'); 11053 $(setItemMulti).toggleClass('active'); 11054 11055 // Instantiate new Swiper object on click for alternate products with swiperData config values 11056 initGallery(); 11057 }); 11058 $('.set-items-wrapper').slick({ 11059 infinite: false, 11060 slidesToScroll: 1, 11061 slidesToShow: 5, 11062 responsive: [{ 11063 breakpoint: 576, 11064 settings: { 11065 slidesToScroll: 1, 11066 slidesToShow: 2 11067 } 11068 }] 11069 }); 11070 11071 /** 11072 * Necessary to make sure single variants can be added to the cart on load 11073 * Also: Call attributeSelect if enableRefreshAvailabilityOnload is set to "Yes" 11074 */
11075 var $productContainer = $modal.find('.product-detail'); 11076 if ($productContainer.data('availability-refresh') || $productContainer.data('pid') === $productContainer.data('master-pid') && base.isEverythingSelected()) { 11077 var $swatchSelected = $modal.find('.product__attributes a.selected').first(); 11078 var selectedAttributeID = $swatchSelected.closest('.js-attribute').data('attr'); 11079 base.attributeSelect($swatchSelected.data('attr-url'), $productContainer, selectedAttributeID); 11080 } 11081 base.quickViewSwatchFunctionality(); 11082 base.updateOOSColorVariants($productContainer); 11083 base.forceOOSNotifyMe(); 11084 }; 11085 11086 // Persisting the digital data before opening the quick view modal, to restore it back once the modal is closed. 11087 // Digital data is stringified and stored in another variable as direct assignment results in copying by reference because of which change in original variable results in change of the target one. 11088 window.preQuickViewModalDigitalData = JSON.stringify(window.digitalData); 11089 $.ajax({ 11090 url: quickViewUrl, 11091 method: 'GET', 11092 dataType: 'json', 11093 success: function success(data) { 11094 if (!$modal[0].parentElement) { 11095 // success was called before the modal is shown. 11096 $modal.on('shown.bs.modal', function () { 11097 updateDTM(data); 11098 // Copying the pageHier attribute from the source page of quick view modal. 11099 var preQuickViewModalDigitalData = JSON.parse(window.preQuickViewModalDigitalData); 11100 if (preQuickViewModalDigitalData && preQuickViewModalDigitalData.page && preQuickViewModalDigitalData.page.pageInfo) { 11101 window.digitalData.page.pageInfo.pageHier = preQuickViewModalDigitalData.page.pageInfo.pageHier + ':QuickView'; 11102 } 11103 successHandler(data.renderedTemplate); 11104 }); 11105 } else { 11106 updateDTM(data); 11107 // Copying the pageHier attribute from the source page of quick view modal. 11108 var preQuickViewModalDigitalData = JSON.parse(window.preQuickViewModalDigitalData); 11109 if (preQuickViewModalDigitalData && preQuickViewModalDigitalData.page && preQuickViewModalDigitalData.page.pageInfo) { 11110 window.digitalData.page.pageInfo.pageHier = preQuickViewModalDigitalData.page.pageInfo.pageHier + ':QuickView'; 11111 } 11112 successHandler(data.renderedTemplate); 11113 } 11114 $modal.on('hidden.bs.modal', function () { 11115 window.preQuickViewModalDigitalData = JSON.parse(window.preQuickViewModalDigitalData); 11116 // Restores the digital data back to what it was before the quick view modal. 11117 restoreDTM(window.preQuickViewModalDigitalData); 11118 }); 11119 // updates forecasted loyalty points 11120 loyalty.init(); 11121 }, 11122 complete: function complete() { 11123 $.spinner().stop(); 11124 $.disableScroll(); 11125 $(window).trigger('load.countdown'); // Trigger countdown 11126 }, 11127 11128 error: function error() { 11129 hideQuickview(); 11130 } 11131 }); 11132}; 11133 11134/** 11135 * Start spinned inside QV 11136 */ 11137var startSpinner = function startSpinner() { 11138 var $modalBody = $('.quickview-modal .modal-body'); 11139 if ($modalBody.length) { 11140 $modalBody.spinner().start(); 11141 } 11142}; 11143 11144/** 11145 * Sets Out of Stock status text based on the selectable/unselectable state of the attribute 11146 * @param {HTMLElement} $swatchEntered - targeted swatch on click/hover 11147 * @param {string} selectedValue - selected text value 11148 * @param {HTMLElement} attributeLabelValue - selected text element 11149 */ 11150var setSelectedValue = function setSelectedValue($swatchEntered, selectedValue, attributeLabelValue) { 11151 var outOfStockText = $swatchEntered.closest('[data-attr-oos-text]').data('attr-oos-text'); 11152 if (selectedValue !== undefined) { 11153 if ($swatchEntered.hasClass('unselectable')) { 11154 attributeLabelValue.text(selectedValue + ' ' + outOfStockText).addClass('text-danger'); 11155 } else { 11156 attributeLabelValue.text(selectedValue).removeClass('text-danger'); 11157 } 11158 } 11159}; 11160 11161/** 11162 * QuickView Custom events on Attribute click and hover 11163 */ 11164var onSelectAttribute = function onSelectAttribute() { 11165 // Color Attribute click event to display selected/selectable status 11166 $('.js-product-content').on('attribute:click', '.js-swatch', function (e) { 11167 var $swatchClicked = $(e.currentTarget); 11168 var attrType = $swatchClicked.closest('.js-attribute').data('attr'); 11169 var attributeLabelValue = $swatchClicked.closest('.js-attribute').find('.js-attr-label-value'); 11170 var selectedValue; 11171 if (attrType === 'color') { 11172 selectedValue = $swatchClicked.find('.color-value').attr('title'); 11173 } else { 11174 selectedValue = $swatchClicked.data('attr-hover'); 11175 } 11176 setSelectedValue($swatchClicked, selectedValue, attributeLabelValue); 11177 }); 11178 11179 // Size/Dimension Attribute Select event to get the new attribute selected/selectable status 11180 $(document).on('attribute:select', '.js-product-content .js-size-swatch, .js-product-content .js-dimension-swatch', function (e, $attrValue, attrValue) { 11181 var outOfStockText = $attrValue.closest('[data-attr-oos-text]').data('attr-oos-text'); 11182 var attributeLabelValue = $attrValue.closest('.js-attribute').find('.js-attr-label-value'); 11183 attributeLabelValue.text($attrValue.data('attr-hover')); 11184 if (!attrValue.selectable) { 11185 attributeLabelValue.addClass('text-danger').text($attrValue.data('attr-hover') + ' ' + outOfStockText); 11186 } else { 11187 attributeLabelValue.removeClass('text-danger').text($attrValue.data('attr-hover')); 11188 } 11189 }); 11190}; 11191 11192/** 11193 * updates QuickViewView Details url if Variation atttibute selected is Out of Stock 11194 * @param {Object}
11194 response - response data object from ajax 11195 */ 11196var updateViewDetailsURL = function updateViewDetailsURL(response) { 11197 if (response && response.data) { 11198 var responseDataProduct = response.data.product; 11199 var selectedProductUrl = responseDataProduct && responseDataProduct.selectedProductUrl ? responseDataProduct.selectedProductUrl : ''; 11200 var masterId = responseDataProduct && responseDataProduct.masterId ? responseDataProduct.masterId : ''; 11201 var OOSSelectedProductUrl; 11202 var $pdpLinks = $('.product-quickview .js-qv-pdp-url'); 11203 11204 // if the selected variation attribute is Out of Stock, remove the size parameter from the url 11205 if (responseDataProduct.OOSSelectedAttributes) { 11206 var OOSSelectedAttributeSize = responseDataProduct.OOSSelectedAttributes && responseDataProduct.OOSSelectedAttributes.size ? responseDataProduct.OOSSelectedAttributes.size : ''; 11207 var urlSizeParameter = '&dwvar_' + masterId + '_size=' + OOSSelectedAttributeSize; 11208 if (selectedProductUrl.indexOf(urlSizeParameter)) { 11209 OOSSelectedProductUrl = selectedProductUrl.replace(urlSizeParameter, ''); 11210 } 11211 $pdpLinks.attr('href', OOSSelectedProductUrl); 11212 } else { 11213 $pdpLinks.attr('href', responseDataProduct.selectedProductUrl); 11214 } 11215 } 11216}; 11217module.exports = { 11218 initQuickview: function initQuickview() { 11219 $('body').off('.qv', '.js-quickview').on('click.qv', '.js-quickview', function (e) { 11220 // Don't initiate qv when product tile image is clicked in desktop breakpoint 11221 var $this = $(e.currentTarget); 11222 var link = $this.data('link') || $this.attr('href'); 11223 var qs = utils.queryStringToObject(link); 11224 if (!qs.pid) { 11225 return; 11226 } 11227 e.preventDefault(); 11228 var $modal = createQVModal(); 11229 launchQuickview(link, $modal); 11230 }); 11231 11232 // quickview won't load without a delay 11233 setTimeout(function () { 11234 var qvPid = sessionStorage.getItem('quickview'); 11235 var $productTile = $('.product[data-pid=' + qvPid + ']'); 11236 if (qvPid && $productTile.length) { 11237 var qvLink = $productTile.find('.js-quickview').data('link'); 11238 var $modal = createQVModal(); 11239 launchQuickview(qvLink, $modal); 11240 sessionStorage.removeItem('quickview'); 11241 } 11242 }, 500); 11243 base.initExclusiveEvents(); 11244 }, 11245 launchEditProduct: function launchEditProduct(editProductUrl) { 11246 if (editProductUrl) { 11247 var $modal = createQVModal(); 11248 launchQuickview(editProductUrl, $modal); 11249 } 11250 }, 11251 hideQuickview: hideQuickview, 11252 startSpinner: startSpinner, 11253 beforeAddToCart: function beforeAddToCart() { 11254 $('body').on('product:beforeAddToCart', function (data) { 11255 // Prevent subsequent 'add-to-cart' clicks 11256 $('.product-quickview button.add-to-cart').prop('disabled', true); 11257 $(data).closest('.modal-body').spinner().start(); 11258 }); 11259 }, 11260 afterAddToCart: function afterAddToCart() { 11261 $('body').on('product:afterAddToCart', function () { 11262 if ($('.cart-container').length) { 11263 // we're on the cart page. 11264 $.spinner().start(); 11265 location.reload(); 11266 } else if ($('.quickview-modal .product-set').length) { 11267 $.spinner().stop(); 11268 } else { 11269 hideQuickview(); 11270 } 11271 }); 11272 }, 11273 updateAttribute: function updateAttribute() { 11274 $('body').on('product:afterAttributeSelect', function (e, response) { 11275 if ($('.modal.show .product-quickview>.bundle-items').length) { 11276 $('.modal.show').find(response.container).data('pid', response.data.product.id); 11277 $('.modal.show').find(response.container).find('.product-id').data('pid', response.data.product.id).text(response.data.product.materialStyleNumber); 11278 } else if ($('.set-items').length) { 11279 $(response.container).find('.product-id').data('pid', response.data.product.id).text(response.data.product.materialStyleNumber); 11280 } else { 11281 $('.modal.show .product-quickview').data('pid', response.data.product.id); 11282 updateViewDetailsURL(response); 11283 } 11284 }); 11285 }, 11286 updateAddToCart: function updateAddToCart() { 11287 $('body').on('product:updateAddToCart', function (e, response) { 11288 // update global add to cart (single products, bundles)
11289 var $dialog = $(response.$productContainer).closest('.quickview-modal'); 11290 11291 // update local add to cart (for sets) 11292 if (response.product.readyToOrder && !response.product.available) { 11293 $('.js-product__message--partners', $dialog).show(); 11294 } 11295 if (base.isEverythingSelected()) { 11296 $('button.add-to-cart, button.add-to-cart-global, button.update-cart-product-global').attr('disabled', false); 11297 } 11298 11299 // Upon initial load, products are not ready for order because a size isn't selected (unless O/S or only one size in stock). 11300 // At that time, the button to add to cart should be enabled until the customer clicks it. 11301 // After that, the button should disabled and the customer should follow displayed messaging regarding making a selection. 11302 var disableAddToCart = !response.product.available || !response.product.readyToOrder && !initialPageLoad; 11303 $('button.add-to-cart, button.update-cart-product-global', response.$productContainer).attr('disabled', disableAddToCart).text(response.product.buttonText); 11304 if (disableAddToCart) { 11305 initialPageLoad = false; 11306 } 11307 var enable = $('.product-availability', $dialog).toArray().every(function (item) { 11308 return $(item).data('available') && $(item).data('ready-to-order'); 11309 }); 11310 if (enable) { 11311 $('.js-product__message--partners', $dialog).hide(); 11312 } 11313 }); 11314 }, 11315 updateAvailability: function updateAvailability() { 11316 $('body').on('product:updateAvailability', function (e, response) { 11317 var $dialog = $(response.$productContainer).closest('.quickview-modal'); 11318 if ($dialog.length) { 11319 $('div.availability', $dialog).data('ready-to-order', response.product.readyToOrder).data('available', response.product.available); 11320 11321 // Might need to preface with div.availability 11322 var $availabilityMsgContainer = $('.availability-msg', $dialog).toggleClass('d-none', !response.message); 11323 if (response.availabilityMessages && response.availabilityMessages.length) { 11324 response.availabilityMessages.forEach(function (message) { 11325 $availabilityMsgContainer.alert({ 11326 content: message.content, 11327 theme: message.theme, 11328 dismissible: false, 11329 autoClose: false 11330 }); 11331 }); 11332 } 11333 $('.product__message--velocity', $dialog).empty().html(response.velocityMessage); 11334 var variationAttr = response.$productContainer.prevObject.closest('.js-attribute').data('attr').toLowerCase();
11335 $('.selectswatch-' + variationAttr + '-msg', response.$productContainer).removeClass('d-inline').addClass('d-none'); 11336 $('.outofstock-combination-msg', $dialog); 11337 if (response.product.notifyme && !response.product.isMaster) { 11338 $('.product__add-to-cart', $dialog).hide(); 11339 $('.product__notify-me', $dialog).show(); 11340 $('.product__message--velocity', $dialog).addClass('product__message--velocity--notifyme').show(); 11341 $('input[name=variantPID]', $dialog).val(response.product.id); 11342 } else { 11343 $('.product__add-to-cart', $dialog).show(); 11344 $('.product__notify-me', $dialog).hide(); 11345 11346 // Display inventory threshold message 11347 if (response.velocityMessage !== '') { 11348 $('.product__message--velocity', response.$productContainer).removeClass('product__message--velocity--notifyme').show(); 11349 } 11350 } 11351 if ($('.global-availability', $dialog).length) { 11352 // This is used for a Product Bundles and Product Sets. Checks all the 11353 // sub-products for Available and Ready. If all selected variants are 11354 // selected, then update the global-availability data. 11355 var allAvailable = $('.product-availability', $dialog).toArray().every(function (item) { 11356 return $(item).data('available'); 11357 }); 11358 var allReady = $('.product-availability', $dialog).toArray().every(function (item) { 11359 return $(item).data('ready-to-order'); 11360 }); 11361 $('.global-availability', $dialog).data('ready-to-order', allReady).data('available', allAvailable); 11362 $('.global-availability .availability-msg', $dialog).empty(); // response.resources.info_selectforstock 11363 11364 if (response.availabilityMessages && response.availabilityMessages.length) { 11365 response.availabilityMessages.forEach(function (message) { 11366 $availabilityMsgContainer.alert({ 11367 content: message.content, 11368 theme: message.theme, 11369 dismissible: false, 11370 autoClose: false 11371 }); 11372 }); 11373 } 11374 } 11375 $('body').trigger('product:checkOutOfStock', response); 11376 } 11377 }); 11378 }, 11379 closeQuickview: function closeQuickview() { 11380 $('.quickview-modal').on('click', function (e) { 11381 if (e.target !== e.currentTarget) { 11382 return; 11383 } 11384 hideQuickview(); 11385 }); 11386 }, 11387 closeQuickviewButton: function closeQuickviewButton() { 11388 $('.js-close-quickView').on('click', function () { 11389 hideQuickview(); 11390 }); 11391 }, 11392 onSelectAttribute: onSelectAttribute, 11393 updateViewDetailsURL: updateViewDetailsURL 11394}; 11395 11396/***/ }), 11397
11398/***/ "./.tmp/app_col_eu_core/js/sizefit/sizefit.js": 11399/*!****************************************************!*\ 11400 !*** ./.tmp/app_col_eu_core/js/sizefit/sizefit.js ***! 11401 \****************************************************/ 11402/*! no static exports found */ 11403/***/ (function(module, exports, __webpack_require__) { 11404 11405"use strict"; 11406 11407 11408var breakpoints = __webpack_require__(/*! ../components/breakpoints */ "./.tmp/app_col_eu_core/js/components/breakpoints.js"); 11409var tabbedContainer = __webpack_require__(/*! ../aem/tabbedContainer */ "./.tmp/app_col_eu_core/js/aem/tabbedContainer.js"); 11410 11411/** 11412 * Show unit toggle control if .js-no-unit-toggle class is not present 11413 */ 11414function showUnitToggle() { 11415 if ($('.tabbed-container__tabs .js-no-unit-toggle.active').is(':visible')) { 11416 $('.js-unit-toggle').addClass('d-none'); 11417 } else { 11418 $('.js-unit-toggle').removeClass('d-none'); 11419 } 11420} 11421 11422/** 11423 * 11424 * @param {string} categorySuffix - the category to be shown 11425 * @param {string} sectionDiv - the section to be shown 11426 * @param {string} buttonText - the text to be replace the top accordion 11427 * @param {string} gender - text containing the gender option to show on the top most accordion upon selection 11428 */ 11429function toggleCategorySizeFit(categorySuffix, sectionDiv, buttonText, gender) { 11430 if (typeof categorySuffix === 'undefined' || typeof sectionDiv === 'undefined') { 11431 return; 11432 } 11433 var $categorySelected = $('div.size-guides-' + categorySuffix); 11434 var $divSelected = $('div.' + sectionDiv); 11435 var $activeCategory = $('.category-shown'); 11436 var $activeSection = $('.section-shown'); 11437 if ($activeCategory) { 11438 $activeCategory.addClass('d-none').removeClass('category-shown'); 11439 } 11440 if ($activeSection) { 11441 $activeSection.addClass('d-none').removeClass('section-shown'); 11442 } 11443 $categorySelected.removeClass('d-none').addClass('category-shown'); 11444 $divSelected.removeClass('d-none').addClass('section-shown'); 11445 var menuText = gender + ' > ' + buttonText; 11446 var $menu = $('a.selectedCategory div.accordion__title__text'); 11447 $menu.html(menuText); 11448 11449 // Determine if unit toggle control should display 11450 showUnitToggle(); 11451 11452 // Click tab to ensure proper tabbed content height 11453 $('.ofs__item.active:visible').trigger('click'); 11454 var genderCategory = gender.replace(/[^\w ]+/g, '').toLowerCase(); 11455 $('#selectionCategory-' + genderCategory).collapse('toggle'); 11456 $('#selectionAccordion').collapse('toggle'); 11457} 11458 11459/** 11460 * to select a category from the list 11461 * @param {Object} $element category id value 11462 */ 11463function selectCategory($element) { 11464 var elementIdParts = $element.id.split('-'); 11465 var categorySuffix = elementIdParts[0] + '-' + $element.dataset.subcat; 11466 var genderToShow = $element.dataset.gendershow; 11467 var sectionDiv = elementIdParts[1]; 11468 var buttonText = $element.innerText; 11469 toggleCategorySizeFit(categorySuffix, sectionDiv, buttonText, genderToShow); 11470} 11471 11472/** 11473 * convert inches-to-centimeters and vice-versa 11474 * @param {boolean} useCentimeters if true then convert to centimeters, else convert to inches 11475 * @param {string} value value to convert 11476 * @returns {string} converted value 11477 */ 11478function unitConversion(useCentimeters, value) { 11479 var result; 11480 var radix = 10; 11481 var unit = useCentimeters ? 2.54 : 0.3937; 11482 if (value.indexOf('-') > -1) { 11483 var values = value.split('-'); 11484 values.forEach(function (size) { 11485 if (!isNaN(size)) { 11486 result = result == null ? parseFloat((Number(size) * unit).toFixed(1), radix) : result + '-' + parseFloat((Number(size) * unit).toFixed(1), radix); 11487 } 11488 }); 11489 } else if (!isNaN(value)) { 11490 result = parseFloat((Number(value) * unit).toFixed(1), radix); 11491 } 11492 return result; 11493} 11494 11495/** 11496 * function to read the measurement values and set respective converted value 11497 * @param {boolean} useCentimeters if true then convert to centimeters, else convert to inches 11498 */ 11499function toggleMeasurements(useCentimeters) { 11500 var $toggleTables = $('.size-chart-asset table'); 11501 $toggleTables.each(function () { 11502 var $toggleTable = $(this); 11503 var $columnHeaders = $toggleTable.find('thead th'); // get table column headers 11504 11505 $toggleTable.find('.js-convert-column').each(function () { 11506 var nthIndex = $columnHeaders.index(this) + 1; // index of .js-convert-column element relative to it's siblings 11507 var $toggleCells = $toggleTable.find('tbody td:nth-child(' + nthIndex + ')'); // get table cells in the same column as .js-convert-column 11508 11509 $toggleCells.each(function () { 11510 var $toggleCell = $(this); 11511 var convertedValue = unitConversion(useCentimeters, $toggleCell.text()); // convert values on relevant table cells 11512 11513 if (convertedValue) { 11514 $toggleCell.text(convertedValue); 11515 } 11516 }); 11517 }); 11518 }); 11519} 11520 11521/** 11522 * Clear table of all styling classes 11523 * @param {Object} $tableElement - the table that will have the styling removed from its elements 11524 */ 11525function clearTableClasses($tableElement) { 11526 $tableElement.find('th, td').removeClass('selected-table-element cross-section-header cross-section-data'); 11527} 11528 11529/** Adds the appropriate styling to the table element being passed 11530 * @param {Object} $tableElement - element to be styled, based of th/td tag 11531 */ 11532function applyTableElementStyle($tableElement) { 11533 var className; 11534 className = $tableElement.is('th') ? 'cross-section-header' : 'cross-section-data'; 11535 $tableElement.addClass(className); 11536} 11537 11538/** For the table in the measurement section 11539 * @param {Object} tableElement - table element to be focussed on for cross section 11540 * @returns {boolean} - false to break the loop, true to move on to the next iteration in the each loop. 11541 */ 11542function tableCrossSection(tableElement) { 11543 var $tdElement = $(tableElement); 11544 var $trElement = $tdElement.closest('tr'); 11545 var containsTdElement = $trElement.has('td').length; 11546 var elementIndex = $tdElement.index(); 11547 var $tableElement = $tdElement.closest('table'); 11548 clearTableClasses($tableElement); 11549 $tdElement.addClass('selected-table-element'); 11550 11551 // Check if row contains td element, if not it is the header row and 11552 // cross section doesn't need to be calculated 11553 if (containsTdElement && elementIndex) { 11554 // Loop through each table row and apply cross section styling 11555 $tableElement.find('tr').each(function (iterator, rowElement) { 11556 var $rowElement = $(rowElement); 11557 11558 // If table row does not contain the moused over cell, 11559 // apply styling to the cell in the same column 11560 if (!$rowElement.has('td.selected-table-element').length) { 11561 var $rowCell = $($rowElement.find('th, td')[elementIndex]); 11562 applyTableElementStyle($rowCell); 11563 } else { 11564 // Apply styling to the entire row, prior to the moused over element 11565 $rowElement.children().each(function (columnIndex, childElement) { 11566 var $childElement = $(childElement); 11567 if (columnIndex < elementIndex) { 11568 applyTableElementStyle($childElement); 11569 } 11570 }); 11571 return false;
11572 } 11573 return true; 11574 }); 11575 } 11576 return true; 11577} 11578 11579/** 11580 * Create scroll buttons when the table is larger than the size of the screen 11581 * TODO: Tech Debt: https://columbia.atlassian.net/browse/GSD-18362 - Remove createScrollButtons() 11582 */ 11583function createScrollButtons() { 11584 var $activeContent = $('.js-sizefit-content:visible .tabbed-container__content.active'); 11585 var overflow = $activeContent.find('table.size-chart-asset__table').outerWidth() - $activeContent.outerWidth(); 11586 if (overflow > 0 && breakpoints.isLowRes()) { 11587 $('.js-scroll-button').remove(); // remove old instances 11588 var tableHeaderHeight = $activeContent.find('table.size-chart-asset__table th').css('height'); 11589 var marginLeft = parseInt($activeContent.find('table.size-chart-asset__table th').css('width'), 10) + 1 + 'px'; // Adds extra pixel for outline 11590 var $rightScrollButton = "<button class=\"btn btn-icon scroll-table-right js-scroll-button\" data-overflow=\"".concat(overflow, "\" style=\"height: ").concat(tableHeaderHeight, "\">\n <svg class=\"svgicon\" aria-hidden=\"true\"><use href=\"#chevron_right\"></use></svg><span class=\"aria-offscreen\">Scroll right</span></button>"); 11591 var $leftScrollButton = "<button class=\"btn btn-icon scroll-table-left js-scroll-button d-none\" data-overflow=\"0\" style=\"height: ".concat(tableHeaderHeight, "; left: ").concat(marginLeft, ";\"><svg class=\"svgicon\" aria-hidden=\"true\"><use href=\"#chevron_left\"></use></svg><span class=\"aria-offscreen\">Scroll left</span></button>"); 11592 $activeContent.append($leftScrollButton); 11593 $activeContent.append($rightScrollButton); 11594 } 11595} 11596 11597/** 11598 * Switches position of scroll buttons 11599 * @param {Object} $container - jQuery element of table element 11600 */ 11601function scrollButtonPosition($container) { 11602 var $table = $container.find('table.size-chart-asset__table'); 11603 var tableOverflow = $table.outerWidth() - $container.outerWidth(); 11604 var $tableOffset = $table.offset(); 11605 var offsetLeft = $tableOffset.left - 48; // remove 3rem offset 11606 11607 if (tableOverflow + offsetLeft < 2) { 11608 $('.scroll-table-right').addClass('d-none'); 11609 $('.js-scroll-button.scroll-table-left.d-none').removeClass('d-none'); 11610 } else if (offsetLeft < 2 && offsetLeft > 0) { 11611 $('.scroll-table-left').addClass('d-none'); 11612 $('.js-scroll-button.scroll-table-right.d-none').removeClass('d-none'); 11613 } 11614} 11615 11616/** 11617 * Highlights fit selection in Fit Guide content asset 11618 */ 11619function highlightFitSelection() { 11620 var $sizeFitModal = $('.sizefit-modal'); 11621 var fitAsset = $('.js-apparel-fit').data('fit-asset'); 11622 var selection = $sizeFitModal.find('[id*="' + fitAsset + '"]'); 11623 11624 // Adds outline to content asset wrapper 11625 selection.addClass('outline'); 11626} 11627module.exports = { 11628 initSizeFit: function initSizeFit() { 11629 var $unitToggles = $('.js-unit-toggle'); 11630 createScrollButtons(); 11631 highlightFitSelection(); // Highlight apparel fit in content asset 11632 11633 // TODO: Add event delegation / investigate if needed. 11634 $('.js-sizefit-option').on('click', function () { 11635 selectCategory(this); 11636 $(window).trigger('resize'); // this fixes the height of the overflow slider tabs 11637 }); 11638 11639 // inches/cm toggle 11640 $unitToggles.on('click', function () { 11641 var $element = $(this); 11642 var useCentimeters = false; 11643 if ($element.hasClass('inches')) { 11644 $unitToggles.addClass('centi').removeClass('inches'); 11645 useCentimeters = true; 11646 } else { 11647 $unitToggles.addClass('inches').removeClass('centi'); 11648 } 11649 toggleMeasurements(useCentimeters); 11650 }); 11651 $('body').on('click', '.ofs__item', function () { 11652 createScrollButtons(); 11653 }); 11654 $('body').on('click', '.js-no-unit-toggle', function () { 11655 showUnitToggle(); 11656 }); 11657 $('.js-sizefit-content').on('shown.bs.collapse', function () { 11658 $(window).trigger('resize'); // this fixes the height of the overflow slider tabs 11659 // and this fixes the height of the active content container which was hidden, so had a height of 0: 11660 $(this).find('.tabbed-container__content-container').each(function (index, container) { 11661 var $container = $(container); 11662 return $container.css('height', $container.find('.active').outerHeight()); 11663 }); 11664 createScrollButtons(); 11665 }); 11666 $('body').on('click', '.js-scroll-button', function () { 11667 var $activeTable = $('.js-sizefit-content:visible .tabbed-container__content.active .size-chart-asset'); 11668 var $currentScrollButton = $(this); 11669 $activeTable.animate({ 11670 scrollLeft: $currentScrollButton.data('overflow') 11671 }, 200, function () { 11672 scrollButtonPosition($activeTable); 11673 }); 11674 }); 11675 $('body').on('mouseover', '.size-chart-asset__table td, .size-chart-asset__table th', function () { 11676 tableCrossSection(this); 11677 }); 11678 $('body').on('mouseleave', 'table', function () { 11679 var $tableElement = $(this); 11680 clearTableClasses($tableElement); 11681 }); 11682 $('.size-chart-asset').on('scroll', function () { 11683 var $container = $(this); 11684 scrollButtonPosition($container); 11685 }); 11686 }, 11687 getSizeFitGuideContent: function getSizeFitGuideContent($modalContentWrapper, url) { 11688 var _this = this; 11689 var successHandler = function successHandler(html) { 11690 // append the template HTML of the interactive size/fit guide to the '.modal-body'
11691 $modalContentWrapper.find('.modal-body').html(html); 11692 11693 // initialize the event handlers and interactive behavior 11694 $modalContentWrapper.find('.overflow-slider').overflowSlider(); 11695 tabbedContainer.init(); 11696 $modalContentWrapper.find('.tabbed-container__content-container .active').siblings().hide(); // full page load already happened so we need to do this explicitly 11697 _this.initSizeFit(); 11698 }; 11699 11700 // fetch the HTML content for the interactive size/fit guide and 11701 $.ajax({ 11702 url: url, 11703 method: 'GET', 11704 dataType: 'json', 11705 success: function success(data) { 11706 if (!$modalContentWrapper[0].parentElement) { 11707 // success was called before the modal is shown. 11708 $modalContentWrapper.on('shown.bs.modal', function () { 11709 successHandler(data.renderedTemplate); 11710 }); 11711 } else { 11712 successHandler(data.renderedTemplate); 11713 } 11714 }, 11715 error: function error() { 11716 $modalContentWrapper.modal('hide'); 11717 } 11718 }); 11719 } 11720}; 11721 11722/***/ }), 11723
11724/***/ "./.tmp/app_col_eu_core/js/thirdParty/bootstrap.js": 11725/*!*********************************************************!*\ 11726 !*** ./.tmp/app_col_eu_core/js/thirdParty/bootstrap.js ***! 11727 \*********************************************************/ 11728/*! no static exports found */ 11729/***/ (function(module, exports, __webpack_require__) { 11730 11731__webpack_require__(/*! bootstrap/js/src/util.js */ "./node_modules/bootstrap/js/src/util.js"); 11732// require('bootstrap/js/src/alert.js'); 11733// require('bootstrap/js/src/button.js'); 11734__webpack_require__(/*! bootstrap/js/src/carousel.js */ "./node_modules/bootstrap/js/src/carousel.js"); 11735__webpack_require__(/*! bootstrap/js/src/collapse.js */ "./node_modules/bootstrap/js/src/collapse.js"); 11736__webpack_require__(/*! bootstrap/js/src/dropdown.js */ "./node_modules/bootstrap/js/src/dropdown.js"); 11737__webpack_require__(/*! bootstrap/js/src/modal.js */ "./node_modules/bootstrap/js/src/modal.js"); 11738// require('bootstrap/js/src/scrollspy.js'); 11739__webpack_require__(/*! bootstrap/js/src/tab.js */ "./node_modules/bootstrap/js/src/tab.js"); 11740__webpack_require__(/*! bootstrap/js/src/tooltip.js */ "./node_modules/bootstrap/js/src/tooltip.js"); 11741// require('bootstrap/js/src/popover.js'); 11742 11743/***/ }), 11744
11745/***/ "./.tmp/app_col_eu_core/js/thirdParty/emailSpellCheckerInit.js": 11746/*!*********************************************************************!*\ 11747 !*** ./.tmp/app_col_eu_core/js/thirdParty/emailSpellCheckerInit.js ***! 11748 \*********************************************************************/ 11749/*! no static exports found */ 11750/***/ (function(module, exports, __webpack_require__) { 11751 11752"use strict"; 11753 11754 11755function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } 11756function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 11757function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } 11758function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } 11759function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } 11760function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } 11761var emailSpellChecker = __webpack_require__(/*! @zootools/email-spell-checker */ "./node_modules/@zootools/email-spell-checker/dist/index.js"); 11762 11763/** 11764 * Handles the creation & update of an email suggestion alert 11765 * @param {Object} $emailInput Email input form that triggers the email suggestion 11766 * @returns {Object} Object containing the created alert 11767 */ 11768function setUpAlert($emailInput) { 11769 if ($emailInput) { 11770 var emailSuggestionConfig = window.resources.emailSuggestion; 11771 var emailSuggestion = emailSpellChecker.run({ 11772 email: $emailInput.val(), 11773 domains: [].concat(_toConsumableArray(emailSpellChecker.POPULAR_DOMAINS), _toConsumableArray(emailSuggestionConfig.additionalDomains)) 11774 }); 11775 if (emailSuggestion) { 11776 if ($emailInput.data('alert')) { 11777 // Update the existing suggestion based on updated input 11778 $emailInput.data('alert').find('.js-suggested-email').text(emailSuggestion.full); 11779 } else { 11780 // Create & Display Alert if there is an email suggestion 11781 var $alert = $emailInput.closest('.form-group').alert({ 11782 content: "<p class=\"mb-0 text-break\">".concat(emailSuggestionConfig.text.prompt, " <span class=\"js-suggested-email font-weight-bold\">").concat(emailSuggestion.full, "</span>?</p>\n <button class=\"js-email-fix btn btn-link mt-2 font-weight-bold\">").concat(emailSuggestionConfig.text.fix, "</button>"), 11783 theme: 'warning', 11784 autoClose: false, 11785 dismissible: false 11786 }).addClass('mb-0'); 11787 11788 // Set the alert to be related to the email input 11789 $emailInput.data('alert', $alert); 11790 $alert.data('input', $emailInput); 11791 $alert.on('alert.shown', function () { 11792 $('.js-email-fix').on('click', function (e) { 11793 e.preventDefault(); 11794 var currentSuggestion = $(this).closest('.alert__content').find('.js-suggested-email').text(); 11795 $emailInput.val(currentSuggestion).trigger('invalid', this.validity).removeData('alert'); 11796 $alert.close(); 11797 }); 11798 }); 11799 return $alert; 11800 } 11801 } 11802 } 11803 return null; 11804} 11805module.exports = function () { 11806 var $emailSuggestionAlert; 11807 $('body').on('input', 'input[type=email]', function () { 11808 var $emailInput = $(this); 11809 11810 // Check the email for spelling suggestions 11811 if (window.resources.emailSuggestion.enabled) { 11812 var $alert = $emailInput.data('alert'); 11813 11814 // If the user has entered the provided suggestion, don't find a new suggestion & remove the alert 11815 if ($alert && $emailInput.val() === $alert.find('.js-suggested-email').text()) { 11816 $emailInput.removeData('alert'); 11817 $alert.close(); 11818 } else { 11819 // Check if the input is a valid email, and delay the alert to allow the user to finish typing 11820 // eslint-disable-next-line no-useless-escape 11821 var regex = new RegExp(window.resources.emailRegex); 11822 if (regex.test($emailInput.val())) { 11823 setTimeout(function () { 11824 var $newAlert = setUpAlert($emailInput); 11825 // only assign a valid suggestion alert 11826 if ($newAlert) { 11827 $emailSuggestionAlert = $newAlert; 11828 } 11829 }, 200); 11830 } 11831 } 11832 } 11833 }); 11834 $('body').on('focus', 'input, select, textarea', function () { 11835 // If the user navigates to another input that is not related to the email suggestion, close it. 11836 if (window.resources.emailSuggestion.enabled && $emailSuggestionAlert && $emailSuggestionAlert.length) { 11837 var $input = $emailSuggestionAlert.data('input'); 11838 if ($input && $input.length && $input[0] !== this) { 11839 $emailSuggestionAlert.data('input').removeData('alert'); 11840 $emailSuggestionAlert.close(); 11841 $emailSuggestionAlert = null; 11842 } 11843 } 11844 }); 11845}; 11846 11847/***/ }), 11848
11849/***/ "./.tmp/app_col_eu_core/js/thirdParty/jquery.alert/jquery.alert.js": 11850/*!*************************************************************************!*\ 11851 !*** ./.tmp/app_col_eu_core/js/thirdParty/jquery.alert/jquery.alert.js ***! 11852 \*************************************************************************/ 11853/*! no static exports found */ 11854/***/ (function(module, exports, __webpack_require__) { 11855 11856"use strict"; 11857/* eslint-disable no-underscore-dangle */ 11858 11859 11860function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 11861(function ($) { 11862 var DEFAULT_TOAST_PARENTSELECTOR = 'body'; 11863 var DEFAULT_TOAST_CONTAINERID = 'defaultToaster'; 11864 var DEFAULT_BANNER_PARENTSELECTOR = '.siteheader__bottom'; 11865 var DEFAULT_BANNER_CONTAINERID = 'defaultBannerContainer'; 11866 var DEFAULT_BANNER_CONTAINERATTACHMENT = 'after'; 11867 var TRANSITION_DURATION = 400; 11868 var AUTOTIMING_BASE_SECONDS = 5; 11869 var AUTOTIMING_WORDSPERSECOND = 5; // timing ~= 5 + (wordCount / 5) 11870 var DEFAULT_ICON = { 11871 primary: '', 11872 success: 'check_circle', 11873 info: 'help_outline', 11874 warning: 'warning', 11875 danger: 'error' 11876 }; 11877 var PLACEMENT = { 11878 toast: 'toast', 11879 banner: 'banner', 11880 inline: 'inline' 11881 }; 11882 var _attach = function _attach($parent, $child, attachment) { 11883 switch (attachment) { 11884 case 'prepend': 11885 $parent.prepend($child); 11886 break; 11887 case 'before': 11888 $parent.before($child); 11889 break; 11890 case 'after': 11891 $parent.after($child); 11892 break; 11893 default: 11894 // 'append' 11895 $parent.append($child); 11896 } 11897 }; 11898 var _close = function _close($alert) { 11899 $alert.trigger('alert.close'); 11900 if ($alert.hasClass('alert--slide')) { 11901 $alert.slideUp(TRANSITION_DURATION, 'swing', function () { 11902 $alert.trigger('alert.closed'); 11903 $alert.remove(); 11904 }); 11905 } else if ($alert.hasClass('alert--fade')) { 11906 $alert.fadeOut(TRANSITION_DURATION, 'linear', function () { 11907 $alert.trigger('alert.closed'); 11908 $alert.remove(); 11909 }); 11910 } else { 11911 $alert.trigger('alert.closed'); 11912 $alert.remove(); 11913 } 11914 }; 11915 $.alert = function (options) { 11916 // eslint-disable-line no-param-reassign 11917 if (typeof options === 'string') { 11918 // $.alert('string'); 11919 // create an alert with default settings. 11920 var contentString = options; 11921 options = { 11922 // eslint-disable-line no-param-reassign 11923 content: contentString 11924 }; 11925 } else if (options && typeof options.jquery === 'string') { 11926 // $.alert($('.content')); 11927 // a jQuery object was passed. Create an alert with default settings. 11928 options = { 11929 // eslint-disable-line no-param-reassign 11930 content: options.html() 11931 }; 11932 } 11933 // else we have this: $.alert({...}); 11934 11935 var settings = $.extend({}, $.alert.defaults, options); 11936 if (!Object.values(PLACEMENT).includes(settings.placement)) { 11937 // if the user didn't specify a placement, or specificed an invalid placement, fall back to the default value. 11938 settings.placement = $.alert.defaults.placement; 11939 } 11940 if (settings.placement === PLACEMENT.banner && (!settings.parentSelector || settings.parentSelector === DEFAULT_BANNER_PARENTSELECTOR)) { 11941 // if this is a banner with the default parent selector, switch to toast. Banner alerts are being decommissioned. 11942 // this should still allow banner alerts attached to the header of modals (quickshop). 11943 settings.placement = PLACEMENT.toast; 11944 settings.parentSelector = DEFAULT_TOAST_PARENTSELECTOR; 11945 } 11946 switch (settings.placement) { 11947 case PLACEMENT.banner: 11948 if (!settings.parentSelector) { 11949 settings.parentSelector = DEFAULT_BANNER_PARENTSELECTOR; 11950 } 11951 if (!settings.containerAttachment) { 11952 settings.containerAttachment = DEFAULT_BANNER_CONTAINERATTACHMENT; 11953 } 11954 if (!settings.containerId) { 11955 settings.containerId = DEFAULT_BANNER_CONTAINERID; 11956 } 11957 break; 11958 case PLACEMENT.inline: 11959 break; 11960 default: 11961 // PLACEMENT.toast 11962 if (!settings.parentSelector) { 11963 settings.parentSelector = DEFAULT_TOAST_PARENTSELECTOR; 11964 } 11965 // containerAttachment will default to DEFAULT_TOAST_CONTAINERATTACHMENT (append) 11966 if (!settings.containerId) { 11967 settings.containerId = DEFAULT_TOAST_CONTAINERID; 11968 } 11969 break; 11970 } 11971 11972 // Select default icon value if given value is not a string. Empty string will omit the icon. 11973 if (typeof settings.icon !== 'string') { 11974 settings.icon = DEFAULT_ICON[settings.theme]; 11975 } 11976 if (settings.autoClose) { 11977 if (settings.autoTiming) { 11978 var wordCount = $("<span>
11978".concat(settings.content, "</span>")).text().trim().split(/\s+/).length; 11979 var seconds = AUTOTIMING_BASE_SECONDS + wordCount / AUTOTIMING_WORDSPERSECOND; 11980 settings.timeToLive = Math.ceil(seconds) * 1000; 11981 } else { 11982 // make sure timeToLive is a number, not a string. 11983 settings.timeToLive = parseInt(settings.timeToLive, 10); 11984 } 11985 } 11986 if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) { 11987 // the user prefers reduced motion - don't slide or fade, just show/hide instantly 11988 settings.transition = ''; 11989 } 11990 if (settings.debug) { 11991 console.debug(settings); // eslint-disable-line no-console 11992 } 11993 11994 var TEMPLATE = { 11995 closeBtn: '<button type="button" class="alert__close-btn js-alert-close" aria-label="Close"><svg class="svgicon" aria-hidden="true"><use href="#close"></use></svg></button>', 11996 icon: "<svg class=\"svgicon alert__icon\" aria-hidden=\"true\"><use href=\"#".concat(settings.icon, "\"></use></svg>"), 11997 timeBar: '<div class="alert__timebar"></div>', 11998 bannerContainer: "<div id=\"".concat(settings.containerId, "\" class=\"alert__banner-container\"></div>"), 11999 toaster: "<div id=\"".concat(settings.containerId, "\" class=\"alert__toaster\"></div>") 12000 }; 12001 TEMPLATE.alert = "<div class=\"alert alert--".concat(settings.placement, " alert--").concat(settings.theme, " ").concat(settings.customClass, "\" role=\"alert\" aria-hidden=\"false\" aria-live=\"").concat(settings.placement === 'banner' ? 'assertive' : 'polite', "\">\n ").concat(settings.icon ? TEMPLATE.icon : '', "\n <div class=\"alert__content\">\n ").concat(settings.content, "\n </div>\n ").concat(settings.dismissible ? TEMPLATE.closeBtn : '', "\n </div>"); 12002 var $container; 12003 if (settings.placement === PLACEMENT.inline) { 12004 // for inline alerts, the container should already be on the page, and the parent is not used. 12005 $container = settings.containerId ? $('#' + settings.containerId) : $(settings.parentSelector); 12006 } else { 12007 $container = $('#' + settings.containerId); 12008 var $parent = $(settings.parentSelector); 12009 if (!$container.length) { 12010 // container doesn't exist. Select the corresponding container to be attached. 12011 $container = settings.placement === PLACEMENT.banner ? $(TEMPLATE.bannerContainer) : $(TEMPLATE.toaster); 12012 } 12013 // attach the container to the parent, or move it into position. (in some cases this does nothing, when the container is already in position) 12014 _attach($parent, $container, settings.containerAttachment); 12015 } 12016 12017 // BUILD THE ALERT COMPONENT 12018 var $alert = $(TEMPLATE.alert); 12019 if (settings.id) { 12020 $alert.attr('id', settings.id); 12021 } 12022 12023 // attach the alert to the container 12024 _attach($container, $alert, settings.attachment); 12025 12026 // show the alert (slide/fade/appear instantly) 12027 setTimeout(function () { 12028 $alert.trigger('alert.show'); 12029 }); 12030 if (settings.transition === 'slide') { 12031 $alert.addClass('alert--slide'); 12032 $alert.hide().slideDown(TRANSITION_DURATION, 'swing', function () { 12033 $alert.trigger('alert.shown'); 12034 }); 12035 } else if (settings.transition === 'fade') { 12036 $alert.addClass('alert--fade'); 12037 $alert.hide().fadeIn(TRANSITION_DURATION, 'linear', function () { 12038 $alert.trigger('alert.shown'); 12039 }); 12040 } else { 12041 $alert.trigger('alert.shown'); 12042 } 12043 $alert.close = function () { 12044 _close($alert); 12045 }; 12046 var autoCloseTimeout; 12047 if (settings.autoClose && settings.timeToLive) { 12048 if (settings.showTimeBar) { 12049 // if we have a timebar, use that for the timing of the closing. 12050 var $timebar = $(TEMPLATE.timeBar); 12051 $alert.append($timebar); 12052 $timebar.animate({ 12053 width: 0 12054 }, settings.timeToLive, 'linear', function () { 12055 _close($alert); 12056 }); 12057 } else { 12058 // ...else use a timeout. 12059 autoCloseTimeout = setTimeout(function () { 12060 _close($alert); 12061 }, settings.timeToLive); 12062 } 12063 } 12064 $alert.one('click', '.js-alert-close', function (e) { 12065 e.preventDefault(); 12066 clearTimeout(autoCloseTimeout); 12067 _close($alert); 12068 }); 12069 $alert.one('close', function (e) { 12070 e.preventDefault(); 12071 clearTimeout(autoCloseTimeout); 12072 _close($alert); 12073 }); 12074 return $alert; 12075 }; 12076 $.alert.defaults = { 12077 // eslint-disable-line no-param-reassign 12078 content: '', 12079 placement: PLACEMENT.toast, 12080 theme: 'danger', 12081 // CSS style: 'primary', 'success', 'info', 'warning', 'danger', 12082 icon: null, 12083 // specify a svg icon to override the theme's default icon 12084 dismissible: true, 12085 attachment: 'append', 12086 // 'append', 'prepend', 'before', 'after' 12087 transition: 'slide', 12088 // or 'fade' or empty string to instantly appear / disappear 12089 autoClose: true, 12090 autoTiming: false, 12091 // if true, sets timeToLive to 5s + 1s per 4 words in content. 12092 timeToLive: 7000, 12093 // ms before auto closing. (only applies if autoClose is true and autoTiming is false) 12094 id: null, 12095 // used by reservable products to select specific content. 12096 customClass: '', 12097 showTimeBar: false, 12098 // container parameters 12099 parentSelector: '', 12100 containerId: '', 12101 // only used for banners and toast 12102 containerAttachment: '', 12103 debug: false 12104 }; 12105 $.fn.alert = function (options) { 12106 // eslint-disable-line no-param-reassign 12107 var settings; 12108 var $alertCollection = $(); 12109 this.each(function () { 12110 if (typeof options === 'undefined') { 12111 // example: $('.content').alert(); 12112 // options is undefined, so `this` (selected element) will be the content. 12113 settings = { 12114 content: this.innerHTML 12115 }; 12116 } else if (options.jquery) { 12117 // example: $('.alert-container').alert($('.alert-content')); 12118 // options is a jQuery obejct which will be the content, and `this` will be the container/parent and placement will be 'inline'. 12119 var content = ''; 12120 options.each(function () { 12121 content += this.innerHTML; 12122 }); 12123 if (!content) { 12124 // no need to keep looping - they'll all have no content. 12125 return false; // break 12126 } 12127 12128 settings = { 12129 content: content, 12130 parentSelector: this, 12131 placement: PLACEMENT.inline 12132 }; 12133 } else if (_typeof(options) === 'object' && !options.content) { 12134 // example: $('.toast-content').alert({}); 12135 // options is object, but options.content is not defined so `this` will be the content and the placement will default to 'toast'. 12136 settings = $.extend({ 12137 content: this.innerHTML 12138 }, options); 12139 } else if (typeof options === 'string') { 12140 // example: $('.alert-container').alert('Hello world'); 12141 // `options` is a string so `this` will be the container/parent and placement will be 'inline'. 12142 settings = { 12143 content: options, 12144 parentSelector: this, 12145 placement: PLACEMENT.inline 12146 }; 12147 } else { 12148 // example: $('.alert-container').alert({ content: 'Hello world'}); 12149 // options.content is defined so `this` will be the container/parent and placement will be 'inline' 12150 settings = $.extend({ 12151 parentSelector: this, 12152 placement: PLACEMENT.inline 12153 }, options); 12154 } 12155 var $alert = $.alert(settings); 12156 $alertCollection = $alertCollection.add($alert); 12157 return true; // continue 12158 }); 12159 12160 $alertCollection.close = function () { 12161 $alertCollection.each(function () { 12162 _close($(this)); 12163 }); 12164 }; 12165 return $alertCollection; 12166 }; 12167})(jQuery); 12168 12169// click handler for close button on inline alert module (inlineAlert.isml) 12170$('body').on('click', '.js-alert-module-close', function () { 12171 var $alert = $(this).closest('.alert'); 12172 $alert.trigger('alert.close'); 12173 $alert.slideUp(null, null, function () { 12174 $alert.trigger('alert.closed'); 12175 }); 12176}); 12177 12178// support for old BS alerts 12179$('body').on('click', '[data-dismiss=alert]', function () { 12180 var $alert = $(this).closest('.alert'); 12181 $alert.trigger('alert.close').trigger('close.bs.alert'); 12182 $alert.slideUp(null, null, function () { 12183 $alert.trigger('alert.closed').trigger('closed.bs.alert'); 12184 $alert.remove(); 12185 }); 12186}); 12187 12188/***/ }), 12189
12190/***/ "./.tmp/app_col_eu_core/js/thirdParty/jquery.circularProgressIndicator/jquery.circularProgressIndicator.js": 12191/*!*****************************************************************************************************************!*\ 12192 !*** ./.tmp/app_col_eu_core/js/thirdParty/jquery.circularProgressIndicator/jquery.circularProgressIndicator.js ***! 12193 \*****************************************************************************************************************/ 12194/*! no static exports found */ 12195/***/ (function(module, exports, __webpack_require__) { 12196 12197"use strict"; 12198/* eslint-disable no-shadow */ 12199/* eslint-disable no-underscore-dangle */ 12200/* eslint-disable no-param-reassign */ 12201 12202 12203(function ($) { 12204 /** 12205 * circularProgressIndicator - a jQuery plugin to display a visual indicator 12206 * 12207 * Structure of the markup: 12208 * 12209 * @param {Object} options JSON object containing optional settings. 12210 * @return {Object} jQuery object of the selected element. 12211 */ 12212 $.fn.progressArc = function (options) { 12213 var defaults = { 12214 lineWidth: 2, 12215 progress: 0.33, 12216 color: '#007AB8', 12217 // defaults to $brand-compass-blue 12218 background: '#ddd', 12219 duration: 2000, 12220 // animation duration. 0 for instant. 12221 ease: 'easeInOut', 12222 indeterminate: false 12223 }; 12224 12225 // Converts Degrees of Angle to Radians 12226 var _degToRad = function _degToRad(deg) { 12227 return deg * Math.PI / 180; 12228 }; 12229 12230 // Draws the initial arc, which will act as the background progress bar 12231 var _drawArcPath = function _drawArcPath(ctx, settings) { 12232 ctx.beginPath(); 12233 ctx.lineWidth = settings.lineWidth * 2; 12234 ctx.strokeStyle = settings.background; 12235 ctx.arc(settings.center.x, settings.center.y, settings.radius, 0, 2 * Math.PI); 12236 ctx.stroke(); 12237 }; 12238 12239 // This function will draw the progress bar foreground 12240 var _drawArc = function _drawArc(ctx, progress, settings) { 12241 var orientation = _degToRad(-90); 12242 var startAngle = orientation; 12243 var endAngle = 2 * Math.PI * progress + orientation; 12244 var color = settings.color; 12245 ctx.beginPath(); 12246 ctx.lineWidth = settings.lineWidth * 2; 12247 ctx.strokeStyle = color; 12248 ctx.arc(settings.center.x, settings.center.y, settings.radius, startAngle, endAngle); 12249 ctx.stroke(); 12250 }; 12251 var _clamp = function _clamp(x, min, max) { 12252 return Math.max(Math.min(x, max), min); 12253 }; 12254 var _ease = function _ease(func, start, current, duration) { 12255 // ease formulas from https://easings.net/ 12256 var x = _clamp((current - start) / duration, 0, 1); 12257 switch (func) { 12258 case 'easeIn': 12259 return Math.pow(x, 4); 12260 case 'easeOut': 12261 return 1 - Math.pow(1 - x, 4); 12262 case 'easeInOut': 12263 if (x < 0.5) { 12264 return 8 * Math.pow(x, 4); 12265 } 12266 return 1 - 8 * Math.pow(x - 1, 4); 12267 case 'linear': 12268 default: 12269 return x; 12270 } 12271 }; 12272 var _renderFrame = function _renderFrame(ctx, startTimeStamp, settings) { 12273 var currentTimeStamp = performance.now(); 12274 if (!startTimeStamp) { 12275 startTimeStamp = currentTimeStamp; 12276 } 12277 var startProgress = ctx.startProgress || 0; 12278 var previousProgress = ctx.previousProgress || 0; 12279 var ease = _ease(settings.ease, startTimeStamp, currentTimeStamp, settings.duration); 12280 var step = ease * (settings.progress - startProgress) + startProgress; 12281 ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); 12282 _drawArcPath(ctx, settings); 12283 _drawArc(ctx, step, settings); 12284 12285 // if (step < settings.progress) { 12286 var percentDelta = Math.abs(step - previousProgress); 12287 if (ease > 0.999 || ease > 0.5 && percentDelta < 0.00001) { 12288 // ease out is imperceptible 12289 ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); 12290 _drawArcPath(ctx, settings); 12291 _drawArc(ctx, settings.progress, settings); 12292 ctx.isAnimating = false; 12293 cancelAnimationFrame(ctx.frameId); 12294 ctx.startProgress = step; 12295 } else { 12296 ctx.frameId = requestAnimationFrame(function () { 12297 _renderFrame(ctx, startTimeStamp, settings); 12298 }); 12299 } 12300 ctx.previousProgress = step; 12301 }; 12302 12303 // If indeterminate value is set to true, by data-attr or js, this will render a spinner animation for the circular progress indicator. 12304 var _renderSpinner = function _renderSpinner(ctx, startTimeStamp, settings) { 12305 var currentTimeStamp = performance.now(); 12306 if (!startTimeStamp) { 12307 startTimeStamp = currentTimeStamp; 12308 } 12309 var ease = _clamp((currentTimeStamp - startTimeStamp) / settings.duration, 0, 2); 12310 if (ease === 2) { 12311 ease = 0; 12312 startTimeStamp = currentTimeStamp; 12313 } 12314 var _drawArc2 = function _drawArc2(progress) { 12315 var startAngle = Math.PI * progress; 12316 var endAngle = 2 * Math.PI * progress + startAngle; 12317 var color = settings.color; 12318 ctx.beginPath(); 12319 ctx.lineWidth = settings.lineWidth * 2; 12320 ctx.strokeStyle = color; 12321 if (progress > 1) { 12322 ctx.arc(settings.center.x, settings.center.y, settings.radius, endAngle, startAngle); 12323 } else { 12324 ctx.arc(settings.center.x, settings.center.y, settings.radius, startAngle, endAngle); 12325 } 12326 ctx.stroke(); 12327 }; 12328 ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); 12329 _drawArcPath(ctx, settings); 12330 _drawArc2(ease); 12331 ctx.frameId = requestAnimationFrame(function () { 12332 _renderSpinner(ctx, startTimeStamp, settings); 12333 }); 12334 }; 12335 return $(this).each(function () { 12336 // grab the .progress element, and add progress indicator bar element and progress text element 12337 var $progress = $(this); 12338 var $progressWidth = $progress.innerWidth() * 2; 12339 var $progressHeight = $progress.innerHeight() * 2; 12340 var $progressCanvas = $("<canvas class=\"progress__canvas\" width=\"".concat($progressWidth, "\" height=\"").concat($progressHeight, "\"></canvas>")); 12341 var $progressText = $('<span class="progress__text"></span>'); 12342 if ($progress.find('.progress__canvas').length) { 12343 // check if progress indicator has a canvas already to avoid duplication 12344 return this; 12345 } 12346 $progress.append($progressCanvas); 12347 $progress.append($progressText); 12348 defaults.radius = Math.round($progressWidth / 2 - defaults.lineWidth * 2); // radius is half the canvas width minus lineWidth 12349 12350 // get the canvas element, return drawing context of 2d 12351 var ctx = $progressCanvas[0].getContext('2d'); 12352 var settings = $.extend({}, defaults, $progress.data(), options); // take obj arguments from defaults and options (if applicable) to create one object 12353 settings.center = { 12354 // find the center based on canvas width/height 12355 x: ctx.canvas.width / 2, 12356 y: ctx.canvas.height / 2 12357 }; 12358 ctx.frameId = requestAnimationFrame(function () { 12359 ctx.isAnimating = true; 12360 if (settings.indeterminate) { 12361 _renderSpinner(ctx, null, settings); 12362 } else { 12363 _renderFrame(ctx, null, settings); 12364 } 12365 }); 12366 var displayValue = Math.round(settings.progress * 100); // round to nearest whole number 12367 $progressText.text(displayValue + '%'); 12368 12369 // If there are custom values, this will update defaults 12370 this.updateProgress = function (options) { 12371 cancelAnimationFrame(ctx.frameId); 12372 var newSettings = $.extend({}, settings, options); 12373 ctx.startProgress = ctx.previousProgress || 0; 12374 ctx.isAnimating = true; 12375 ctx.frameId = requestAnimationFrame(function () { 12376 if (newSettings.indeterminate) { 12377 _renderSpinner(ctx, null, newSettings); 12378 } else { 12379 _renderFrame(ctx, null, newSettings); 12380 } 12381 }); 12382 var displayValue = Math.round(newSettings.progress * 100); // round to nearest whole number 12383 $progressText.text(displayValue + '%'); 12384 }; 12385 return this; 12386 }); 12387 }; 12388})(jQuery); 12389 12390/***/ }), 12391
12392/***/ "./.tmp/app_col_eu_core/js/thirdParty/jquery.cschotspots/jquery.cschotspots.js": 12393/*!*************************************************************************************!*\ 12394 !*** ./.tmp/app_col_eu_core/js/thirdParty/jquery.cschotspots/jquery.cschotspots.js ***! 12395 \*************************************************************************************/ 12396/*! no static exports found */ 12397/***/ (function(module, exports) { 12398 12399(function ($) { 12400 /** 12401 * adaLabel: The hidden text that is applied to each hot spot for ADA compliance. 12402 * enableTooltipsAt: The window size at which to switch over to tooltips instead of toasters. This must align with the CSS for the tooltips. 12403 * hotSpots: An array of hot spot objects to be created. 12404 * iconName: If icons are displayed on the hot spots (marker: 'icon'), this is the name of the SVG that will be applied. Default value is 'add'. 12405 * marker: The style of hot spots: 'none' for blank circle, 'icon' to insert an icon, 'number' to insert a number. 12406 * onInit: A callback function that is called after the hot spots is initialized. 12407 * toasterPosition: The attachment of the toasters: 'top' or 'bottom'. 12408 * tooltipPosition: The default position of the tooltips: 'right', 'left', 'top', or 'bottom'. 12409 * tooltipSize: The width of the tooltip: 'sm', 'md', 'lg'. These sizes can be adjusted in CSS. 12410 * addPadding: Boolean. Set to false to remove padding from the tooltip. Defaults to true which applies 0.5rem padding. 12411 * showCloseOnTooltips: Boolean. Set to true to display the close button on the tooltips. Defaults to false. 12412 * triggerEvent: The event that should trigger the content for tooltips. 12413 * 12414 * @param {Object} options The selected jQuery object(s), with functions attached. 12415 * @return {Object} The jQuery collection 12416 */ 12417 $.fn.cscHotSpots = function (options) { 12418 // eslint-disable-line no-param-reassign 12419 var resizeTimeoutId; 12420 var prevBehavior; 12421 var BEHAVIOR = { 12422 TOASTER: 'toaster', 12423 TOOLTIP: 'tooltip' 12424 }; 12425 var MARKER_TYPE = { 12426 ICON: 'icon', 12427 NUMBER: 'number', 12428 NONE: 'none' 12429 }; 12430 var defaults = { 12431 adaLabel: 'Hot Spot', 12432 enableTooltipsAt: 576, 12433 hotSpots: [], 12434 iconName: 'add', 12435 marker: MARKER_TYPE.ICON, 12436 onInit: function onInit() {}, 12437 toasterPosition: 'top', 12438 tooltipPosition: 'right', 12439 tooltipSize: 'md', 12440 addPadding: true, 12441 showCloseOnTooltips: false, 12442 triggerEvent: 'click' 12443 }; 12444 var settings = $.extend({}, defaults, options); 12445 12446 /** 12447 * Simple check to determine if we're behaving as a toaster. Otherwise we're behaving as a tooltip. 12448 * @return {boolean} True for toaster, false for tooltip. 12449 */ 12450 var isToaster = function isToaster() { 12451 return prevBehavior === BEHAVIOR.TOASTER; 12452 }; 12453 12454 /** 12455 * Positions each content wrapper within the hotspots container, based on the current behavior and classes. 12456 * @param {Object} $hsContainer the hotspots container in which the content wrappers will be positioned. 12457 */ 12458 var positionContentWrapper = function positionContentWrapper($hsContainer) { 12459 var isTooltips = !isToaster(); 12460 12461 // set a class on the container to be used to style the content wrappers. 12462 if (isTooltips) { 12463 $hsContainer.addClass('hotSpots--tooltips').removeClass('hotSpots--toasters'); 12464 } else { 12465 $hsContainer.addClass('hotSpots--toasters').removeClass('hotSpots--tooltips'); 12466 } 12467 $hsContainer.find('.hotSpot__content-wrapper').each(function () { 12468 var $wrapper = $(this); 12469 if (isTooltips) { 12470 // position wrapper as tooltips. 12471 var index = $wrapper.data('target'); 12472 var $hotSpot = $hsContainer.find('.hotSpot.hs' + index); 12473 12474 // the following variables are used to calculate the wrapper position. 12475 var hsPos = $hotSpot.position(); 12476 var hsRadius = $hotSpot.outerWidth() / 2; 12477 12478 // position the wrapper relative to the hot spot 12479 $wrapper.css({ 12480 top: hsPos.top, 12481 left: hsPos.left 12482 }); 12483 if ($wrapper.hasClass('hotSpot__content-wrapper--top')) { 12484 // we can't use calc() within a translate() in IE11, so have to use margin to nudge the tooltip into place. 12485 $wrapper.css({ 12486 transform: 'translate(-50%, -100%)', 12487 'margin-left': hsRadius 12488 }); 12489 } else if ($wrapper.hasClass('hotSpot__content-wrapper--bottom')) { 12490 $wrapper.css({ 12491 transform: 'translate(-50%, ' + hsRadius * 2 + 'px)', 12492 'margin-left': hsRadius 12493 }); 12494 } else if ($wrapper.hasClass('hotSpot__content-wrapper--left')) { 12495 $wrapper.css({ 12496 transform: 'translate(-100%, -50%)', 12497 'margin-top': hsRadius 12498 }); 12499 } else { 12500 // default to .hotSpot__content-wrapper--right 12501 $wrapper.css({ 12502 transform: 'translate(' + hsRadius * 2 + 'px, -50%)', 12503 'margin-top': hsRadius 12504 }); 12505 } 12506 } else { 12507 // isToaster 12508 // clear out any CSS properties set by JS above 12509 $wrapper.css({ 12510 top: '', 12511 left: '', 12512 'margin-left': '', 12513 'margin-top': '', 12514 transform: 'none' 12515 }); 12516 } 12517 }); 12518 }; 12519 return this.each(function () { 12520 var $hsContainer = $(this); 12521 // make sure that we have a container into which we can place our spots 12522 if ($hsContainer.prop('tagName').toLowerCase() === 'img') { 12523 // this is the image. wrap it in a div 12524 $hsContainer.removeClass('hotSpots').wrap('<div></div>'); 12525 // now redefine what 'this' is. 12526 $hsContainer = $hsContainer.parent(); 12527 } 12528 12529 /** 12530 * Creates a spot from the passed in data, including all the HTML for the spot the content wrapper, and positions the spot and content wrapper. 12531 * @param {Object} spotData The data object describing the hot spot. See defaults for options. 12532 * @param {int} index The spot index. Used to create matching class names between the spot and content wrapper. Must be unique across all hot spots. 12533 */ 12534 $hsContainer.addSpot = function (spotData, index) { 12535 /** 12536 * x: The hot spot x position. 12537 * y: The hot spot y position. 12538 * contentSelector: The selector to the content that goes inside the toaster/tooltip. 12539 * 12540 * These settings can be set per hot spot. Otherwise they'll inherit the collection settings. 12541 * adaLabel: Hidden text that describes the hot spot, for screen readers. 12542 * iconName: The name of the svg to apply an icon to the hot spot. 12543 * toasterPosition: The position of the content wrapper in relation to the image. Only applies when the screen size is less than settings.enableTooltipsAt. 12544 * tooltipPosition: The position of the content wrapper in relation to the hot spot. Only applies when the screen size is greater than or equal to settings.enableTooltipsAt. 12545 * tooltipSize: The width of the tooltip: 'sm', 'md', 'lg'. The
12545se sizes can be adjusted in CSS. 12546 * addPadding: Boolean. Set to false to remove padding from the tooltip. 12547 * showCloseOnTooltip: Boolean. Set to true to display the close button on the tooltip. 12548 */ 12549 var localDefaults = { 12550 x: '50%', 12551 y: '50%', 12552 contentSelector: '', 12553 adaLabel: settings.adaLabel, 12554 iconName: settings.iconName, 12555 toasterPosition: settings.toasterPosition, 12556 tooltipPosition: settings.tooltipPosition, 12557 tooltipSize: settings.tooltipSize, 12558 addPadding: settings.addPadding, 12559 showCloseOnTooltip: settings.showCloseOnTooltips 12560 }; 12561 var hsSettings = $.extend({}, localDefaults, spotData); // settings for this particular spot, not the component settings. 12562 12563 // create content wrapper 12564 var $hotSpotContentWrapper = $('<div></div>'); 12565 $hotSpotContentWrapper.addClass('hotSpot__content-wrapper'); 12566 $hotSpotContentWrapper.addClass('hotSpot__content-wrapper--' + hsSettings.tooltipPosition); 12567 $hotSpotContentWrapper.addClass('hotSpot__content-wrapper--' + hsSettings.tooltipSize); 12568 if (hsSettings.addPadding) { 12569 $hotSpotContentWrapper.addClass('hotSpot__content-wrapper--padded'); 12570 } 12571 if (hsSettings.showCloseOnTooltip) { 12572 // the close button is always added because we need it for closing toasters, 12573 // but this class will allow us to show or hide the button on the tooltip. 12574 $hotSpotContentWrapper.addClass('hotSpot__content-wrapper--withClose'); 12575 } 12576 $hotSpotContentWrapper.addClass('hotSpot__content-wrapper--toaster-' + hsSettings.toasterPosition); 12577 $hotSpotContentWrapper.addClass('hs' + index); // for selecting this content wrapper, given a hotspot. 12578 $hotSpotContentWrapper.data('target', index); // for selecting hotspots from this content wrapper. 12579 12580 // move the content into the content wrapper. 12581 var $content = $(hsSettings.contentSelector); 12582 $content.addClass('hotSpot__content'); 12583 $hotSpotContentWrapper.html($content); 12584 12585 // append close button 12586 var $closeBtn = $('<div></div>').addClass('hotSpot__closeBtn'); 12587 $hotSpotContentWrapper.find('.hotSpot__content').append($closeBtn); 12588 12589 // create hot spot 12590 var $hotSpot = $('<div></div>').addClass('hotSpot').attr('tabindex', '0'); 12591 $hotSpot.addClass('hs' + index); // for selecting this hotspot, given a content wrapper. 12592 $hotSpot.data('target', index); // for selecting a content wrapper from this hotspot. 12593 $hotSpot.css({ 12594 top: hsSettings.y, 12595 left: hsSettings.x 12596 }); 12597 var $srOnly = '<span class="sr-only">' + hsSettings.adaLabel + '</span>'; 12598 $hotSpot.append($srOnly); 12599 12600 // set the marker on the hot spot 12601 if (settings.marker === MARKER_TYPE.NUMBER) { 12602 var $marker = $('<span class="hotSpot__marker-number">' + (index + 1) + '</span>'); 12603 $hotSpot.append($marker); 12604 } else if (settings.marker === MARKER_TYPE.ICON) { 12605 var $svg = $("<svg width='24' height='24'><use href='".concat('#' + hsSettings.iconName, "'></use></svg>")); 12606 $hotSpot.append($svg); 12607 } 12608 // else if (settings.marker === MARKER_TYPE.NONE) // don't need to do anything. 12609 12610 // attach the spot and content wrapper to the container. 12611 this.append($hotSpot); 12612 this.append($hotSpotContentWrapper); 12613 }; 12614 12615 /** 12616 * (re)register click/hover events 12617 * @return {undefined} 12618 */ 12619 $hsContainer.registerEvents = function () { 12620 $hsContainer.off('click mouseenter mouseleave focus blur'); // unbind events so we can re-bind. 12621 if (settings.triggerEvent === 'click' || isToaster()) { 12622 // toasters only get the click event handler. 12623 var toggleClickedSpot = function toggleClickedSpot(spot) { 12624 var $clickedSpot = $(spot); 12625 if ($clickedSpot.hasClass('active')) { 12626 $hsContainer.closeAll(); 12627 } else { 12628 var index = $clickedSpot.data('target'); 12629 var $wrapper = $hsContainer.find('.hotSpot__content-wrapper.hs' + index); 12630 $hsContainer.closeAll(); 12631 $clickedSpot.addClass('active'); 12632 $wrapper.addClass('active'); 12633 } 12634 }; 12635 $hsContainer.on('click', '.hotSpot', function (e) { 12636 e.preventDefault(); 12637 toggleClickedSpot(this); 12638 }); 12639 $hsContainer.on('keydown', '.hotSpot:focus', function (e) { 12640 if (e.key === 'Enter') { 12641 toggleClickedSpot(this); 12642 } 12643 }); 12644 } else { 12645 var mouseleaveTimeoutId; 12646 $hsContainer.on('mouseenter focus', '.hotSpot', function () { 12647 clearTimeout(mouseleaveTimeoutId); 12648 $hsContainer.closeAll(); 12649 var $hoveredSpot = $(this); 12650 var index = $hoveredSpot.data('target'); 12651 var $wrapper = $hsContainer.find('.hotSpot__content-wrapper.hs' + index); 12652 $hoveredSpot.addClass('active'); 12653 $wrapper.addClass('active'); 12654 }); 12655 $hsContainer.on('mouseenter focus', '.hotSpot__content-wrapper', function () { 12656 clearTimeout(mouseleaveTimeoutId); 12657 }); 12658 $hsContainer.on('mouseleave blur', '.hotSpot, .hotSpot__content-wrapper', function () { 12659 var index = $(this).data('target'); 12660 mouseleaveTimeoutId = setTimeout(function () { 12661 $hsContainer.find('.hs' + index).removeClass('active'); 12662 }, 100); 12663 }); 12664 } 12665 $hsContainer.on('click', '.hotSpot__closeBtn', function (e) { 12666 e.preventDefault(); 12667 $hsContainer.closeAll(); 12668 }); 12669 }; 12670 12671 /** 12672 * Remove the active class from all hot spots and content wrappers, thus closing them. 12673 * @return {undefined} 12674 */ 12675 $hsContainer.closeAll = function () { 12676 this.find('.active').removeClass('active'); 12677 }; 12678 12679 /** 12680 * initialize the hot spots component. 12681 * @return {Object} this jquery object. 12682 */ 12683 $hsContainer.init = function () { 12684 $hsContainer.addClass('hotSpots'); 12685 $hsContainer.children('img:first').addClass('hotSpots__image'); 12686 if (settings.hotSpots.length) { 12687 $hsContainer.addSpots(settings.hotSpots); 12688 } 12689 12690 // call the callback 12691 settings.onInit.call($hsContainer); 12692 return $hsContainer; 12693 }; 12694 12695 /** 12696 * Handler for the onResize listener. 12697 * @return {undefined} 12698 */ 12699 var onResize = function onResize() { 12700 $hsContainer.closeAll();
12701 // determin if we're above or below the window size in which we switch from toasters to tooltips. 12702 var windowWidth = window.innerWidth; 12703 var behavior = windowWidth < settings.enableTooltipsAt ? BEHAVIOR.TOASTER : BEHAVIOR.TOOLTIP; 12704 // check if we've changed behaviors. 12705 if (behavior !== prevBehavior) { 12706 prevBehavior = behavior; 12707 $hsContainer.registerEvents(); 12708 } 12709 positionContentWrapper($hsContainer); 12710 }; 12711 12712 /** 12713 * Adds a spot for each item in the given array. 12714 * @param {array} spots Array of hotspots. 12715 */ 12716 $hsContainer.addSpots = function (spots) { 12717 for (var i = 0; i < spots.length; i++) { 12718 $hsContainer.addSpot(spots[i], i); 12719 } 12720 settings.hotSpots = spots; 12721 setTimeout(onResize, 0); // this will call onResize after the spots have been added to the container. 12722 }; 12723 12724 /** 12725 * Register a resize listener to re-position content when the window is resized. 12726 * @return {undefined} 12727 */ 12728 $(window).on('resize.hotspots', function () { 12729 clearTimeout(resizeTimeoutId); 12730 resizeTimeoutId = setTimeout(onResize, 250); 12731 }); 12732 $hsContainer.init(); 12733 return this; 12734 }); 12735 }; 12736})(jQuery); 12737 12738/***/ }), 12739
12740/***/ "./.tmp/app_col_eu_core/js/thirdParty/jquery.cscutils/jquery.cscutils.js": 12741/*!*******************************************************************************!*\ 12742 !*** ./.tmp/app_col_eu_core/js/thirdParty/jquery.cscutils/jquery.cscutils.js ***! 12743 \*******************************************************************************/ 12744/*! no static exports found */ 12745/***/ (function(module, exports, __webpack_require__) { 12746 12747function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 12748var utils = __webpack_require__(/*! ../../components/utils */ "./.tmp/app_col_eu_core/js/components/utils.js"); 12749var debounce = __webpack_require__(/*! lodash/debounce */ "./node_modules/lodash/debounce.js"); 12750var breakpoints = __webpack_require__(/*! ../../components/breakpoints */ "./.tmp/app_col_eu_core/js/components/breakpoints.js"); 12751 12752/** 12753 * Detects when an element loses focus and fires a callback function 12754 * @param {*} callback function to be called after losing focus 12755 * @param {string} selector set selector(s) to filter the descendants of $(docuemnt) that trigger the event 12756 * @return {jQuery} the jQuery element passed through 12757 */ 12758$.fn.loseFocus = function (callback) { 12759 var selector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '*'; 12760 var $self = this; 12761 $(document).on('focus.loseFocus click.loseFocus', selector, function (e) { 12762 if (!$.contains($self[0], e.target)) { 12763 // focus has been lost, remove event listener 12764 $(document).off('.loseFocus'); 12765 // fire supplied callback function 12766 callback(); 12767 } 12768 }); 12769 return this; 12770}; 12771 12772/** 12773 * Remove any invalid characters, as defined in the regular expression, upon leaving the input field. 12774 * @param {regex} invalidsRegex Regular Expression or regex string. If omitted, will use the string in the data-invalids attribute. 12775 * @param {string} replacement A string to replace the removed characters. Defaults to empty string. 12776 * @returns {jQuery} jQuery collection that was passed in, with focusout event listeners attached to each field in the collection. 12777 * @example 12778 * <input type="text" id="noVowels" data-invalids="aeiou" /> 12779 * $('#noVowels').stripInvalidChars(); // invalid chars are found in data attribute and converted into a regex 12780 * @example 12781 * $('.digitsOnly').stripInvalidChars(/[^\d]/g); // regex is passed as an arg 12782 */ 12783$.fn.stripInvalidChars = function (invalidsRegex) { 12784 var replacement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; 12785 this.each(function () { 12786 var $field = $(this); 12787 if (!invalidsRegex) { 12788 // look for a string of invalid characters in a data attribute 12789 var invalidsString = $field.data('invalids'); 12790 if (invalidsString) { 12791 invalidsRegex = new RegExp("[".concat(invalidsString, "]"), 'g'); // eslint-disable-line no-param-reassign 12792 } 12793 } 12794 12795 if (!invalidsRegex) return; 12796 $field.on('focusout.stripInvalids', function () { 12797 // focusout will trigger before blur, so the field will get updated before validated by clientSideValidation(). 12798 var val = $field.val(); 12799 val = val.replace(invalidsRegex, replacement); 12800 $field.val(val); 12801 }); 12802 }); 12803 return this; 12804}; 12805 12806/** 12807 * Tests if an element is viewable within the viewport. 12808 * @example 12809 * if ($('#placeholder').isInViewPort(true, true)) { 12810 * // at least a part of this thing is within the viewport, but only tested vertically 12811 * } 12812 * @param {boolean} partial set to true to test if any part of the element is within the viewport. Otherwise tests if the entire element is visible within the viewport. 12813 * @param {boolean} onlyTestVertically set to true to only test vertically. If omitted, it will test both vertically and horizontally. 12814 * @return {boolean} true if any part of the element is in the viewport. false if the element is off the screen or not displayed. 12815 */ 12816$.fn.isInViewport = function (partial, onlyTestVertically) { 12817 if (!$(this).length) { 12818 return false;
12819 } 12820 var offset = $(this).offset(); 12821 var element = { 12822 top: offset.top, 12823 bottom: offset.top + $(this).outerHeight(), 12824 left: offset.left, 12825 right: offset.left + $(this).outerWidth() 12826 }; 12827 var viewportTop = $(window).scrollTop(); 12828 var viewportBottom = viewportTop + $(window).height(); 12829 var viewportLeft = $(window).scrollLeft(); 12830 var viewportRight = viewportLeft + $(window).width(); 12831 if (onlyTestVertically) { 12832 if (partial) { 12833 return element.bottom > viewportTop && element.top < viewportBottom; 12834 } 12835 return element.top >= viewportTop && element.bottom <= viewportBottom; 12836 } 12837 if (partial) { 12838 return element.bottom > viewportTop && element.top < viewportBottom && element.right > viewportLeft && element.left < viewportRight; 12839 } 12840 return element.top >= viewportTop && element.bottom <= viewportBottom && element.left >= viewportLeft && element.right <= viewportRight; 12841}; 12842 12843/** 12844 * Scrolls the document to the selected element. 12845 * @example 12846 * // scroll the #next_section to the top of the page, accounting for the height of the header, over 750ms. 12847 * var offset = $('.siteheader').outerHeight() + 10; 12848 * $('#next_section').scrollTo(offset, 750); 12849 * @param {number} offset The number of pixels down from the top of the screen to offset the selected element. 12850 * @param {number} duration The duration of the scroll animation in miliseconds. 12851 * @return {jQuery} The jQuery collection passed through. 12852 */ 12853$.fn.scrollTo = function (offset, duration) { 12854 var settings = { 12855 offset: offset || 0, 12856 duration: duration || 1000 12857 }; 12858 return this.each(function () { 12859 var position = $(this).offset(); 12860 $('body, html').stop().animate({ 12861 scrollTop: position.top - settings.offset 12862 }, settings.duration); 12863 return this; 12864 }); 12865}; 12866 12867/** 12868 * 12869 * @param {Date} desiredTimestamp A UTC timestamp (in ms), this timestamp represents the UTC time in which a callback function should be executed 12870 * @param {*} callback The callback function to be executed 12871 */ 12872$.fireCallbackAfterTimePassed = function (desiredTimestamp, callback) { 12873 var currentTimestamp = new Date().getTime(); 12874 var timeout = desiredTimestamp - currentTimestamp + 1000; // calculate the time in ms which the setTimeout function should be called add a 1 second buffer 12875 var SETTIMEOUT_MAX = Math.pow(2, 31) - 1; // max 32 bit integer value 12876 12877 if (currentTimestamp <= desiredTimestamp && timeout < SETTIMEOUT_MAX) { 12878 setTimeout(callback, timeout); 12879 } 12880}; 12881 12882/** 12883 * Extends jQuery .slideUp and .slideDown functions to remove d-none before trying to slideDown. 12884 * @param {string} display Whether to 'show' or 'hide' the content. Undefined will toggle the display. 12885 * @param {(string|number)} duration A string or number determining how long the animation will run. 12886 * @return {jQuery} The jQuery collection passed through. 12887 */ 12888$.fn.slide = function (display, duration) { 12889 return this.each(function () { 12890 var $el = $(this); 12891 display = display || ($el.is(':visible') ? 'hide' : 'show'); // eslint-disable-line no-param-reassign 12892 if (display === 'show') { 12893 if ($el.hasClass('d-none')) { 12894 $el.removeClass('d-none').hide().stop().slideDown(duration); 12895 } else { 12896 $el.stop().slideDown(duration); 12897 } 12898 } else if (display === 'hide') { 12899 $el.stop().slideUp(duration); 12900 } 12901 return this; 12902 }); 12903}; 12904 12905/** 12906 * jQuery Plugin to launch a Bootstrap modal with the given content. 12907 * Example 1: 12908 * $.modal('Thanks for signing up!'); 12909 * Example 2: 12910 * $.modal({ 12911 * title: 'Warning!', 12912 * content: 'This computer will self-destruct in 5...', 12913 * modalSizeClass: 'modal-sm' 12914 * }); 12915 * Bootstrap Modal documentation: https://getbootstrap.com/docs/4.0/components/modal/ 12916 * Also see createModalMarkup() in utils.js 12917 * 12918 * @param {string/object} options The content to put in the modal or an object with content and options. 12919 * @returns {jquery} The created modal jQuery object. 12920 */ 12921$.modal = function (options) { 12922 var content = ''; 12923 if (typeof options === 'string') { 12924 content = options; 12925 options = {}; // eslint-disable-line no-param-reassign 12926 } else if (_typeof(options) === 'object') { 12927 content = options.content || ''; 12928 delete options.content; // eslint-disable-line no-param-reassign 12929 } 12930 12931 var defaults = { 12932 title: '',
12933 modalSizeClass: 'modal-sm' 12934 }; 12935 var settings = $.extend({}, defaults, options); 12936 var html = utils.createModalMarkup(content, settings); 12937 var $modal = $(html).modal(); 12938 if (options.destroyOnClose) { 12939 $modal.one('hidden.bs.modal', function () { 12940 $modal.remove(); 12941 }); 12942 } 12943 if (options.dataAttrs) { 12944 Object.keys(options.dataAttrs).forEach(function (dataAttrKey) { 12945 $modal.data(dataAttrKey, options.dataAttrs[dataAttrKey]); 12946 }); 12947 } 12948 return $modal; 12949}; 12950 12951/** 12952 * Enable and Disable Scroll Plugins 12953 */ 12954$(function () { 12955 var $html = $('html'); 12956 var $globalBanner = $('.globalbanner'); 12957 12958 /** 12959 * Removes .no-scroll class and unsets padding offset 12960 */ 12961 $.enableScroll = function () { 12962 // only enable scrolling if menu is not active 12963 if (!$html.hasClass('menu-active')) { 12964 $html.removeClass('no-scroll').css('padding-right', ''); 12965 $globalBanner.css({ 12966 right: '', 12967 'padding-right': '' 12968 }); 12969 } 12970 }; 12971 12972 /** 12973 * Adds .no-scroll class and offsets scrollbar 12974 */ 12975 $.disableScroll = function () { 12976 // executing $.disableScroll() multiple times without 12977 // running $.enableScroll() will cause the page to shift 12978 if ($html.hasClass('no-scroll')) return; 12979 var scrollbarWidth = window.innerWidth - document.documentElement.clientWidth; 12980 $html.addClass('no-scroll').css('padding-right', scrollbarWidth); 12981 $globalBanner.css({ 12982 right: scrollbarWidth, 12983 'padding-right': scrollbarWidth 12984 }); 12985 }; 12986}); 12987 12988// prevent the page from scrolling whenever ANY modal is shown. 12989$(window).on('show.bs.modal, show.drawer', function () { 12990 $.disableScroll(); 12991}).on('hidden.bs.modal, hidden.drawer', function () { 12992 if (!$('.drawer.show').length && !$('.modal.show').length) { 12993 // only enable scroll if no other modal or drawers are active on page 12994 $.enableScroll(); 12995 } 12996}); 12997 12998// trigger an event when the window changes breakpoint sizes 12999var $breakpoints = $('.bootstrap-breakpoints div'); // defined in /components/bootstrap/breakpoints.isml 13000var previousBp; 13001 13002/** 13003 * resizeHandler is called after the window has finished being resized and triggers 13004 * the "breakpoint:changed" event only when we resize from one breakpoint size into another. 13005 * The event passes the previous and new breakpoint name. 13006 * @example usage: 13007 * $(window).on('breakpoint:changed', function (e, data) { 13008 * console.log(`We resized from ${data.previousBp} to ${data.currentBp}.`); 13009 * console.log(`${data.currentBp} is a ${ 13010 * ['lg', 'xl'].includes(data.currentBp) ? 'desktop' : 'mobile' 13011 * } breakpoint.`); 13012 * }); 13013 * // example output: 13014 * // > 'We resized from md to lg.' 13015 * // > 'lg is a desktop breakpoint.' 13016 */ 13017function resizeHandler() { 13018 if (!$breakpoints.length) { 13019 // the breakpoints element is missing. 13020 $(window).off('resize.breakpointEvent'); 13021 return; 13022 } 13023 var currentBp = breakpoints.getCurrentBreakpoint(); 13024 if (currentBp !== previousBp) { 13025 $(document).trigger('breakpoint:changed', { 13026 previousBp: previousBp, 13027 currentBp: currentBp 13028 }); 13029 previousBp = currentBp; 13030 } 13031 // else the window resized, but we did not change breakpoints. 13032} 13033 13034resizeHandler(); // call resizeHandler on page load. 13035 13036$(window).on('resize.breakpointEvent', debounce(resizeHandler, 250)); 13037 13038/***/ }), 13039
13040/***/ "./.tmp/app_col_eu_core/js/thirdParty/jquery.parallax/jquery.parallax.js": 13041/*!*******************************************************************************!*\ 13042 !*** ./.tmp/app_col_eu_core/js/thirdParty/jquery.parallax/jquery.parallax.js ***! 13043 \*******************************************************************************/ 13044/*! no static exports found */ 13045/***/ (function(module, exports, __webpack_require__) { 13046 13047"use strict"; 13048 13049 13050(function ($) { 13051 $.fn.parallax = function (options) { 13052 var _this = this; 13053 // eslint-disable-line no-param-reassign 13054 var defaults = { 13055 speed: 'slow' 13056 }; 13057 var settings = $.extend({}, defaults, options); 13058 13059 // get the viewport 13060 var getViewport = function getViewport() { 13061 return { 13062 height: $(window).height() 13063 }; 13064 }; 13065 window.parallax = {}; 13066 var resizeDebounce; 13067 $(window).off('.parallax').on('load.parallax resize.parallax', function () { 13068 clearTimeout(resizeDebounce); 13069 resizeDebounce = setTimeout(function () { 13070 window.parallax.viewport = getViewport(); 13071 _this.trigger('parallax_measure'); 13072 _this.trigger('parallax_position'); 13073 }, 100); 13074 }).on('scroll.parallax', function () { 13075 _this.trigger('parallax_position'); 13076 }); 13077 return $(this).each(function () { 13078 var $this = $(this); 13079 var data = $this.data('parallax') || {}; 13080 var speed = data.speed ? data.speed : settings.speed; 13081 var $container = $this.parent(); 13082 var contentHeight; 13083 var container; 13084 var containerHeight; 13085 var heightDiff; 13086 if ($container.css('position') === 'static') { 13087 $container.css('position', 'relative'); 13088 } 13089 $this.css({ 13090 position: 'absolute', 13091 'z-index': -1 13092 }); 13093 13094 // measuring content height, container position and height, and height difference on resize 13095 $this.on('parallax_measure', function () { 13096 contentHeight = $this.outerHeight(); 13097 container = $container.offset(); 13098 containerHeight = $container.outerHeight(); 13099 heightDiff = containerHeight - contentHeight; 13100 }); 13101 13102 // on scroll 13103 $this.on('parallax_position', function () { 13104 var scrollAmount = $(window).scrollTop(); 13105 var pointA; 13106 var pointB; 13107 var progress; 13108 var position; 13109 if (speed === 'slow') { 13110 pointA = container.top + containerHeight - window.parallax.viewport.height; 13111 pointB = container.top; 13112 progress = (scrollAmount - pointA) / (pointB - pointA); 13113 position = heightDiff - heightDiff * progress; 13114 } else { 13115 pointA = container.top - window.parallax.viewport.height; 13116 pointB = container.top + containerHeight; 13117 progress = (scrollAmount - pointA) / (pointB - pointA); 13118 position = heightDiff * progress; 13119 } 13120 $this.css('top', position); 13121 }); 13122 }); 13123 }; 13124})(jQuery); 13125 13126/***/ }), 13127
13128/***/ "./.tmp/app_col_eu_core/js/thirdParty/jquery.sideDrawer/jquery.sideDrawer.js": 13129/*!***********************************************************************************!*\ 13130 !*** ./.tmp/app_col_eu_core/js/thirdParty/jquery.sideDrawer/jquery.sideDrawer.js ***! 13131 \***********************************************************************************/ 13132/*! no static exports found */ 13133/***/ (function(module, exports, __webpack_require__) { 13134 13135"use strict"; 13136 13137 13138/** 13139 * <button data-toggle="drawer" data-settings="{ 13140 * title: 'My Drawer', 13141 * target: '#myDrawer', 13142 * // content: 'Lorem Ipsum...', 13143 * // src: '/path/to/content.html', 13144 * size: 'auto', 13145 * placement: 'end', 13146 * class: '', 13147 * closeBtn: true, 13148 * backdrop: true, 13149 * transitionDuration: 400 13150 * }">Open the Drawer<button> 13151 */ 13152$('body').on('click', '[data-toggle=drawer]', function (e) { 13153 var $button = $(this); 13154 var settings = $button.data('settings') || {}; 13155 settings.returnFocusTo = e.target; 13156 if ($button.data('target')) { 13157 settings.target = $button.data('target'); 13158 } 13159 $.drawer(settings); 13160}); 13161(function ($) { 13162 /** 13163 * Create the markup for displaying a dynamic drawer. 13164 * @param {Object} options The options to use on this drawer. 13165 * @returns {string} The markup ready to be added to the page. 13166 */ 13167 function createDrawerMarkup(options) { 13168 // eslint-disable-line no-unused-vars 13169 var defaults = { 13170 placement: 'end', 13171 // start, end, top, or bottom 13172 size: 'auto', 13173 // sm, md, lg, or auto 13174 closeBtn: true, 13175 title: '', 13176 content: '', 13177 class: '' 13178 }; 13179 var settings = $.extend({}, defaults, options); 13180 var closeBtn = settings.closeBtn ? '<button type="button" class="close" data-dismiss="drawer" aria-label="Close"><svg class="svgicon"><use href="#close"></use></svg></button>' : ''; 13181 var drawerTitle = settings.title ? "<div class=\"drawer__title\" tabindex=\"0\">".concat(settings.title, "</div>") : ''; // this is to prevent an empty title being focused via screenreader 13182 13183 return "<div class=\"drawer drawer--".concat(settings.placement, " drawer--").concat(settings.size, " ").concat(settings.class, "\">\n <div class=\"drawer__content\" tabindex=\"0\">\n <div class=\"drawer__header\">\n ").concat(drawerTitle, "\n ").concat(closeBtn, "\n </div>\n <div class=\"drawer__body\">\n ").concat(settings.content, "\n </div>\n </div>\n </div>"); 13184 } 13185 13186 /** 13187 * $.drawer({ 13188 * target: '#myDrawerContent' 13189 * }); 13190 * $.drawer({ 13191 * content: 'Hello World' 13192 * }); 13193 * $.drawer({ 13194 * src: '/path/to/content.html' 13195 * }); 13196 * @param {Object} options The optional parameters for this drawer 13197 * @return {Object} A drawer component 13198 */ 13199 $.drawer = function (options) { 13200 // eslint-disable-line no-param-reassign 13201 var defaults = { 13202 title: '', 13203 target: '', 13204 content: '', 13205 src: '', 13206 placement: 'end', 13207 // start, end, top, or bottom 13208 size: 'auto', 13209 class: '', 13210 closeBtn: true, 13211 backdrop: true, 13212 closeOnBackdropClick: true, 13213 transitionDuration: 400, 13214 destroyOnClose: true, 13215 autoOpen: true, 13216 returnFocusTo: 'body' 13217 }; 13218 var settings = $.extend({}, defaults, options); 13219 var $drawer; 13220 var drawerMarkup; 13221 var $backdrop; 13222 13223 /** 13224 * Adds a backdrop over the page and behind the drawer. 13225 */ 13226 function addBackdrop() { 13227 $backdrop = $('<div class="drawer__backdrop"></div>').appendTo('body'); 13228 } 13229 13230 /** 13231 * Translates the placement value to a CSS property. 13232 * @example 'end' --> 'right' 13233 * @returns {string} The CSS property. 13234 */ 13235 function getSide() { 13236 switch (settings.placement) { 13237 case 'top': 13238 return 'top'; 13239 case 'bottom': 13240 return 'bottom'; 13241 case 'start': 13242 case 'left': 13243 return 'left'; 13244 default: 13245 // 'end' or any unknown value 13246 return 'right'; 13247 } 13248 } 13249 13250 /** 13251 * Calculates the closed position of the drawer (based on the difference of the drawer width and the window width). 13252 * @returns {string} The CSS value to pass to $.fn.css() or $.fn.animate(). Example: { right: '-50%' } 13253 */ 13254 function getClosedPosition() { 13255 var edgePosition; 13256 if (settings.placement === 'top' || settings.placement === 'bottom') { 13257 edgePosition = $drawer.outerHeight() / window.innerHeight * -100; 13258 } else { 13259 // 'start' or 'end' or other invalid value 13260 edgePosition = $drawer.outerWidth() / document.body.clientWidth * -100; 13261 } 13262 return edgePosition + '%'; 13263 } 13264 13265 /** 13266 * Calculates the opened position of the drawer, based on the placement of the drawer. 13267 * @returns {string} The CSS value to pass to $.fn.css() or $.fn.animate(). Example: { right: '0%' } 13268 */ 13269 function getOpenedPosition() { 13270 return '0%'; 13271 } 13272 13273 /** 13274 * Closes the drawer. Triggers the hide and hidden events before and after the transition. 13275 * @param {Event} e The event that called the close handler. 13276 * @param {boolean} skipDestoryOnClose If true, the drawer is not destroyed on close, regardless of the original destroyOnClose setting value 13277 */ 13278 function close(e, skipDestoryOnClose) { 13279 $drawer.trigger('hide.drawer', e); // pass the click event 13280 13281 var properties = {}; 13282 properties[getSide()] = getClosedPosition(); // => { 'right': '-50%' } 13283
13284 // remove listener for ESC key and add focus to element with specified classname 13285 $drawer.off('keydown'); 13286 $(settings.returnFocusTo).trigger('focus'); 13287 $drawer.animate(properties, settings.transitionDuration, null, function () { 13288 $drawer.removeClass('show'); // remove .show first to enable scroll when there are no drawers with this class 13289 $drawer.trigger('hidden.drawer', e); // pass the click event 13290 13291 if ($backdrop) { 13292 // remove backdrop 13293 $backdrop.off('click').remove(); 13294 } 13295 13296 // if drawer was created dynamically, remove it. 13297 if (!skipDestoryOnClose && settings.destroyOnClose) { 13298 $drawer.remove(); 13299 } 13300 }); 13301 } 13302 13303 /** 13304 * Opens the drawer. Triggers the show and shown events before and after the transition. 13305 */ 13306 function open() { 13307 if (settings.size === 'auto' && !$drawer.hasClass('show')) { 13308 $drawer.css(getSide(), getClosedPosition()); 13309 } 13310 $drawer.trigger('show.drawer').addClass('show'); 13311 if (settings.backdrop) { 13312 addBackdrop(); 13313 } 13314 if (settings.backdrop && settings.closeOnBackdropClick) { 13315 $backdrop.one('click', close); 13316 } 13317 var properties = {}; 13318 properties[getSide()] = getOpenedPosition(); // => { 'right': '0%' } 13319 13320 $drawer.animate(properties, settings.transitionDuration, 'swing', function () { 13321 $drawer.trigger('shown.drawer'); 13322 }); 13323 13324 // when the drawer opens, check for tabindex and apply if applicable 13325 var $drawerContent = $drawer.find('.drawer__content'); 13326 if (!$drawerContent.attr('tabindex')) { 13327 $drawerContent.attr('tabindex', 0); 13328 } 13329 $drawerContent.trigger('focus'); // then focus the drawer content on the drawer__content element 13330 13331 // GSD-10714: Adding .off to prevent multiple event handler registrations 13332 $drawer.off('click', '[data-dismiss=drawer]', close).one('click', '[data-dismiss=drawer]', close).on('keydown', function (e) { 13333 // listen for ESC key to close the drawer 13334 if (e.key === 'Escape') { 13335 close(); 13336 } 13337 }); 13338 } 13339 13340 // the drawer content can come from multiple places: 13341 // * if a target (selector) is specified, select it from the page 13342 // * if a src is specified, fetch it 13343 // * else content is a string in settings.content 13344 if (settings.target) { 13345 // drawer content is already on page 13346 settings.destroyOnClose = false; // if we destroy it one, we can't re-open it. 13347 $drawer = $(settings.target); 13348 if ($drawer.hasClass('drawer')) { 13349 // it's already a drawer. Just open it and be done. 13350 $('body').append($drawer); // ensure the drawer is attached to the body so backdrop will always be behind it 13351 open(); 13352 } else if ($drawer.closest('.drawer').length) { 13353 // the target content is inside a drawer. select it instead. 13354 $drawer = $drawer.closest('.drawer'); 13355 $('body').append($drawer); // ensure the drawer is attached to the body so backdrop will always be behind it 13356 open(); 13357 } else if ($drawer.length) { 13358 // the target content is not yet a drawer 13359 var $drawerContent = $drawer; 13360 13361 // create an empty drawer 13362 drawerMarkup = createDrawerMarkup(settings); 13363 $drawer = $(drawerMarkup); 13364 $('body').append($drawer); 13365 13366 // Move the content into the drawer (not delete/recreate it) 13367 $drawer.find('.drawer__body').append($drawerContent); 13368 13369 // open the drawer if autoOpen is set to true 13370 if (settings.autoOpen) { 13371 open(); 13372 } 13373 } // else looks like settings.target was a bad selector 13374 } else if (settings.src) { 13375 // create the drawer and open it. 13376 // settings.content can provide temporary content, otherwise the drawer will be empty until the resource is loaded. 13377 drawerMarkup = createDrawerMarkup(settings); 13378 $drawer = $(drawerMarkup); 13379 $('body').append($drawer); 13380 if (settings.autoOpen) { 13381 open(); 13382 } 13383 13384 // try to start a spinner 13385 if (typeof $.fn.spinner === 'function') { 13386 $drawer.spinner().start(); 13387 } 13388 13389 // get the content 13390 $.get(settings.src).done(function (data) { 13391 settings.content = data; 13392 13393 // update the drawer content 13394 $drawer.find('.drawer__body').html(data); 13395 $drawer.trigger('contentAsyncLoaded.drawer'); 13396 if (typeof $.spinner === 'function') { 13397 $.spinner().stop(); 13398 } 13399 }); 13400 } else { 13401 // content is passed in settings.content 13402 // wrap the content in drawer markup 13403 drawerMarkup = createDrawerMarkup(settings); 13404 $drawer = $(drawerMarkup); 13405 $('body').append($drawer); 13406 if (settings.autoOpen) { 13407 open(); 13408 } 13409 } 13410 $drawer.open = open; 13411 $drawer.close = close; 13412 13413 // Store the drawer instance on data for the elements for future retrieval 13414 $drawer.data('drawer', $drawer); 13415 return $drawer; 13416 }; 13417 13418 /** 13419 * Displays a drawer from a selector. 13420 * @example 13421 * $('#myDrawer').drawer(); 13422 * @param {Object} options The optional parameters for this drawer 13423 * @returns {Object} A drawer component 13424 */ 13425 $.fn.drawer = function (options) { 13426 // eslint-disable-line no-param-reassign 13427 return this.each(function () { 13428 var settings = $.extend({}, options, { 13429 target: $(this) 13430 }); 13431 return $.drawer(settings); 13432 }); 13433 }; 13434})(jQuery); 13435 13436/***/ }), 13437
13438/***/ "./.tmp/app_col_eu_core/js/thirdParty/jquery.stepBar/jquery.stepBar.js": 13439/*!*****************************************************************************!*\ 13440 !*** ./.tmp/app_col_eu_core/js/thirdParty/jquery.stepBar/jquery.stepBar.js ***! 13441 \*****************************************************************************/ 13442/*! no static exports found */ 13443/***/ (function(module, exports, __webpack_require__) { 13444 13445"use strict"; 13446 13447 13448function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 13449(function ($) { 13450 /** 13451 * Creates a "progress bar" labeled with steps at regular intervals. 13452 * @param {Oject|string} options The options object passed in when creating the stepBar component, or a string command for interacting with an existing stepBar component. 13453 * @param {*} args Additional parameters when calling a method (passing a string in the options parameter). See methods below for details. 13454 * @returns {jQuery} A jQuery handle to the stepBar component. 13455 */ 13456 $.fn.stepBar = function (options, args) { 13457 // eslint-disable-line no-param-reassign 13458 var defaults = { 13459 steps: [], 13460 progress: 0.25, 13461 theme: '' 13462 }; 13463 var CLASS_COMPLETED = 'stepbar__step--complete'; 13464 var CLASS_ACTIVE = 'stepbar__step--active'; 13465 13466 /** 13467 * Merges default settings, passed in options, and settings found in data attributes to return a single object containing all settings. 13468 * @param {element} el The element containing the stepBar, which might have data attributes. 13469 * @param {Object} optionsObj The optional options object that is passed in when creating a stepBar component. 13470 * @returns {Object} The merged objects, containing all settings for this stepBar instance. 13471 */ 13472 var getSettings = function getSettings(el, optionsObj) { 13473 var dataOptions = {}; 13474 var dataProgress = $(el).data('progress'); 13475 var dataSteps = $(el).data('steps'); 13476 if (dataProgress) { 13477 var newProgress; 13478 if (typeof dataProgress === 'string' && dataProgress.includes('%')) { 13479 // if for example, data-progress="30%", convert to 0.3 13480 newProgress = parseFloat(dataProgress) / 100; 13481 } else { 13482 newProgress = parseFloat(dataProgress); 13483 } 13484 if (!isNaN(newProgress)) { 13485 dataOptions.progress = newProgress; 13486 } 13487 } 13488 if (dataSteps) { 13489 var newSteps = dataSteps.split(','); 13490 if (newSteps.length) { 13491 dataOptions.steps = newSteps; 13492 } 13493 } 13494 return $.extend({}, defaults, optionsObj, dataOptions); 13495 }; 13496 13497 /** 13498 * Generates a string of markup for the steps in the stepBar, including inline style for the position of each step. 13499 * @param {array} steps An array of labels (strings) for the steps in the stepBar. 13500 * @returns {string} The generated markup string. 13501 */ 13502 var getStepsMarkup = function getStepsMarkup(steps) { 13503 var stepsMarkup = ''; 13504 var numSteps = steps.length; 13505 var leftPosition = 'auto'; 13506 steps.forEach(function (step, i) { 13507 var label = _typeof(step) === 'object' ? step.label : step; 13508 if (label) { 13509 if (_typeof(step) === 'object' && step.position) { 13510 leftPosition = step.position * 100 + '%'; 13511 } else if (numSteps > 1) { 13512 leftPosition = 100 / (numSteps - 1) * i + '%'; 13513 } 13514 stepsMarkup += "<div class=\"stepbar__step\" style=\"left: ".concat(leftPosition, ";\">").concat(label, "</div>"); 13515 } 13516 }); 13517 return stepsMarkup; 13518 }; 13519 13520 /** 13521 * Builds the markup for a stepBar component and appends it to the given element. 13522 * @param {element} el The container element that will receive the stepBar component. 13523 * @param {Object} settings An object containing the settings for this stepBar component. 13524 * @returns {jQuery} A jQuery handle to the generated stepBar. 13525 */ 13526 var init = function init(el, settings) { 13527 var stepsMarkup = getStepsMarkup(settings.steps); 13528 var theme = settings.theme ? "stepbar--".concat(settings.theme) : ''; 13529 var $stepBar = $("\n <div class=\"stepbar ".concat(theme, "\" data-progress=\"0\">\n <div class=\"stepbar__track\">\n <div class=\"stepbar__progress\"></div>\n </div>\n <div class=\"stepbar__steps\">\n ").concat(stepsMarkup, "\n </div>\n </div>\n ")); 13530 $(el).append($stepBar); 13531 return $stepBar; 13532 }; 13533 13534 /** 13535 * Updates the progress bar or the steps in the given stepBar component. 13536 * @param {jQuery} $stepBar The component to be updated 13537 * @param {Object}
13537 settings An object containing all the settings to be updated. 13538 */ 13539 var updateProgress = function updateProgress($stepBar, settings) { 13540 if (!settings) { 13541 // No settings?! What are we supposed to update? Just return, I guess. 13542 return; 13543 } 13544 if (settings.steps) { 13545 // update / replace the steps 13546 $stepBar.find('.stepbar__steps').html(getStepsMarkup(settings.steps)); 13547 } 13548 var progress = settings.progress !== undefined ? settings.progress : $stepBar.data('progress'); 13549 if (settings.progress !== undefined) { 13550 $stepBar.find('.stepbar__progress').css({ 13551 width: "".concat(progress * 100, "%") 13552 }); 13553 $stepBar.data('progress', progress); 13554 } 13555 13556 // set completed and active steps based on progress percentage 13557 var $steps = $stepBar.find('.stepbar__step').removeClass([CLASS_COMPLETED, CLASS_ACTIVE]); 13558 var barLength = $stepBar.find('.stepbar__track').width(); 13559 var $lastActiveStep; 13560 var maxActivePosition = 0; 13561 $steps.each(function () { 13562 var $step = $(this); 13563 var stepPos = parseFloat($step.css('left')) / barLength; 13564 if (stepPos <= progress) { 13565 $step.addClass(CLASS_COMPLETED); 13566 if (stepPos >= maxActivePosition) { 13567 maxActivePosition = stepPos; 13568 $lastActiveStep = $step; 13569 } 13570 } 13571 }); 13572 if ($lastActiveStep) { 13573 $lastActiveStep.addClass(CLASS_ACTIVE); 13574 } 13575 }; 13576 13577 /** 13578 * METHODS 13579 * if options is a string, it's probably a method call 13580 */ 13581 if (typeof options === 'string') { 13582 var $container = $(this); 13583 var method = options.toLowerCase(); 13584 var $stepBar = $container.find('.stepbar'); 13585 if (method === 'update') { 13586 /** 13587 * Method: update 13588 * Updates an existing stepBar component with the given progress and/or steps. 13589 * @example 13590 * // update the progress, no change to the steps 13591 * $('.existingStepBarComponent').stepBar('update', { 13592 * progress: 0.8 13593 * }); 13594 * // result looks something like this: 13595 * // ( )======( )======(/)==----( ) 13596 * // Step1 Step2 Step3 Step4 13597 * @example 13598 * // update the steps and progress (steps are replaced and repositioned) 13599 * $('.existingStepBarComponent').stepBar('update', { 13600 * steps: ['Start', 'New step', 'End'], 13601 * progress: 0.5 13602 * }); 13603 * // result looks something like this: 13604 * // ( )===========(/)-----------( ) 13605 * // Start New step End 13606 */ 13607 updateProgress($stepBar, args); 13608 } else if (method === 'addstep') { 13609 /** 13610 * Method: addStep 13611 * Insert a step at the specified location on the bar. 13612 * @example 13613 * // create a standard step bar with evenly spaced steps 13614 * $('.existingStepBarComponent').stepBar({ steps: [1, 2, 3], progress: 0.5}); 13615 * // add a step 13616 * $('.existingStepBarComponent').stepBar('addStep', { label: '2.5', position: 0.75 }); 13617 * // result looks something like this: 13618 * // ( )===========(/)----( )----( ) 13619 * // 1 2 2.5 3 13620 */ 13621 var label; 13622 var leftPosition; 13623 if (_typeof(args) === 'object') { 13624 label = args.label; 13625 leftPosition = args.position * 100 + '%'; 13626 } 13627 if (label && leftPosition !== undefined) { 13628 var markup = "<div class=\"stepbar__step\" style=\"left: ".concat(leftPosition, ";\">").concat(label, "</div>"); 13629 var $stepsContainer = $stepBar.find('.stepbar__steps'); 13630 $stepsContainer.append(markup); 13631 updateProgress($stepBar, {}); 13632 } 13633 } 13634 return $container; 13635 } 13636 return this.each(function () { 13637 var settings = getSettings(this, options); 13638 var $container = $(this); 13639 var $stepBar = init(this, settings); 13640 var firstStepOffset = $stepBar.find('.stepbar__step:first').outerWidth() / 2; 13641 var lastStepOffset = $stepBar.find('.stepbar__step:last').outerWidth() / 2; 13642 var offsets = firstStepOffset + lastStepOffset; 13643 var $track = $stepBar.find('.stepbar__track'); 13644 var tallestHeight = $track.position().top + $track.height(); // default height to the track size 13645 var totalWidth = 0; 13646 $stepBar.find('.stepbar__step').each(function () { 13647 var $thisStep = $(this); 13648 13649 // add to the total width 13650 totalWidth += $thisStep.outerWidth(); 13651 13652 // get height of tallest step 13653 var h = $thisStep.outerHeight(); 13654 if (h > tallestHeight) tallestHeight = h; 13655 }); 13656 13657 // set element widths 13658 $stepBar.find('.stepbar__track, .stepbar__steps').css({ 13659 left: firstStepOffset, 13660 width: "calc(100% - ".concat(offsets, "px)"), 13661 // using calc() is better for when resizing the window 13662 minWidth: totalWidth - offsets 13663 }).filter('.stepbar__steps').css('height', tallestHeight); // steps are absolutely positioned, so set a height to prevent overlaping content 13664 13665 // set the progress bar width 13666 updateProgress($stepBar, { 13667 progress: settings.progress 13668 }); 13669 return $container; 13670 }); 13671 }; 13672})(jQuery); 13673 13674/***/ }), 13675
13676/***/ "./.tmp/app_col_eu_core/js/thirdParty/jquery.wizard/jquery.wizard.js": 13677/*!***************************************************************************!*\ 13678 !*** ./.tmp/app_col_eu_core/js/thirdParty/jquery.wizard/jquery.wizard.js ***! 13679 \***************************************************************************/ 13680/*! no static exports found */ 13681/***/ (function(module, exports, __webpack_require__) { 13682 13683"use strict"; 13684/* eslint-disable no-underscore-dangle */ 13685 13686 13687(function () { 13688 $.fn.wizard = function (options) { 13689 var $thisWiz = $(this); 13690 var defaults = { 13691 initialStep: 0, 13692 // step id (string) or index (integer) 13693 activeClass: 'active', 13694 init: function init($wiz) { 13695 // `this` is the wizard element 13696 $wiz.on('click', '.next', function (e) { 13697 $wiz.nextStep(e, true); // the 2nd param as true will call beforeStepExit before proceeding 13698 }); 13699 }, 13700 13701 afterStepEnter: function afterStepEnter(stepId, $wiz) {}, 13702 // eslint-disable-line no-unused-vars 13703 beforeStepExit: function beforeStepExit(e, stepId, $wiz) { 13704 // eslint-disable-line no-unused-vars 13705 // `this` is the current step element 13706 return true; // return true to continue to next step; return false to remain on the current step. 13707 }, 13708 13709 updateProgress: function updateProgress($wiz) { 13710 var $progress = $(this); 13711 $progress.text("".concat($progress.data('step'), " / ").concat($wiz.numSteps)); 13712 } 13713 }; 13714 13715 /** 13716 * Finds and returns the index of the current "active" step. 13717 * @returns {integer} The index of the current step. 13718 */ 13719 var _getCurrentStepIndex = function _getCurrentStepIndex() { 13720 return $thisWiz.steps.indexOf($thisWiz.currentStepId); 13721 }; 13722 13723 /** 13724 * Returns the id of the step. If the step argument is not a number, it is returned unchanged. 13725 * @param {integer|string} step The index or id of the step 13726 * @returns {string} The id of the step. 13727 */ 13728 var _getStepId = function _getStepId(step) { 13729 // step could be an index or a name 13730 if (isNaN(step)) { 13731 return step; 13732 } 13733 return $thisWiz.steps[step]; 13734 }; 13735 13736 /** 13737 * Gets the jQuery object of the requested step. 13738 * @param {integer|string} step The index or id of the step 13739 * @returns {jQuery} The jQuery step object 13740 */ 13741 var _getStep = function _getStep(step) { 13742 // step could be an index or a name 13743 var stepId = _getStepId(step); 13744 return $thisWiz.find(".wizard__step[data-step-id=".concat(stepId, "]")); 13745 }; 13746 13747 /** 13748 * Updates the data attributes of the progress element and calls the public updateProgress() function 13749 * which can be used to display the progress. 13750 */ 13751 var _updateProgress = function _updateProgress() { 13752 var $progress = $thisWiz.find('.wizard__progress'); 13753 var stepIndex = _getCurrentStepIndex($thisWiz); 13754 $progress.data({ 13755 step: stepIndex + 1, 13756 'num-steps': $thisWiz.numSteps, 13757 progress: (stepIndex + 1) / $thisWiz.numSteps 13758 }); 13759 $thisWiz.settings.updateProgress.call($progress[0], $thisWiz); 13760 }; 13761 13762 /** 13763 * Moves the wizard to the requested step. In the process, calls the public functions beforeStepExit and afterStepEnter. 13764 * @param {Event} e The event that triggered this function call which is passed through to the beforeStepExit function. 13765 * @param {integer|string} targetStepIdOrIndex The index or id of the step we're going to. 13766 */ 13767 var _gotoStep = function _gotoStep(e, targetStepIdOrIndex) { 13768 if ($thisWiz.data('isAnimating')) { 13769 return; 13770 } 13771 var $currentStep = $thisWiz.find(".wizard__step.".concat($thisWiz.settings.activeClass)); 13772 var proceed = true; 13773 13774 // preventing infinite loop if beforeStepExit() calls gotoStep() 13775 if (!$thisWiz.data('beforeStepExitInProgress')) { 13776 $thisWiz.data('beforeStepExitInProgress', true); 13777 proceed = $thisWiz.settings.beforeStepExit.call($currentStep[0], e, $thisWiz.currentStepId, $thisWiz); 13778 $thisWiz.data('beforeStepExitInProgress', false); 13779 } 13780 if (proceed !== false) { 13781 var $targetStep = _getStep(targetStepIdOrIndex); 13782 if ($targetStep.length) { 13783 $thisWiz.data('isAnimating', true); 13784 $thisWiz.currentStepId = _getStepId(targetStepIdOrIndex); // targetStepIdOrIndex can be step id (string) or index (integer) 13785 13786 var _$stepContainer = $currentStep.parent(); 13787 _$stepContainer.css({ 13788 height: _$stepContainer.outerHeight(), 13789 overflow: 'hidden' 13790 }); 13791 $currentStep.css({ 13792 position: 'absolute', 13793 top: 0, 13794 left: 0, 13795 right: 0 13796 }); 13797 $targetStep.css({ 13798 position: 'absolute', 13799 top: 0, 13800 left: 0, 13801 right: 0 13802 }); 13803 $currentStep.removeClass($thisWiz.settings.activeClass).fadeOut(); 13804 $targetStep.addClass($thisWiz.settings.activeClass).fadeIn(null, function () { 13805 $currentStep.css('position', 'static'); 13806 $targetStep.css('position', 'static'); 13807 _$stepContainer.animate({ 13808 height: $targetStep.outerHeight() 13809 }, null, null, function () { 13810 _$stepContainer.css({ 13811 height: 'auto', 13812 overflow: 'visible' 13813 }); 13814 $thisWiz.data('isAnimating', false); 13815 }); 13816 }); 13817 _updateProgress(); 13818 $thisWiz.settings.afterStepEnter.call($targetStep[0], $thisWiz.currentStepId, $thisWiz); 13819 } else { 13820 console.warn('Step not found:', targetStepIdOrIndex); 13821 } 13822 } 13823 }; 13824 13825 /** 13826 * This is a shortcut function to _gotoStep(step + 1). 13827 * @param {Event} e The event that triggered this function call which is passed through to the _gotoStep function. 13828 */ 13829 var _nextStep = function _nextStep(e) { 13830 var nextStepIndex = _getCurrentStepIndex() + 1; 13831 if (nextStepIndex < $thisWiz.numSteps) { 13832 _gotoStep(e, $thisWiz.steps[nextStepIndex]); 13833 } else { 13834 // else out of bounds 13835 console.warn('This is the last step'); 13836 } 13837 }; 13838 13839 /** 13840 * This is a shortcut function to _gotoStep(step - 1). 13841 * @param {Event} e The event that triggered this function call which is passed through to the _gotoStep function. 13842 */ 13843 var _prevStep = function _prevStep(e) { 13844 var prevStepIndex = _getCurrentStepIndex() - 1; 13845 if (prevStepIndex >= 0) { 13846 _gotoStep(e, $thisWiz.steps[prevStepIndex]); 13847 } else { 13848 // else out of bounds 13849 console.warn('This is the first step'); 13850 } 13851 }; 13852 var settings = $.extend({}, defaults, options); 13853 $thisWiz.steps = []; 13854 $thisWiz.find('.wizard__step').each(function () { 13855 $thisWiz.steps.push($(this).data('step-id')); 13856 }); 13857 $thisWiz.numSteps = $thisWiz.steps.length; 13858 $thisWiz.settings = settings; 13859 $thisWiz.currentStepId = _getStepId(settings.initialStep); 13860 13861 // expose functions 13862 $thisWiz.gotoStep = _gotoStep; 13863 $thisWiz.nextStep = _nextStep; 13864 $thisWiz.prevStep = _prevStep; 13865 13866 /** 13867 * Fetches and inserts a step into the wizard. 13868 * @param {string} id The id of the step that is to be inserted 13869 * @param {string} src The URL that will return the HTML markup for the step content 13870 * @param {integer} index The index of which to place this step. If omitted, the step is appended to the end. 13871 */ 13872 $thisWiz.fetchStep = function (id, src, index) { 13873 var $step = $("<div class=\"wizard__step\" data-step-id=\"".concat(id, "\"></div>")); 13874 $.get(src).done(function (stepHtml) { 13875 $step.html(stepHtml); 13876 }); 13877 if (index === undefined) { 13878 index = $thisWiz.numSteps; // eslint-disable-line no-param-reassign 13879 } 13880 13881 if (index === 0) { 13882 var _$stepContainer2 = $thisWiz.find('.wizard__step').parent(); 13883 _$stepContainer2.prepend($step); 13884 } else { 13885 var $prevStep = _getStep(index - 1); 13886 $prevStep.after($step); 13887 } 13888 $thisWiz.steps.splice(index, 0, id); 13889 $thisWiz.numSteps++; 13890 }; 13891 13892 /** 13893 * Removes a step from the wizard. 13894 * @param {integer|string} step The index or id of the step to be removed. 13895 */ 13896 $thisWiz.removeStep = function (step) { 13897 var id = _getStepId(step); 13898 var index = $thisWiz.steps.indexOf(id); 13899 _getStep(id).remove(); 13900 $thisWiz.steps.splice(index, 1); 13901 $thisWiz.numSteps--; 13902 }; 13903 var $firstStep = _getStep(settings.initialStep); 13904 $firstStep.addClass('active'); 13905 13906 // set styles 13907 var $stepContainer = $firstStep.parent(); 13908 if ($stepContainer.css('position') === 'static') { 13909 $stepContainer.css('position', 'relative'); 13910 } 13911 $thisWiz.find('.wizard__step').css({ 13912 display: 'none' 13913 }); 13914 $firstStep.css('display', 'block'); 13915 _updateProgress(); 13916 $thisWiz.settings.init.call(this, $thisWiz); 13917 $thisWiz.settings.afterStepEnter.call($firstStep[0], $thisWiz.currentStepId, $thisWiz); 13918 return $thisWiz; 13919 }; 13920})(jQuery); 13921 13922/***/ }), 13923
13924/***/ "./.tmp/app_col_eu_core/js/thirdParty/swiperInit.js": 13925/*!**********************************************************!*\ 13926 !*** ./.tmp/app_col_eu_core/js/thirdParty/swiperInit.js ***! 13927 \**********************************************************/ 13928/*! no static exports found */ 13929/***/ (function(module, exports, __webpack_require__) { 13930 13931"use strict"; 13932/* WEBPACK VAR INJECTION */(function(global) { 13933 13934/** 13935 * Global modules. 13936 */ 13937var Swiper = global.Swiper = __webpack_require__(/*! swiper/swiper-bundle.min.js */ "./node_modules/swiper/swiper-bundle.min.js"); 13938var debounce = __webpack_require__(/*! lodash/debounce */ "./node_modules/lodash/debounce.js"); 13939 13940/** 13941 * Global constants. 13942 */ 13943var swipers = []; 13944 13945/** 13946 * Adjusts the number of visible slides and slides per group based on the container's width. 13947 * @param {Object} sliderEl - The Swiper instance or slider object. 13948 */ 13949function adjustSlides(sliderEl) { 13950 if (!sliderEl || !sliderEl.el) { 13951 return; 13952 } 13953 var slidesPerView = Math.floor(sliderEl.el.clientWidth / sliderEl.swatchWidth); 13954 if (sliderEl.slides.length <= slidesPerView) { 13955 sliderEl.el.swiper.destroy(true, true); 13956 return; 13957 } 13958 slidesPerView = Math.floor(sliderEl.width / sliderEl.swatchWidth); 13959 // eslint-disable-next-line no-param-reassign 13960 sliderEl.params.slidesPerView = slidesPerView; 13961 // eslint-disable-next-line no-param-reassign 13962 sliderEl.params.slidesPerGroup = slidesPerView; 13963 sliderEl.update(); 13964} 13965 13966/** 13967 * Initializes and restores swiper for swatch gallery. 13968 * @param {JQuery} $container - The modal swiper container. 13969 */ 13970function initColorSwatchSwiper() { 13971 var $container = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : $(document); 13972 var $selector = $container.find('.swiper-container--swatches:not(.swiper-initialized)'); 13973 $selector.each(function () { 13974 var $swiperEl = $(this); 13975 var $colorSwatches = $swiperEl.find('.js-color-swatch'); 13976 var containerWidth = $swiperEl.width(); 13977 var swatchWidth = $colorSwatches.first().outerWidth(true); 13978 var isSwatchesFitContainer = containerWidth >= $colorSwatches.length * swatchWidth; 13979 if (!isSwatchesFitContainer) { 13980 var swiperData = { 13981 loop: false, 13982 slidesPerView: 'auto', 13983 slidesPerGroupAuto: true, 13984 watchOverflow: true, 13985 navigation: { 13986 nextEl: '.swiper-button-next', 13987 prevEl: '.swiper-button-prev' 13988 }, 13989 on: { 13990 resize: debounce(adjustSlides, 300), 13991 afterInit: function afterInit() { 13992 this.swatchWidth = swatchWidth; 13993 adjustSlides(this); 13994 } 13995 } 13996 }; 13997 swipers.push(new Swiper(this, swiperData)); 13998 } 13999 }); 14000} 14001 14002/** 14003 * Initializes and restores swiper instance for image gallery. 14004 * @param {Element} swiperContainer - The modal swiper container. 14005 */ 14006function initTileImageSwiperInstance(swiperContainer) { 14007 if (swiperContainer.swiper) { 14008 return; 14009 } 14010 var swiperInstance = new Swiper(swiperContainer, { 14011 loop: true, 14012 slidesPerView: 1, 14013 spaceBetween: 10, 14014 pagination: { 14015 el: '.swiper-pagination', 14016 clickable: true 14017 }, 14018 navigation: { 14019 nextEl: '.swiper-button-next', 14020 prevEl: '.swiper-button-prev' 14021 }, 14022 lazy: { 14023 loadPrevNext: true, 14024 loadOnTransitionStart: true 14025 } 14026 }); 14027 swipers.push(swiperInstance); 14028} 14029var observerOptions = { 14030 root: null, 14031 threshold: 0.1 14032}; 14033var swiperObserver = new IntersectionObserver(function (entries, observer) { 14034 entries.forEach(function (entry) { 14035 if (entry.isIntersecting) { 14036 initTileImageSwiperInstance(entry.target); 14037 observer.unobserve(entry.target); 14038 } 14039 }); 14040}, observerOptions); 14041 14042/** 14043 * Initializes and restores swiper for image gallery. 14044 * @param {JQuery} $container - The modal swiper container. 14045 */ 14046function initTileImageSwiper() { 14047 var $container = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : $(document); 14048 var $selector = $container.find('.image-carousel-enabled .selected .swiper-container--images:not(.swiper-initialized)'); 14049 $selector.each(function () { 14050 swiperObserver.observe(this); 14051 }); 14052} 14053module.exports = {
14054 init: function init() { 14055 var $selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : $('.swiper-container[data-swiper]'); 14056 $selector.each(function () { 14057 if (!this.swiper) { 14058 var $el = $(this); 14059 var swOptions = $el.data('swiper'); 14060 swOptions.on = Object.assign({}, swOptions.on, { 14061 init: function init() { 14062 $el.addClass('swiper-loaded'); 14063 } 14064 }); 14065 $el.on('updateLazyImages', function () { 14066 if (this.swiper) { 14067 var $images = $(this).find('.swiper-wrapper img'); 14068 $images.each(function () { 14069 if (!this.hasAttribute('src') && this.getAttribute('data-src')) { 14070 this.setAttribute('src', this.getAttribute('data-src')); 14071 } 14072 }); 14073 } 14074 }); 14075 swipers.push(new Swiper(this, swOptions)); 14076 } 14077 }); 14078 }, 14079 destroy: function destroy($selector) { 14080 if (!$selector) { 14081 return; 14082 } 14083 $selector.each(function () { 14084 if (this.swiper) { 14085 this.swiper.destroy(true, true); 14086 } 14087 }); 14088 }, 14089 initColorSwatchSwiper: initColorSwatchSwiper, 14090 initTileImageSwiper: initTileImageSwiper, 14091 handleEvents: function handleEvents() { 14092 $(window).on('resize', debounce(function () { 14093 initColorSwatchSwiper(); 14094 }, 300)); 14095 $(document).on('search:productGridUpdated', function () { 14096 initColorSwatchSwiper(); 14097 initTileImageSwiper(); 14098 }); 14099 } 14100}; 14101/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) 14102 14103/***/ }), 14104
14105/***/ "./.tmp/app_col_eu_core/js/thirdParty/vanillaLazyLoad.js": 14106/*!***************************************************************!*\ 14107 !*** ./.tmp/app_col_eu_core/js/thirdParty/vanillaLazyLoad.js ***! 14108 \***************************************************************/ 14109/*! no static exports found */ 14110/***/ (function(module, exports, __webpack_require__) { 14111 14112"use strict"; 14113/* WEBPACK VAR INJECTION */(function(global) { 14114 14115var LazyLoad = global.LazyLoad = __webpack_require__(/*! vanilla-lazyload/dist/lazyload */ "./node_modules/vanilla-lazyload/dist/lazyload.js"); 14116module.exports = { 14117 init: function init() { 14118 var lazyLoadInstance = new LazyLoad({ 14119 elements_selector: '.lazy', 14120 use_native: true, 14121 load_delay: 200 14122 }); 14123 // Update the instance 14124 if (lazyLoadInstance) { 14125 lazyLoadInstance.update(); 14126 } 14127 } 14128}; 14129/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) 14130 14131/***/ }), 14132
14133/***/ "./cartridges/app_brand_core/cartridge/client/default/js/components/headerKeyboardNav.js": 14134/*!***********************************************************************************************!*\ 14135 !*** ./cartridges/app_brand_core/cartridge/client/default/js/components/headerKeyboardNav.js ***! 14136 \***********************************************************************************************/ 14137/*! no static exports found */ 14138/***/ (function(module, exports, __webpack_require__) { 14139 14140"use strict"; 14141 14142 14143var keyboardAccessibility = __webpack_require__(/*! ./keyboardAccessibility */ "./cartridges/app_brand_core/cartridge/client/default/js/components/keyboardAccessibility.js"); 14144 14145// Closure to keep track of index for current anchor when dealing with slotted content 14146var anchorIndexHelper = function () { 14147 var anchorIndex = 0; 14148 return { 14149 increment: function increment() { 14150 return anchorIndex++; 14151 }, 14152 decrement: function decrement() { 14153 return --anchorIndex; 14154 }, 14155 getIndex: function getIndex() { 14156 return anchorIndex; 14157 }, 14158 setIndex: function setIndex(value) { 14159 anchorIndex = value; 14160 } 14161 }; 14162}(); 14163 14164/** 14165 * Open menu item safely even if menu plugin has not registered yet. 14166 * @param {JQuery} $element menu element 14167 * @returns {JQuery} element reference 14168 */ 14169function openMenuItemSafe($element) { 14170 if ($.fn.openMenuItem) { 14171 return $element.openMenuItem(); 14172 } 14173 if ($element.attr('aria-expanded') !== undefined || $element.closest('li').attr('aria-expanded') !== undefined) { 14174 $element.attr('aria-expanded', 'true'); 14175 } 14176 return $element.addClass('open'); 14177} 14178 14179/** 14180 * Close menu item safely even if menu plugin has not registered yet. 14181 * @param {JQuery} $element menu element 14182 * @returns {JQuery} element reference 14183 */ 14184function closeMenuItemSafe($element) { 14185 if ($.fn.closeMenuItem) { 14186 return $element.closeMenuItem(); 14187 } 14188 $element.find('.open').removeClass('open'); 14189 $element.find('[aria-expanded]').attr('aria-expanded', 'false'); 14190 if ($element.attr('aria-expanded') !== undefined) { 14191 $element.attr('aria-expanded', 'false'); 14192 } 14193 return $element.removeClass('open'); 14194} 14195 14196/** 14197 * Move to next anchor 14198 * @param {JQuery} $contentContainer container for content asset 14199 */ 14200function nextAnchorItem($contentContainer) { 14201 var $nextAnchors = $contentContainer.find('a:visible'); 14202 anchorIndexHelper.increment(); 14203 if (anchorIndexHelper.getIndex() > $nextAnchors.length - 1) { 14204 anchorIndexHelper.setIndex($nextAnchors.length - 1); 14205 } 14206 var $focusTarget = $nextAnchors[anchorIndexHelper.getIndex()]; 14207 if ($focusTarget) { 14208 $focusTarget.focus(); 14209 } 14210} 14211 14212/** 14213 * Move to the previous anchor 14214 * @param {JQuery} $contentContainer container for content asset 14215 * @param {JQuery} $prevSecondaryLi last secondary li item 14216 */ 14217function previousAnchorItem($contentContainer, $prevSecondaryLi) { 14218 if (anchorIndexHelper.getIndex() > 0) { 14219 anchorIndexHelper.decrement(); 14220 } else { 14221 // if no previous anchor to go to, go back to secondary navigation 14222 if ($prevSecondaryLi && $prevSecondaryLi.length) { 14223 $prevSecondaryLi.trigger('focus'); 14224 } 14225 anchorIndexHelper.setIndex(0); 14226 return; 14227 } 14228 var $focusTarget = $contentContainer.find('a:visible')[anchorIndexHelper.getIndex()]; 14229 if ($focusTarget) { 14230 $focusTarget.focus(); 14231 } 14232} 14233 14234/** 14235 * Find the initial anchor item for slotted content 14236 * @param {HTMLElement} thisLi current li item 14237 */ 14238function findAnchorItem(thisLi) { 14239 openMenuItemSafe($(thisLi)); 14240 var $contentAssetContainer = $(thisLi).find('.sitenav__category-content').first(); 14241 var maxFocusRetries = 6; 14242 var retryDelayMs = 75; 14243 var focusFirstVisibleAnchor = function focusFirstVisibleAnchor() { 14244 var $anchorFocusTarget = $contentAssetContainer.find('a:visible').first(); 14245 if ($anchorFocusTarget.length) { 14246 anchorIndexHelper.setIndex(0); 14247 $anchorFocusTarget.focus(); 14248 return true; 14249 } 14250 return false; 14251 }; 14252 var scheduleAnchorFocusRetry = function scheduleAnchorFocusRetry(attempt) { 14253 if (attempt >= maxFocusRetries) { 14254 return; 14255 } 14256 setTimeout(function () { 14257 if (!focusFirstVisibleAnchor()) { 14258 scheduleAnchorFocusRetry(attempt + 1); 14259 } 14260 }, retryDelayMs); 14261 }; 14262 if (anchorIndexHelper.getIndex() > 0) { 14263 anchorIndexHelper.setIndex(0); 14264 } 14265 if (focusFirstVisibleAnchor()) { 14266 return; 14267 } 14268 if ($contentAssetContainer.length) { 14269 if (!$contentAssetContainer.is('[tabindex]')) { 14270 $contentAssetContainer.attr('tabindex', '-1'); 14271 } 14272 14273 // Focusing the container expands desktop mega-menu (:focus-within), 14274 // making links visible for keyboard navigation. 14275 anchorIndexHelper.setIndex(-1); 14276 $contentAssetContainer.focus(); 14277 14278 // Allow transition/rendering to complete before resolving visible anchors. 14279 window.requestAnimationFrame(function () { 14280 if (!focusFirstVisibleAnchor()) { 14281 scheduleAnchorFocusRetry(0); 14282 } 14283 }); 14284 } else { 14285 closeMenuItemSafe($(thisLi)); 14286 } 14287} 14288 14289/** 14290 * Close menu and blur focused menu item 14291 * @param {HTMLElement} focused element the keyboard event was fired on 14292 */ 14293function closeMenu(focused) { 14294 closeMenuItemSafe($(focused)); 14295} 14296 14297/** 14298 * Navigate link 14299 * @param {HTMLElement} thisLi element the keyboard event was fired on 14300 */ 14301function navigateLink(thisLi) { 14302 $(thisLi).children('button, a')[0].click(); 14303} 14304 14305/** 14306 * Tab to previous menu item 14307 * @param {HTMLElement} thisLi element the keyboard event was fired on 14308 */ 14309function tabPrevItem(thisLi) { 14310 closeMenuItemSafe($(thisLi)).trigger('blur'); 14311 $(thisLi).prevAll('li:visible').first().trigger('focus'); 14312} 14313 14314/** 14315 * Tab to next menu item 14316 * @param {HTMLElement} thisLi element the keyboard event was fired on 14317 */ 14318function tabNextItem(thisLi) { 14319 closeMenuItemSafe($(thisLi)).trigger('blur'); 14320 $(thisLi).nextAll('li:visible').first().trigger('focus'); 14321} 14322 14323/** 14324 * Previous menu item 14325 * @param {HTMLElement} thisLi element the keyboard event was fired on 14326 */ 14327function previousMenuItem(thisLi) {
14328 var $focusTarget = $(thisLi).prevAll('li:visible').first(); 14329 closeMenuItemSafe($(thisLi)); 14330 $focusTarget.trigger('focus'); 14331} 14332 14333/** 14334 * Next menu item 14335 * @param {HTMLElement} thisLi element the keyboard event was fired on 14336 */ 14337function nextMenuItem(thisLi) { 14338 var $focusTarget = $(thisLi).nextAll('li:visible').first(); 14339 closeMenuItemSafe($(thisLi)); 14340 $focusTarget.trigger('focus'); 14341} 14342 14343/** 14344 * Previous menu level 14345 * @param {HTMLElement} previousLevel menu element to receive focus 14346 */ 14347function previousMenuLevel(previousLevel) { 14348 closeMenuItemSafe($(previousLevel).trigger('focus')); 14349} 14350 14351/** 14352 * Next menu level 14353 * @param {HTMLElement} thisLi element the keyboard event was fired on 14354 * @param {HTMLElement} nextLevel menu element to receive focus 14355 */ 14356function nextMenuLevel(thisLi, nextLevel) { 14357 // show menu so that :visible selector works 14358 var $focusTarget = $(thisLi).find(nextLevel).first(); 14359 // check if nextLevel can be focused 14360 if ($focusTarget.length) { 14361 closeMenuItemSafe($($focusTarget).siblings()); 14362 $($focusTarget).trigger('focus'); 14363 } else if ($(thisLi).find('.sitenav__category-content').length) { 14364 // check if there is slotted content 14365 module.exports.findAnchorItem($(thisLi)); 14366 } else { 14367 // hide menu if nextLevel can't be focused 14368 closeMenuItemSafe($(thisLi)); 14369 } 14370} 14371 14372/** 14373 * keyboard events for Skip to Main Nav link anchors in main menu 14374 */ 14375function skipLinkNav() { 14376 keyboardAccessibility('#skip-link-nav a:eq(1)', 14377 // grab 2nd link (Skip to Main Nav) in menu 14378 { 14379 13: function _() { 14380 // enter 14381 $(this).click(); // navigate to href value - #main-menu or sitenav-primaryul 14382 $('#main-menu').children(':first-child').focus(); // put first primary menu item in focus to open menu & override focus event on .sitenav__menu 14383 return true; 14384 } 14385 }, function () { 14386 $(this); 14387 }); 14388} 14389 14390/** 14391 * keyboard events for primary anchors in main menu 14392 */ 14393function primaryNav() { 14394 keyboardAccessibility('.sitenav-primary__li:not(.sitenav__search)', { 14395 9: function _($this, event) { 14396 // tab 14397 if (event.shiftKey && $this.prevAll('li:visible').length) { 14398 module.exports.tabPrevItem($this); 14399 return true; 14400 } else if (!event.shiftKey && $this.nextAll('li:visible').length) { 14401 module.exports.tabNextItem($this); 14402 return true; 14403 } 14404 module.exports.closeMenu(this); 14405 return false; 14406 }, 14407 13: function _() { 14408 // enter 14409 module.exports.navigateLink(this); 14410 }, 14411 27: function _() { 14412 // escape 14413 module.exports.closeMenu(this); 14414 }, 14415 38: function _() { 14416 // up 14417 return true; // prevent scroll 14418 }, 14419 14420 40: function _() { 14421 // down 14422 var navItemsSelector = '.sitenav-secondary__li:visible, .sitenav-tertiary__li:visible'; 14423 if ($(this).find(navItemsSelector).length) { 14424 module.exports.nextMenuLevel(this, navItemsSelector); 14425 } else if ($(this).find('.sitenav__category-content').length) { 14426 // check for slotted content 14427 module.exports.findAnchorItem($(this)); 14428 } 14429 return true; 14430 } 14431 }, function () { 14432 return $(this); 14433 }); 14434} 14435 14436/** 14437 * keyboard events for secondary anchors inside open flyout menu 14438 */ 14439function secondaryNav() { 14440 keyboardAccessibility('.sitenav-secondary__li', { 14441 13: function _() { 14442 // enter 14443 module.exports.navigateLink(this); 14444 return true; 14445 }, 14446 37: function _() { 14447 // left 14448 if ($(this).prevAll('li:visible').length) { 14449 module.exports.previousMenuItem(this); 14450 } 14451 return true; 14452 }, 14453 38: function _(parentLi) { 14454 // up 14455 if ($(this).prevAll('li:visible').length) { 14456 module.exports.previousMenuItem(this); 14457 } else { 14458 module.exports.previousMenuLevel(parentLi); 14459 } 14460 return true; 14461 }, 14462 39: function _() { 14463 // right 14464 if ($(this).nextAll('li:visible').length) { 14465 module.exports.nextMenuItem(this); 14466 } else if ($(this).closest('.sitenav-primary__li:not(.sitenav__search)').find('.sitenav__category-content').length) { 14467 // check for slotted content 14468 module.exports.findAnchorItem($(this).closest('.sitenav-primary__li:not(.sitenav__search)')); 14469 } 14470 return true; 14471 }, 14472 40: function _() { 14473 // down 14474 if ($(this).find('li:visible').length) { 14475 module.exports.nextMenuLevel(this, 'li:visible'); 14476 } else if ($(this).nextAll('li:visible').length) { 14477 module.exports.nextMenuItem(this); 14478 } else if ($(this).closest('.sitenav-primary__li:not(.sitenav__search)').find('.sitenav__category-content').length) { 14479 // check for slotted content 14480 module.exports.findAnchorItem($(this).closest('.sitenav-primary__li:not(.sitenav__search)')); 14481 } 14482 return true; 14483 } 14484 }, function () { 14485 return $(this).closest('.sitenav-primary__li'); 14486 }); 14487} 14488 14489/** 14490 * keyboard events for tertiary anchors inside open flyout menu 14491 */ 14492function tertiaryNav() { 14493 keyboardAccessibility('.sitenav-tertiary__li', { 14494 13: function _() { 14495 // enter 14496 module.exports.navigateLink(this); 14497 return true; 14498 }, 14499 38: function _(parentLi) { 14500 // up 14501 if ($(this).prevAll('li:visible').length) { 14502 module.exports.previousMenuItem(this); 14503 } else { 14504 module.exports.previousMenuLevel(parentLi); 14505 } 14506 return true; 14507 }, 14508 40: function _(parentLi) { 14509 // down 14510 if ($(this).nextAll('li:visible').length) { 14511 module.exports.nextMenuItem(this); 14512 } else if ($(parentLi).nextAll('li:visible').length) { 14513 module.exports.nextMenuItem(parentLi); 14514 } else if ($(this).closest('.sitenav-primary__li:not(.sitenav__search)').find('.sitenav__category-content').length) { 14515 // check for slotted content 14516 module.exports.findAnchorItem($(this).closest('.sitenav-primary__li:not(.sitenav__search)')); 14517 } 14518 return true; 14519 } 14520 }, function () { 14521 return $(this).closest('.sitenav-secondary__li'); 14522 }); 14523} 14524 14525/** 14526 * keyboard navigation for slotted content in nav 14527 */ 14528function sitenavCategoryContent() { 14529 keyboardAccessibility('.sitenav__category-content', { 14530 37: function _() { 14531 // left 14532 var $this = $(this); 14533 if ($this.find('a:visible').length) { 14534 var $prevSecondaryLi = $this.parent().children('li:visible').last(); 14535 previousAnchorItem($this, $prevSecondaryLi); 14536 } 14537 return true; 14538 }, 14539 38: function _(parentLi) { 14540 // up 14541 var $this = $(this); 14542 if (anchorIndexHelper.getIndex() === 0) { 14543 var $prevSecondaryLi = $this.parent().children('li:visible').last(); 14544 if ($prevSecondaryLi.length) { 14545 // check if secondary navigation items exist 14546 previousAnchorItem($this, $prevSecondaryLi); 14547 } else { 14548 previousMenuLevel(parentLi); 14549 } 14550 } else if ($this.find('a:visible').length) { 14551 previousAnchorItem($this); 14552 } 14553 return true; 14554 }, 14555 40: function _() { 14556 // down 14557 var $this = $(this); 14558 if ($this.find('a:visible').length) { 14559 nextAnchorItem($this); 14560 } 14561 return true; 14562 }, 14563 39: function _() { 14564 // right 14565 var $this = $(this); 14566 if ($this.find('a:visible').length) { 14567 nextAnchorItem($this); 14568 } 14569 return true; 14570 } 14571 }, function () { 14572 return $(this).closest('.sitenav-primary__li'); 14573 }); 14574} 14575 14576/** 14577 * Initialize keyboard event listeners 14578 */
14579function init() { 14580 module.exports.skipLinkNav(); 14581 module.exports.primaryNav(); 14582 module.exports.secondaryNav(); 14583 module.exports.tertiaryNav(); 14584 module.exports.sitenavCategoryContent(); 14585} 14586module.exports = { 14587 init: init, 14588 skipLinkNav: skipLinkNav, 14589 primaryNav: primaryNav, 14590 secondaryNav: secondaryNav, 14591 tertiaryNav: tertiaryNav, 14592 closeMenu: closeMenu, 14593 navigateLink: navigateLink, 14594 tabPrevItem: tabPrevItem, 14595 tabNextItem: tabNextItem, 14596 previousMenuItem: previousMenuItem, 14597 nextMenuItem: nextMenuItem, 14598 previousMenuLevel: previousMenuLevel, 14599 nextMenuLevel: nextMenuLevel, 14600 anchorIndexHelper: anchorIndexHelper, 14601 findAnchorItem: findAnchorItem, 14602 previousAnchorItem: previousAnchorItem, 14603 nextAnchorItem: nextAnchorItem, 14604 sitenavCategoryContent: sitenavCategoryContent 14605}; 14606 14607/***/ }), 14608
14609/***/ "./cartridges/app_brand_core/cartridge/client/default/js/components/keyboardAccessibility.js": 14610/*!***************************************************************************************************!*\ 14611 !*** ./cartridges/app_brand_core/cartridge/client/default/js/components/keyboardAccessibility.js ***! 14612 \***************************************************************************************************/ 14613/*! no static exports found */ 14614/***/ (function(module, exports, __webpack_require__) { 14615 14616"use strict"; 14617 14618 14619var _ = __webpack_require__(/*! underscore */ "./node_modules/underscore/modules/index-all.js"); 14620 14621/** 14622 * Usage: 14623 * 14624 * var keyboardAccessibility = require('./keyboardAccessibility'); 14625 * 14626 * keyboardAccessibility('.main-menu .sitenav-primary-a', // <-- Selector for keydown event 14627 * { 14628 * // Keycode and function handler 14629 * 40: function (menuItem) { // down 14630 * if (menuItem.hasClass('nav-item')) { // top level 14631 * $('.navbar-nav .show').removeClass('show') 14632 * .children('.dropdown-menu') 14633 * .removeClass('show'); 14634 * menuItem.addClass('show').children('.dropdown-menu').addClass('show'); 14635 * $(this).attr('aria-expanded', 'true'); 14636 * menuItem.find('ul > li > a') 14637 * .first() 14638 * .focus(); 14639 * return true; // <-- Prevent default 14640 * } else { 14641 * menuItem.removeClass('show').children('.dropdown-menu').removeClass('show'); 14642 * $(this).attr('aria-expanded', 'false'); 14643 * menuItem.next().children().first().focus(); 14644 * return true; // <-- Prevent default 14645 * } 14646 * return false; // <-- Allow default 14647 * }, 14648 * 39: function (menuItem) { // right 14649 * // Another function 14650 * } 14651 * }, 14652 * function () { 14653 * // Prefunction call which passes a jQuery object to the above function. 14654 * return $(this).parent(); 14655 * } 14656 * ); 14657 */ 14658 14659var buildFunction = function buildFunction(keyFunctions, preFunction, event, scope) { 14660 var key = event.which; 14661 var returnedScope = preFunction.call(scope, event); 14662 if (keyFunctions[key]) { 14663 var preventEvent = keyFunctions[key].call(scope, returnedScope, event); 14664 if (preventEvent) { 14665 // Generally not needed to block keyboard event unless you want 14666 // to prevent browser behavior. Tab key is a good example. 14667 // Or blocking up/down to prevent window scrolling. 14668 event.stopPropagation(); 14669 event.preventDefault(); 14670 } 14671 } 14672}; 14673module.exports = function (selector, keyFunctions, preFunction, delegatedSelector) { 14674 if (delegatedSelector) { 14675 $(delegatedSelector).on('keydown', selector, function (e) { 14676 _.throttle(buildFunction(keyFunctions, preFunction, e, this), 100); 14677 }); 14678 } else { 14679 $(selector).on('keydown', function (e) { 14680 _.throttle(buildFunction(keyFunctions, preFunction, e, this), 100); 14681 }); 14682 } 14683}; 14684 14685/***/ }), 14686
14687/***/ "./cartridges/app_brand_core/cartridge/client/default/js/components/search.js": 14688/*!************************************************************************************!*\ 14689 !*** ./cartridges/app_brand_core/cartridge/client/default/js/components/search.js ***! 14690 \************************************************************************************/ 14691/*! no static exports found */ 14692/***/ (function(module, exports, __webpack_require__) { 14693 14694"use strict"; 14695/* WEBPACK VAR INJECTION */(function(global) { 14696 14697function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 14698var keyboardNav = __webpack_require__(/*! ./searchKeyboardNav */ "./cartridges/app_brand_core/cartridge/client/default/js/components/searchKeyboardNav.js"); 14699var endpoint = $('.suggestions-wrapper').data('url'); 14700var minChars = 3; 14701var headerSearchContainerSelector = '.js-header-search'; 14702var Cookies = global.Cookies = __webpack_require__(/*! js-cookie/src/js.cookie */ "./node_modules/js-cookie/src/js.cookie.js"); 14703 14704/** 14705 * Retrieves Suggestions element relative to scope 14706 * 14707 * @param {Object} scope - Search input field DOM element 14708 * @return {JQuery} - .suggestions-wrapper element 14709 */ 14710function getSuggestionsWrapper(scope) { 14711 var $searchContainer = $(scope).closest(headerSearchContainerSelector); 14712 var $wrapper = $searchContainer.find('.suggestions-wrapper'); 14713 return $wrapper; 14714} 14715 14716/** 14717 * Suggestions wrapper toggle 14718 * 14719 * @param {Object} scope - Search field DOM element 14720 */ 14721function toggleSuggestionsWrapperContent(scope) { 14722 var $suggestionsWrapper = module.exports.getSuggestionsWrapper(scope); 14723 $suggestionsWrapper.removeClass('d-none').addClass('d-block'); 14724 var $quicklinks = $suggestionsWrapper.find('.js-search-quicklinks'); 14725 var $suggestions = $suggestionsWrapper.find('.js-search-suggestions'); 14726 if ($suggestions.text().replace(/\s/g, '').length !== 0) { 14727 $quicklinks.removeClass('d-block').addClass('d-none'); 14728 $suggestions.removeClass('d-none').addClass('d-block'); 14729 } else { 14730 $suggestions.removeClass('d-block').addClass('d-none'); 14731 if ($(scope).val()) { 14732 $quicklinks.removeClass('d-block').addClass('d-none'); 14733 } else { 14734 $quicklinks.removeClass('d-none').addClass('d-block'); 14735 } 14736 } 14737} 14738 14739/** 14740 * In the 'did you mean' section, highlight the search text entered by user 14741 * @param {string} searchText - Search text entered by user 14742 */ 14743function highlightSearchKeywords(searchText) { 14744 if ($('.suggestions__items--did-you-mean-term').length) { 14745 var $suggestionTextElem = $('.suggestions__items--did-you-mean-term a').eq(0); 14746 var suggestionText = $suggestionTextElem.text(); 14747 var matchStart = suggestionText.toLowerCase().indexOf('' + searchText.toLowerCase() + ''); 14748 if (matchStart !== -1) { 14749 var matchEnd = matchStart + searchText.length; 14750 var beforeMatch = suggestionText.slice(0, matchStart); 14751 var matchText = suggestionText.slice(matchStart, matchEnd); 14752 var afterMatch = suggestionText.slice(matchEnd); 14753 $suggestionTextElem.html(beforeMatch + '<em>' + matchText + '</em>' + afterMatch); 14754 } 14755 } 14756} 14757 14758/** 14759 * Process Ajax response for SearchServices-GetSuggestions 14760 * 14761 * @param {Object|string} response - Empty object literal if null response or string with rendered 14762 * suggestions template contents 14763 */ 14764function processResponse(response) { 14765 var $suggestionsWrapper = module.exports.getSuggestionsWrapper(this); 14766 var $suggestions = $suggestionsWrapper.find('.js-search-suggestions'); 14767 $suggestions.empty(); 14768 if (_typeof(response) !== 'object') { 14769 $suggestions.append(response); 14770 module.exports.highlightSearchKeywords($(this).val()); 14771 } 14772 module.exports.toggleSuggestionsWrapperContent(this); 14773} 14774 14775/** 14776 * Retrieve suggestions via 14777 * 14778 * @param {Object} scope - Search field DOM element 14779 */ 14780function getSuggestions(scope) { 14781 if ($(scope).val().length >= minChars) { 14782 $.ajax({ 14783 context: scope, 14784 url: endpoint + encodeURIComponent($(scope).val()), 14785 method: 'GET', 14786 success: module.exports.processResponse 14787 }); 14788 } else { 14789 $('.js-search-suggestions').empty(); 14790 module.exports.toggleSuggestionsWrapperContent(scope); 14791 } 14792} 14793 14794/** 14795 * Tear down search and close popover 14796 * @param {jQuery} $target jquery reference to target element 14797 */ 14798function tearDownSearch($target) { 14799 $(headerSearchContainerSelector).removeClass('js-show-search expanded'); 14800 $('.suggestions-wrapper').removeClass('d-block').addClass('d-none'); 14801 if ($target && $target.hasClass('js-action-search-close')) { 14802 $('.js-search-suggestions').empty(); 14803 $('.js-search-field').val(''); 14804 } 14805 $.enableScroll(); 14806} 14807 14808/** 14809 * Open Desktop Search 14810 * @param {jQuery} $searchOpen jquery reference search element to open 14811 */ 14812function openDesktopSearch($searchOpen) { 14813 $.disableScroll(); 14814 $searchOpen.addClass('expanded'); 14815 $('.js-search-field', $searchOpen).trigger('focus'); 14816 // close search when it loses focus 14817 $searchOpen.loseFocus(tearDownSearch, '.globalbanner, header, .page, footer'); 14818} 14819 14820/** 14821 * Open Mobile Search 14822 * @param {jQuery} $searchOpen jquery reference search element to open 14823 */ 14824function openMobileSearch($searchOpen) { 14825 $.disableScroll(); 14826 $searchOpen.addClass('js-show-search'); 14827 $('.js-search-field', $searchOpen).trigger('focus'); 14828 $('.refinement-bar button.close').trigger('click'); // close refinement bar on mobile 14829} 14830 14831/** 14832 * Search event handlers 14833 */ 14834function suggestionKeyHandler() { 14835 keyboardNav.init(); 14836 $('input.js-search-field').each(function () { 14837 var tabKey = 9; 14838 var timeout = null; 14839 $(this).on('keyup', function (e) { 14840 if (e.which !== tabKey) { 14841 clearTimeout(timeout); 14842 // Make a new timeout set to go off in 800ms 14843 timeout = setTimeout(function () { 14844 return module.exports.getSuggestions(e.target); 14845 }, 500); 14846 } 14847 }); 14848 $(this).on('focus', function () { 14849 $.disableScroll(); 14850 module.exports.toggleSuggestionsWrapperContent(this); 14851 }); 14852 }); 14853} 14854 14855/** 14856 * JS action events search 14857 */ 14858function suggestionClickHandler() { 14859 $('body').on('click', '.suggestions__items--did-you-mean a, .suggestions__items--
14859product a, .suggestions__items--category a, .suggestions__items--content a, .quicklinks a', function (e) { 14860 e.preventDefault(); 14861 var searchElement; 14862 var searchMethod = $(this).data('searchmethod'); 14863 if (searchMethod === 'quicklinksSearch') { 14864 searchElement = this.innerText; 14865 } 14866 var redirectURL = $(this).attr('href'); 14867 var cookieName = 'searchMethodCookie'; 14868 Cookies.set(cookieName, { 14869 searchMethod: searchMethod, 14870 searchElement: searchElement 14871 }, { 14872 expires: 1 14873 }); 14874 if (redirectURL) { 14875 window.location.href = redirectURL; 14876 } 14877 }); 14878} 14879 14880/** 14881 * JS action events search 14882 */ 14883function searchSubmitHandler() { 14884 // Setting data analytics search method for manual search. 14885 $('.js-header-search form, .js-search-popover form').on('submit', function (e) { 14886 e.preventDefault(); 14887 14888 // Avoid an unnecessary post to the server by catching an empty search entry 14889 var searchValue = $(this).find('.js-search-field').val().trim(); 14890 if (searchValue) { 14891 var searchMethod = $(this).data('searchmethod'); 14892 var cookieName = 'searchMethodCookie'; 14893 Cookies.set(cookieName, { 14894 searchMethod: searchMethod 14895 }, { 14896 expires: 1 14897 }); 14898 $(this)[0].submit(); 14899 } 14900 }); 14901} 14902 14903/** 14904 * JS action events search 14905 */ 14906function searchClickOpenHandler() { 14907 $('.js-action-search').on('click', function (e) { 14908 e.preventDefault(); 14909 var $searchContainer = $(e.target).closest(headerSearchContainerSelector); 14910 if ($searchContainer.hasClass('search-mobile')) { 14911 module.exports.openMobileSearch($searchContainer); 14912 } else { 14913 module.exports.openDesktopSearch($searchContainer); 14914 } 14915 }); 14916} 14917 14918/** 14919 * JS action search close 14920 */ 14921function searchClickCloseHandler() { 14922 $('.js-action-search-close').on('click', function (e) { 14923 e.preventDefault(); 14924 module.exports.tearDownSearch($(e.currentTarget)); 14925 }); 14926} 14927 14928/** 14929 * To call all search events 14930 */ 14931function searchEvents() { 14932 module.exports.suggestionKeyHandler(); 14933 module.exports.suggestionClickHandler(); 14934 module.exports.searchSubmitHandler(); 14935 module.exports.searchClickOpenHandler(); 14936 module.exports.searchClickCloseHandler(); 14937} 14938 14939/** 14940 * Function for child classes to call for initialization 14941 */ 14942function init() { 14943 module.exports.keyboardNav.init(); 14944 module.exports.searchEvents(); 14945} 14946module.exports = { 14947 // expose methods for use within brand cartridges 14948 getSuggestionsWrapper: getSuggestionsWrapper, 14949 toggleSuggestionsWrapperContent: toggleSuggestionsWrapperContent, 14950 highlightSearchKeywords: highlightSearchKeywords, 14951 processResponse: processResponse,
14952 getSuggestions: getSuggestions, 14953 tearDownSearch: tearDownSearch, 14954 openDesktopSearch: openDesktopSearch, 14955 openMobileSearch: openMobileSearch, 14956 suggestionKeyHandler: suggestionKeyHandler, 14957 searchClickOpenHandler: searchClickOpenHandler, 14958 searchClickCloseHandler: searchClickCloseHandler, 14959 searchSubmitHandler: searchSubmitHandler, 14960 suggestionClickHandler: suggestionClickHandler, 14961 searchEvents: searchEvents, 14962 init: init, 14963 headerSearchContainerSelector: headerSearchContainerSelector, 14964 keyboardNav: keyboardNav 14965}; 14966/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) 14967 14968/***/ }), 14969
14970/***/ "./cartridges/app_brand_core/cartridge/client/default/js/components/searchKeyboardNav.js": 14971/*!***********************************************************************************************!*\ 14972 !*** ./cartridges/app_brand_core/cartridge/client/default/js/components/searchKeyboardNav.js ***! 14973 \***********************************************************************************************/ 14974/*! no static exports found */ 14975/***/ (function(module, exports, __webpack_require__) { 14976 14977"use strict"; 14978 14979 14980var keyboardAccessibility = __webpack_require__(/*! ./keyboardAccessibility */ "./cartridges/app_brand_core/cartridge/client/default/js/components/keyboardAccessibility.js"); 14981var headerSearchContainerSelector = '.js-header-search'; 14982var searchField = '.js-search-field'; 14983var searchLinkContainer = '.suggestions-wrapper'; 14984 14985/** 14986 * Tab to previous link 14987 * @param {HTMLElement} $thisLink element the keyboard event was fired on 14988 */ 14989function tabPrevItem($thisLink) { 14990 var $searchLinks = $thisLink.closest(searchLinkContainer).find('a:visible, button:visible'); 14991 var nextLinkIndex = $searchLinks.has($thisLink) ? $searchLinks.index($thisLink) - 1 : 0; 14992 if (nextLinkIndex >= 0) { 14993 $($searchLinks[nextLinkIndex]).trigger('focus'); 14994 } else { 14995 $(searchField).trigger('focus'); 14996 } 14997} 14998 14999/** 15000 * Tab to next link 15001 * @param {HTMLElement} $thisLink element the keyboard event was fired on 15002 */ 15003function tabNextItem($thisLink) { 15004 var $searchLinks = $thisLink.closest(searchLinkContainer).find('a:visible, button:visible'); 15005 var nextLinkIndex = $searchLinks.has($thisLink) ? $searchLinks.index($thisLink) + 1 : 0; 15006 if (nextLinkIndex < $searchLinks.length) { 15007 $($searchLinks[nextLinkIndex]).trigger('focus'); 15008 } 15009} 15010 15011/** 15012 * Keyboard events for search in the header 15013 */ 15014function keyboardEvents() { 15015 keyboardAccessibility(headerSearchContainerSelector, { 15016 27: function _() { 15017 // escape 15018 $(searchField).trigger('focus'); 15019 } 15020 }, function () {}); 15021 keyboardAccessibility(searchField, { 15022 40: function _($searchForm) { 15023 // down 15024 $searchForm.find(searchLinkContainer).find('a:visible, button:visible').first().trigger('focus'); 15025 return true; // prevent scroll 15026 } 15027 }, function () { 15028 return $(this).closest('form'); 15029 }); 15030 keyboardAccessibility('.suggestions a, .suggestions button', { 15031 13: function _() { 15032 // enter 15033 this.click(); 15034 return true; 15035 }, 15036 38: function _($thisLink) { 15037 // up 15038 tabPrevItem($thisLink); 15039 return true; // prevent scroll 15040 }, 15041 15042 40: function _($thisLink) { 15043 // down 15044 tabNextItem($thisLink); 15045 return true; // prevent scroll 15046 } 15047 }, function () { 15048 return $(this); 15049 }, searchLinkContainer // delegated selector 15050 ); 15051} 15052 15053module.exports = { 15054 init: keyboardEvents 15055}; 15056 15057/***/ }), 15058
15059/***/ "./cartridges/app_storefront_base/cartridge/client/default/js/components/focus.js": 15060/*!****************************************************************************************!*\ 15061 !*** ./cartridges/app_storefront_base/cartridge/client/default/js/components/focus.js ***! 15062 \****************************************************************************************/ 15063/*! no static exports found */ 15064/***/ (function(module, exports, __webpack_require__) { 15065 15066"use strict"; 15067 15068 15069module.exports = { 15070 setTabNextFocus: function setTabNextFocus(focusParams) { 15071 var KEYCODE_TAB = 9; 15072 var isTabPressed = focusParams.event.key === 'Tab' || focusParams.event.keyCode === KEYCODE_TAB; 15073 if (!isTabPressed) { 15074 return; 15075 } 15076 var firstFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.firstElementSelector); 15077 var lastFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.lastElementSelector); 15078 if ($(focusParams.containerSelector + ' ' + focusParams.lastElementSelector).is(':disabled')) { 15079 lastFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.nextToLastElementSelector); 15080 if ($('.product-quickview.product-set').length > 0) { 15081 var linkElements = $(focusParams.containerSelector + ' a#fa-link.share-icons'); 15082 lastFocusableEl = linkElements[linkElements.length - 1]; 15083 } 15084 } 15085 if (focusParams.event.shiftKey) /* shift + tab */{ 15086 if ($(':focus').is(firstFocusableEl)) {
15087 lastFocusableEl.focus(); 15088 focusParams.event.preventDefault(); 15089 } 15090 } else /* tab */{ 15091 if ($(':focus').is(lastFocusableEl)) { 15092 // eslint-disable-line 15093 firstFocusableEl.focus(); 15094 focusParams.event.preventDefault(); 15095 } 15096 } 15097 } 15098}; 15099 15100/***/ }), 15101
15102/***/ "./cartridges/app_storefront_base/cartridge/client/default/js/product/base.js": 15103/*!************************************************************************************!*\ 15104 !*** ./cartridges/app_storefront_base/cartridge/client/default/js/product/base.js ***! 15105 \************************************************************************************/ 15106/*! no static exports found */ 15107/***/ (function(module, exports, __webpack_require__) { 15108 15109"use strict"; 15110 15111 15112var focusHelper = __webpack_require__(/*! ../components/focus */ "./cartridges/app_storefront_base/cartridge/client/default/js/components/focus.js"); 15113 15114/** 15115 * Retrieves the relevant pid value 15116 * @param {jquery} $el - DOM container for a given add to cart button 15117 * @return {string} - value to be used when adding product to cart 15118 */ 15119function getPidValue($el) { 15120 var pid; 15121 if ($('#quickViewModal').hasClass('show') && !$('.product-set').length) { 15122 pid = $($el).closest('.modal-content').find('.product-quickview').data('pid'); 15123 } else if ($('.product-set-detail').length || $('.product-set').length) { 15124 pid = $($el).closest('.product-detail').find('.product-id').text(); 15125 } else { 15126 pid = $('.product-detail:not(".bundle-item")').data('pid'); 15127 } 15128 return pid; 15129} 15130 15131/** 15132 * Retrieve contextual quantity selector 15133 * @param {jquery} $el - DOM container for the relevant quantity 15134 * @return {jquery} - quantity selector DOM container 15135 */ 15136function getQuantitySelector($el) { 15137 var quantitySelected; 15138 if ($el && $('.set-items').length) { 15139 quantitySelected = $($el).closest('.product-detail').find('.quantity-select'); 15140 } else if ($el && $('.product-bundle').length) { 15141 var quantitySelectedModal = $($el).closest('.modal-footer').find('.quantity-select'); 15142 var quantitySelectedPDP = $($el).closest('.bundle-footer').find('.quantity-select'); 15143 if (quantitySelectedModal.val() === undefined) { 15144 quantitySelected = quantitySelectedPDP; 15145 } else { 15146 quantitySelected = quantitySelectedModal; 15147 } 15148 } else { 15149 quantitySelected = $('.quantity-select'); 15150 } 15151 return quantitySelected; 15152} 15153 15154/** 15155 * Retrieves the value associated with the Quantity pull-down menu 15156 * @param {jquery} $el - DOM container for the relevant quantity 15157 * @return {string} - value found in the quantity input 15158 */ 15159function getQuantitySelected($el) { 15160 return getQuantitySelector($el).val(); 15161} 15162 15163/** 15164 * Process the attribute values for an attribute that has image swatches 15165 * 15166 * @param {Object} attr - Attribute 15167 * @param {string} attr.id - Attribute ID 15168 * @param {Object[]} attr.values - Array of attribute value objects 15169 * @param {string} attr.values.value - Attribute coded value 15170 * @param {string} attr.values.url - URL to de/select an attribute value of the product 15171 * @param {boolean} attr.values.isSelectable - Flag as to whether an attribute value can be 15172 * selected. If there is no variant that corresponds to a specific combination of attribute 15173 * values, an attribute may be disabled in the Product Detail Page 15174 * @param {jQuery} $productContainer - DOM container for a given product 15175 * @param {Object} msgs - object containing resource messages 15176 */ 15177function processSwatchValues(attr, $productContainer, msgs) { 15178 attr.values.forEach(function (attrValue) { 15179 var $attrValue = $productContainer.find('[data-attr="' + attr.id + '"] [data-attr-value="' + attrValue.value + '"]'); 15180 var $swatchButton = $attrValue.parent(); 15181 if (attrValue.selected) { 15182 $attrValue.addClass('selected'); 15183 $attrValue.siblings('.selected-assistive-text').text(msgs.assistiveSelectedText); 15184 } else { 15185 $attrValue.removeClass('selected'); 15186 $attrValue.siblings('.selected-assistive-text').empty(); 15187 } 15188 if (attrValue.url) { 15189 $swatchButton.attr('data-url', attrValue.url); 15190 } else { 15191 $swatchButton.removeAttr('data-url'); 15192 } 15193 15194 // Disable if not selectable 15195 $attrValue.removeClass('selectable unselectable'); 15196 $attrValue.addClass(attrValue.selectable ? 'selectable' : 'unselectable'); 15197 }); 15198} 15199 15200/** 15201 * Process attribute values associated with an attribute that does not have image swatches 15202 * 15203 * @param {Object} attr - Attribute 15204 * @param {string} attr.id - Attribute ID 15205 * @param {Object[]} attr.values - Array of attribute value objects 15206 * @param {string} attr.values.value - Attribute coded value 15207 * @param {string}
15207 attr.values.url - URL to de/select an attribute value of the product 15208 * @param {boolean} attr.values.isSelectable - Flag as to whether an attribute value can be 15209 * selected. If there is no variant that corresponds to a specific combination of attribute 15210 * values, an attribute may be disabled in the Product Detail Page 15211 * @param {jQuery} $productContainer - DOM container for a given product 15212 */ 15213function processNonSwatchValues(attr, $productContainer) { 15214 var $attr = '[data-attr="' + attr.id + '"]'; 15215 var $defaultOption = $productContainer.find($attr + ' .select-' + attr.id + ' option:first'); 15216 $defaultOption.attr('value', attr.resetUrl); 15217 attr.values.forEach(function (attrValue) { 15218 var $attrValue = $productContainer.find($attr + ' [data-attr-value="' + attrValue.value + '"]'); 15219 $attrValue.attr('value', attrValue.url).removeAttr('disabled'); 15220 if (!attrValue.selectable) { 15221 $attrValue.attr('disabled', true); 15222 } 15223 }); 15224} 15225 15226/** 15227 * Routes the handling of attribute processing depending on whether the attribute has image 15228 * swatches or not 15229 * 15230 * @param {Object} attrs - Attribute 15231 * @param {string} attr.id - Attribute ID 15232 * @param {jQuery} $productContainer - DOM element for a given product 15233 * @param {Object} msgs - object containing resource messages 15234 */ 15235function updateAttrs(attrs, $productContainer, msgs) { 15236 // Currently, the only attribute type that has image swatches is Color. 15237 var attrsWithSwatches = ['color']; 15238 attrs.forEach(function (attr) { 15239 if (attrsWithSwatches.indexOf(attr.id) > -1) { 15240 processSwatchValues(attr, $productContainer, msgs); 15241 } else { 15242 processNonSwatchValues(attr, $productContainer); 15243 } 15244 }); 15245} 15246 15247/** 15248 * Updates the availability status in the Product Detail Page 15249 * 15250 * @param {Object} response - Ajax response object after an 15251 * attribute value has been [de]selected 15252 * @param {jQuery} $productContainer - DOM element for a given product 15253 */ 15254function updateAvailability(response, $productContainer) { 15255 var availabilityValue = ''; 15256 var availabilityMessages = response.product.availability.messages; 15257 if (!response.product.readyToOrder) { 15258 availabilityValue = '<li><div>' + response.resources.info_selectforstock + '</div></li>'; 15259 } else { 15260 availabilityMessages.forEach(function (message) { 15261 availabilityValue += '<li><div>' + message + '</div></li>'; 15262 }); 15263 } 15264 $($productContainer).trigger('product:updateAvailability', { 15265 product: response.product, 15266 $productContainer: $productContainer, 15267 message: availabilityValue, 15268 resources: response.resources 15269 }); 15270} 15271 15272/** 15273 * Generates html for product attributes section 15274 * 15275 * @param {array} attributes - list of attributes 15276 * @return {string} - Compiled HTML 15277 */ 15278function getAttributesHtml(attributes) { 15279 if (!attributes) { 15280 return ''; 15281 } 15282 var html = ''; 15283 attributes.forEach(function (attributeGroup) { 15284 if (attributeGroup.ID === 'mainAttributes') { 15285 attributeGroup.attributes.forEach(function (attribute) { 15286 html += '<div class="attribute-values">' + attribute.label + ': ' + attribute.value + '</div>'; 15287 }); 15288 } 15289 }); 15290 return html; 15291} 15292 15293/** 15294 * @typedef UpdatedOptionValue 15295 * @type Object 15296 * @property {string} id - Option value ID for look up 15297 * @property {string} url - Updated option value selection URL 15298 */ 15299 15300/** 15301 * @typedef OptionSelectionResponse 15302 * @type Object 15303 * @property {string} priceHtml - Updated price HTML code 15304 * @property {Object} options - Updated Options 15305 * @property {string} options.id - Option ID 15306 * @property {UpdatedOptionValue[]} options.values - Option values 15307 */ 15308 15309/** 15310 * Updates DOM using post-option selection Ajax response 15311 * 15312 * @param {OptionSelectionResponse} optionsHtml - Ajax response optionsHtml from selecting a product option 15313 * @param {jQuery} $productContainer - DOM element for current product 15314 */ 15315function updateOptions(optionsHtml, $productContainer) { 15316 // Update options 15317 $productContainer.find('.product-options').empty().html(optionsHtml); 15318} 15319 15320/** 15321 * Dynamically creates Bootstrap carousel from response containing images 15322 * @param {Object[]} imgs - Array of large product images,along with related information 15323 * @param {jQuery}
15323 $productContainer - DOM element for a given product 15324 */ 15325function createCarousel(imgs, $productContainer) { 15326 var carousel = $productContainer.find('.carousel'); 15327 $(carousel).carousel('dispose'); 15328 var carouselId = $(carousel).attr('id'); 15329 $(carousel).empty().append('<ol class="carousel-indicators"></ol><div class="carousel-inner" role="listbox"></div><a class="carousel-control-prev" href="#' + carouselId + '" role="button" data-slide="prev"><span class="fa icon-prev" aria-hidden="true"></span><span class="sr-only">' + $(carousel).data('prev') + '</span></a><a class="carousel-control-next" href="#' + carouselId + '" role="button" data-slide="next"><span class="fa icon-next" aria-hidden="true"></span><span class="sr-only">' + $(carousel).data('next') + '</span></a>'); 15330 for (var i = 0; i < imgs.length; i++) { 15331 $('<div class="carousel-item"><img src="' + imgs[i].url + '" class="d-block img-fluid" alt="' + imgs[i].alt + ' image number ' + parseInt(imgs[i].index, 10) + '" title="' + imgs[i].title + '" itemprop="image" /></div>').appendTo($(carousel).find('.carousel-inner')); 15332 $('<li data-target="#' + carouselId + '" data-slide-to="' + i + '" class=""></li>').appendTo($(carousel).find('.carousel-indicators')); 15333 } 15334 $($(carousel).find('.carousel-item')).first().addClass('active'); 15335 $($(carousel).find('.carousel-indicators > li')).first().addClass('active'); 15336 if (imgs.length === 1) { 15337 $($(carousel).find('.carousel-indicators, a[class^="carousel-control-"]')).detach(); 15338 } 15339 $(carousel).carousel(); 15340 $($(carousel).find('.carousel-indicators')).attr('aria-hidden', true); 15341} 15342 15343/** 15344 * Parses JSON from Ajax call made whenever an attribute value is [de]selected 15345 * @param {Object} response - response from Ajax call 15346 * @param {Object} response.product - Product object 15347 * @param {string} response.product.id - Product ID 15348 * @param {Object[]} response.product.variationAttributes - Product attributes 15349 * @param {Object[]} response.product.images - Product images 15350 * @param {boolean} response.product.hasRequiredAttrsSelected - Flag as to whether all required 15351 * attributes have been selected. Used partially to 15352 * determine whether the Add to Cart button can be enabled 15353 * @param {jQuery} $productContainer - DOM element for a given product. 15354 */ 15355function handleVariantResponse(response, $productContainer) { 15356 var isChoiceOfBonusProducts = $productContainer.parents('.choose-bonus-product-dialog').length > 0; 15357 var isVaraint; 15358 if (response.product.variationAttributes) { 15359 updateAttrs(response.product.variationAttributes, $productContainer, response.resources); 15360 isVaraint = response.product.productType === 'variant'; 15361 if (isChoiceOfBonusProducts && isVaraint) { 15362 $productContainer.parent('.bonus-product-item').data('pid', response.product.id); 15363 $productContainer.parent('.bonus-product-item').data('ready-to-order', response.product.readyToOrder); 15364 } 15365 } 15366 15367 // Update primary images 15368 var primaryImageUrls = response.product.images.large; 15369 createCarousel(primaryImageUrls, $productContainer); 15370 15371 // Update pricing 15372 if (!isChoiceOfBonusProducts) { 15373 var $priceSelector = $('.prices .price', $productContainer).length ? $('.prices .price', $productContainer) : $('.prices .price'); 15374 $priceSelector.replaceWith(response.product.price.html); 15375 } 15376 15377 // Update promotions 15378 $productContainer.find('.promotions').empty().html(response.product.promotionsHtml); 15379 updateAvailability(response, $productContainer); 15380 if (isChoiceOfBonusProducts) { 15381 var $selectButton = $productContainer.find('.select-bonus-product'); 15382 $selectButton.trigger('bonusproduct:updateSelectButton', { 15383 product: response.product, 15384 $productContainer: $productContainer 15385 }); 15386 } else { 15387 // Enable "Add to Cart" button if all required attributes have been selected 15388 $('button.add-to-cart, button.add-to-cart-global, button.update-cart-product-global').trigger('product:updateAddToCart', { 15389 product: response.product, 15390 $productContainer: $productContainer 15391 }).trigger('product:statusUpdate', response.product); 15392 } 15393 15394 // Update attributes
15395 $productContainer.find('.main-attributes').empty().html(getAttributesHtml(response.product.attributes)); 15396} 15397 15398/** 15399 * @typespec UpdatedQuantity 15400 * @type Object 15401 * @property {boolean} selected - Whether the quantity has been selected 15402 * @property {string} value - The number of products to purchase 15403 * @property {string} url - Compiled URL that specifies variation attributes, product ID, options, 15404 * etc. 15405 */ 15406 15407/** 15408 * Updates the quantity DOM elements post Ajax call 15409 * @param {UpdatedQuantity[]} quantities - 15410 * @param {jQuery} $productContainer - DOM container for a given product 15411 */ 15412function updateQuantities(quantities, $productContainer) { 15413 if ($productContainer.parent('.bonus-product-item').length <= 0) { 15414 var optionsHtml = quantities.map(function (quantity) { 15415 var selected = quantity.selected ? ' selected ' : ''; 15416 return '<option value="' + quantity.value + '" data-url="' + quantity.url + '"' + selected + '>' + quantity.value + '</option>'; 15417 }).join(''); 15418 getQuantitySelector($productContainer).empty().html(optionsHtml); 15419 } 15420} 15421 15422/** 15423 * updates the product view when a product attribute is selected or deselected or when 15424 * changing quantity 15425 * @param {string} selectedValueUrl - the Url for the selected variation value 15426 * @param {jQuery} $productContainer - DOM element for current product 15427 */ 15428function attributeSelect(selectedValueUrl, $productContainer) { 15429 if (selectedValueUrl) { 15430 $('body').trigger('product:beforeAttributeSelect', { 15431 url: selectedValueUrl, 15432 container: $productContainer 15433 }); 15434 $.ajax({ 15435 url: selectedValueUrl, 15436 method: 'GET', 15437 success: function success(data) { 15438 handleVariantResponse(data, $productContainer); 15439 updateOptions(data.product.optionsHtml, $productContainer); 15440 updateQuantities(data.product.quantities, $productContainer); 15441 $('body').trigger('product:afterAttributeSelect', { 15442 data: data, 15443 container: $productContainer 15444 }); 15445 $.spinner().stop(); 15446 }, 15447 error: function error() { 15448 $.spinner().stop(); 15449 } 15450 }); 15451 } 15452} 15453 15454/** 15455 * Retrieves url to use when adding a product to the cart 15456 * 15457 * @return {string} - The provided URL to use when adding a product to the cart 15458 */ 15459function getAddToCartUrl() { 15460 return $('.add-to-cart-url').val(); 15461} 15462 15463/** 15464 * Parses the html for a modal window 15465 * @param {string} html - representing the body and footer of the modal window 15466 * 15467 * @return {Object} - Object with properties body and footer. 15468 */ 15469function parseHtml(html) { 15470 var $html = $('<div>').append($.parseHTML(html)); 15471 var body = $html.find('.choice-of-bonus-product'); 15472 var footer = $html.find('.modal-footer').children(); 15473 return { 15474 body: body, 15475 footer: footer 15476 }; 15477} 15478 15479/** 15480 * Retrieves url to use when adding a product to the cart 15481 * 15482 * @param {Object} data - data object used to fill in dynamic portions of the html 15483 */ 15484function chooseBonusProducts(data) { 15485 $('.modal-body').spinner().start(); 15486 if ($('#chooseBonusProductModal').length !== 0) { 15487 $('#chooseBonusProductModal').remove(); 15488 } 15489 var bonusUrl; 15490 if (data.bonusChoiceRuleBased) { 15491 bonusUrl = data.showProductsUrlRuleBased; 15492 } else { 15493 bonusUrl = data.showProductsUrlListBased; 15494 } 15495 var htmlString = '<!-- Modal -->' + '<div class="modal fade" id="chooseBonusProductModal" tabindex="-1" role="dialog">' + '<span class="enter-message sr-only" ></span>' + '<div class="modal-dialog choose-bonus-product-dialog" ' + 'data-total-qty="' + data.maxBonusItems + '"' + 'data-UUID="' + data.uuid + '"' + 'data-pliUUID="' + data.pliUUID + '"' + 'data-addToCartUrl="' + data.addToCartUrl + '"' + 'data-pageStart="0"' + 'data-pageSize="' + data.pageSize + '"' + 'data-moreURL="' + data.showProductsUrlRuleBased + '"' + 'data-bonusChoiceRuleBased="' + data.bonusChoiceRuleBased + '">' + '<!-- Modal content-->' + '<div class="modal-content">' + '<div class="modal-header">' + ' <span class="">' + data.labels.selectprods + '</span>' + ' <button type="button" class="close pull-right" data-dismiss="modal">' + ' <span aria-hidden="true">×</span>
15495' + ' <span class="sr-only"> </span>' + ' </button>' + '</div>' + '<div class="modal-body"></div>' + '<div class="modal-footer"></div>' + '</div>' + '</div>' + '</div>'; 15496 $('body').append(htmlString); 15497 $('.modal-body').spinner().start(); 15498 $.ajax({ 15499 url: bonusUrl, 15500 method: 'GET', 15501 dataType: 'json', 15502 success: function success(response) { 15503 var parsedHtml = parseHtml(response.renderedTemplate); 15504 $('#chooseBonusProductModal .modal-body').empty(); 15505 $('#chooseBonusProductModal .enter-message').text(response.enterDialogMessage); 15506 $('#chooseBonusProductModal .modal-header .close .sr-only').text(response.closeButtonText); 15507 $('#chooseBonusProductModal .modal-body').html(parsedHtml.body); 15508 $('#chooseBonusProductModal .modal-footer').html(parsedHtml.footer); 15509 $('#chooseBonusProductModal').modal('show'); 15510 $.spinner().stop(); 15511 }, 15512 error: function error() { 15513 $.spinner().stop(); 15514 } 15515 }); 15516} 15517 15518/** 15519 * Updates the Mini-Cart quantity value after the customer has pressed the "Add to Cart" button 15520 * @param {string} response - ajax response from clicking the add to cart button 15521 */ 15522function handlePostCartAdd(response) { 15523 $('.minicart').trigger('count:update', response); 15524 var messageType = response.error ? 'alert-danger' : 'alert-success'; 15525 // show add to cart toast 15526 if (response.newBonusDiscountLineItem && Object.keys(response.newBonusDiscountLineItem).length !== 0) {
15527 chooseBonusProducts(response.newBonusDiscountLineItem); 15528 } else { 15529 if ($('.add-to-cart-messages').length === 0) { 15530 $('body').append('<div class="add-to-cart-messages"></div>'); 15531 } 15532 $('.add-to-cart-messages').append('<div class="alert ' + messageType + ' add-to-basket-alert text-center" role="alert">' + response.message + '</div>'); 15533 setTimeout(function () { 15534 $('.add-to-basket-alert').remove(); 15535 }, 5000); 15536 } 15537} 15538 15539/** 15540 * Retrieves the bundle product item ID's for the Controller to replace bundle master product 15541 * items with their selected variants 15542 * 15543 * @return {string[]} - List of selected bundle product item ID's 15544 */ 15545function getChildProducts() { 15546 var childProducts = []; 15547 $('.bundle-item').each(function () { 15548 childProducts.push({ 15549 pid: $(this).find('.product-id').text(), 15550 quantity: parseInt($(this).find('label.quantity').data('quantity'), 10) 15551 }); 15552 }); 15553 return childProducts.length ? JSON.stringify(childProducts) : []; 15554} 15555 15556/** 15557 * Retrieve product options 15558 * 15559 * @param {jQuery} $productContainer - DOM element for current product 15560 * @return {string} - Product options and their selected values 15561 */ 15562function getOptions($productContainer) { 15563 var options = $productContainer.find('.product-option').map(function () { 15564 var $elOption = $(this).find('.options-select'); 15565 var urlValue = $elOption.val(); 15566 var selectedValueId = $elOption.find('option[value="' + urlValue + '"]').data('value-id'); 15567 return { 15568 optionId: $(this).data('option-id'), 15569 selectedValueId: selectedValueId 15570 }; 15571 }).toArray(); 15572 return JSON.stringify(options); 15573} 15574 15575/** 15576 * Makes a call to the server to report the event of adding an item to the cart 15577 * 15578 * @param {string | boolean} url - a string representing the end point to hit so that the event can be recorded, or false 15579 */ 15580function miniCartReportingUrl(url) { 15581 if (url) { 15582 $.ajax({ 15583 url: url, 15584 method: 'GET', 15585 success: function success() { 15586 // reporting urls hit on the server 15587 }, 15588 error: function error() { 15589 // no reporting urls hit on the server 15590 } 15591 }); 15592 } 15593} 15594module.exports = { 15595 attributeSelect: attributeSelect, 15596 methods: { 15597 editBonusProducts: function editBonusProducts(data) { 15598 chooseBonusProducts(data); 15599 } 15600 }, 15601 focusChooseBonusProductModal: function focusChooseBonusProductModal() { 15602 $('body').on('shown.bs.modal', '#chooseBonusProductModal', function () { 15603 $('#chooseBonusProductModal').siblings().attr('aria-hidden', 'true'); 15604 $('#chooseBonusProductModal .close').focus(); 15605 }); 15606 }, 15607 onClosingChooseBonusProductModal: function onClosingChooseBonusProductModal() { 15608 $('body').on('hidden.bs.modal', '#chooseBonusProductModal', function () { 15609 $('#chooseBonusProductModal').siblings().attr('aria-hidden', 'false'); 15610 }); 15611 }, 15612 trapChooseBonusProductModalFocus: function trapChooseBonusProductModalFocus() { 15613 $('body').on('keydown', '#chooseBonusProductModal', function (e) { 15614 var focusParams = { 15615 event: e, 15616 containerSelector: '#chooseBonusProductModal', 15617 firstElementSelector: '.close', 15618 lastElementSelector: '.add-bonus-products' 15619 }; 15620 focusHelper.setTabNextFocus(focusParams); 15621 }); 15622 }, 15623 colorAttribute: function colorAttribute() { 15624 $(document).on('click', '[data-attr="color"] button', function (e) { 15625 e.preventDefault(); 15626 if ($(this).attr('disabled')) { 15627 return; 15628 } 15629 var $productContainer = $(this).closest('.set-item');
15630 if (!$productContainer.length) { 15631 $productContainer = $(this).closest('.product-detail'); 15632 } 15633 attributeSelect($(this).attr('data-url'), $productContainer); 15634 }); 15635 }, 15636 selectAttribute: function selectAttribute() { 15637 $(document).on('change', 'select[class*="select-"], .options-select', function (e) { 15638 e.preventDefault(); 15639 var $productContainer = $(this).closest('.set-item'); 15640 if (!$productContainer.length) { 15641 $productContainer = $(this).closest('.product-detail'); 15642 } 15643 attributeSelect(e.currentTarget.value, $productContainer); 15644 }); 15645 }, 15646 availability: function availability() { 15647 $(document).on('change', '.quantity-select', function (e) { 15648 e.preventDefault(); 15649 var $productContainer = $(this).closest('.product-detail'); 15650 if (!$productContainer.length) { 15651 $productContainer = $(this).closest('.modal-content').find('.product-quickview'); 15652 } 15653 if ($('.bundle-items', $productContainer).length === 0) { 15654 attributeSelect($(e.currentTarget).find('option:selected').data('url'), $productContainer); 15655 } 15656 }); 15657 }, 15658 addToCart: function addToCart() { 15659 $(document).on('click', 'button.add-to-cart, button.add-to-cart-global', function () { 15660 var addToCartUrl; 15661 var pid; 15662 var pidsObj; 15663 var setPids; 15664 $('body').trigger('product:beforeAddToCart', this); 15665 if ($('.set-items').length && $(this).hasClass('add-to-cart-global')) { 15666 setPids = []; 15667 $('.product-detail').each(function () { 15668 if (!$(this).hasClass('product-set-detail')) { 15669 setPids.push({ 15670 pid: $(this).find('.product-id').text(), 15671 qty: $(this).find('.quantity-select').val(), 15672 options: getOptions($(this)) 15673 }); 15674 } 15675 }); 15676 pidsObj = JSON.stringify(setPids); 15677 } 15678 pid = getPidValue($(this)); 15679 var $productContainer = $(this).closest('.product-detail');
15680 if (!$productContainer.length) { 15681 $productContainer = $(this).closest('.quick-view-dialog').find('.product-detail'); 15682 } 15683 addToCartUrl = getAddToCartUrl(); 15684 var form = { 15685 pid: pid, 15686 pidsObj: pidsObj, 15687 childProducts: getChildProducts(), 15688 quantity: getQuantitySelected($(this)) 15689 }; 15690 if (!$('.bundle-item').length) { 15691 form.options = getOptions($productContainer); 15692 } 15693 $(this).trigger('updateAddToCartFormData', form); 15694 if (addToCartUrl) { 15695 $.ajax({ 15696 url: addToCartUrl, 15697 method: 'POST', 15698 data: form, 15699 success: function success(data) { 15700 handlePostCartAdd(data); 15701 $('body').trigger('product:afterAddToCart', data); 15702 $.spinner().stop(); 15703 miniCartReportingUrl(data.reportingURL); 15704 }, 15705 error: function error() { 15706 $.spinner().stop(); 15707 } 15708 }); 15709 } 15710 }); 15711 }, 15712 selectBonusProduct: function selectBonusProduct() { 15713 $(document).on('click', '.select-bonus-product', function () { 15714 var $choiceOfBonusProduct = $(this).parents('.choice-of-bonus-product'); 15715 var pid = $(this).data('pid'); 15716 var maxPids = $('.choose-bonus-product-dialog').data('total-qty'); 15717 var submittedQty = parseInt($choiceOfBonusProduct.find('.bonus-quantity-select').val(), 10); 15718 var totalQty = 0; 15719 $.each($('#chooseBonusProductModal .selected-bonus-products .selected-pid'), function () { 15720 totalQty += $(this).data('qty'); 15721 }); 15722 totalQty += submittedQty; 15723 var optionID = $choiceOfBonusProduct.find('.product-option').data('option-id'); 15724 var valueId = $choiceOfBonusProduct.find('.options-select option:selected').data('valueId'); 15725 if (totalQty <= maxPids) { 15726 var selectedBonusProductHtml = '' + '<div class="selected-pid row" ' + 'data-pid="' + pid + '"' + 'data-qty="' + submittedQty + '"' + 'data-optionID="' + (optionID || '') + '"' + 'data-option-selected-value="' + (valueId || '') + '"' + '>' + '<div class="col-sm-11 col-9 bonus-product-name" >' + $choiceOfBonusProduct.find('.product-name').html() + '</div>' + '<div class="col-1"><i class="fa fa-times" aria-hidden="true"></i></div>' + '</div>'; 15727 $('#chooseBonusProductModal .selected-bonus-products').append(selectedBonusProductHtml); 15728 $('.pre-cart-products').html(totalQty); 15729 $('.selected-bonus-products .bonus-summary').removeClass('alert-danger'); 15730 } else { 15731 $('.selected-bonus-products .bonus-summary').addClass('alert-danger'); 15732 } 15733 }); 15734 }, 15735 removeBonusProduct: function removeBonusProduct() { 15736 $(document).on('click', '.selected-pid', function () { 15737 $(this).remove(); 15738 var $selected = $('#chooseBonusProductModal .selected-bonus-products .selected-pid'); 15739 var count = 0; 15740 if ($selected.length) { 15741 $selected.each(function () { 15742 count += parseInt($(this).data('qty'), 10); 15743 }); 15744 } 15745 $('.pre-cart-products').html(count); 15746 $('.selected-bonus-products .bonus-summary').removeClass('alert-danger'); 15747 }); 15748 }, 15749 enableBonusProductSelection: function enableBonusProductSelection() { 15750 $('body').on('bonusproduct:updateSelectButton', function (e, response) { 15751 $('button.select-bonus-product', response.$productContainer).attr('disabled', !response.product.readyToOrder || !response.product.available); 15752 var pid = response.product.id; 15753 $('button.select-bonus-product', response.$productContainer).data('pid', pid); 15754 }); 15755 }, 15756 showMoreBonusProducts: function showMoreBonusProducts() { 15757 $(document).on('click', '.show-more-bonus-products', function () { 15758 var url = $(this).data('url'); 15759 $('.modal-content').spinner().start(); 15760 $.ajax({ 15761 url: url, 15762 method: 'GET', 15763 success: function success(html) { 15764 var parsedHtml = parseHtml(html); 15765 $('.modal-body').append(parsedHtml.body); 15766 $('.show-more-bonus-products:first').remove(); 15767 $('.modal-content').spinner().stop(); 15768 }, 15769 error: function error() { 15770 $('.modal-content').spinner().stop(); 15771 } 15772 }); 15773 }); 15774 }, 15775 addBonusProductsToCart: function addBonusProductsToCart() { 15776 $(document).on('click', '.add-bonus-products', function () { 15777 var $readyToOrderBonusProducts = $('.choose-bonus-product-dialog .selected-pid'); 15778 var queryString = '?pids='; 15779 var url = $('.choose-bonus-product-dialog').data('addtocarturl'); 15780 var pidsObject = { 15781 bonusProducts: [] 15782 }; 15783 $.each($readyToOrderBonusProducts, function () { 15784 var qtyOption = parseInt($(this).data('qty'), 10); 15785 var option = null; 15786 if (qtyOption > 0) { 15787 if ($(this).data('optionid') && $(this).data('option-selected-value')) { 15788 option = {}; 15789 option.optionId = $(this).data('optionid'); 15790 option.productId = $(this).data('pid'); 15791 option.selectedValueId = $(this).data('option-selected-value'); 15792 } 15793 pidsObject.bonusProducts.push({ 15794 pid: $(this).data('pid'), 15795 qty: qtyOption, 15796 options: [option] 15797 }); 15798 pidsObject.totalQty = parseInt($('.pre-cart-products').html(), 10); 15799 } 15800 }); 15801 queryString += JSON.stringify(pidsObject); 15802 queryString = queryString + '&uuid=' + $('.choose-bonus-product-dialog').data('uuid'); 15803 queryString = queryString + '&pliuuid=' + $('.choose-bonus-product-dialog').data('pliuuid'); 15804 $.spinner().start(); 15805 $.ajax({ 15806 url: url + queryString, 15807 method: 'POST', 15808 success: function success(data) { 15809 $.spinner().stop(); 15810 if (data.error) { 15811 $('#chooseBonusProductModal').modal('hide'); 15812 if ($('.add-to-cart-messages').length === 0) { 15813 $('body').append('<div class="add-to-cart-messages"></div>'); 15814 } 15815 $('.add-to-cart-messages').append('<div class="alert alert-danger add-to-basket-alert text-center"' + ' role="alert">
15815' + data.errorMessage + '</div>'); 15816 setTimeout(function () { 15817 $('.add-to-basket-alert').remove(); 15818 }, 3000); 15819 } else { 15820 $('.configure-bonus-product-attributes').html(data); 15821 $('.bonus-products-step2').removeClass('hidden-xl-down'); 15822 $('#chooseBonusProductModal').modal('hide'); 15823 if ($('.add-to-cart-messages').length === 0) { 15824 $('body').append('<div class="add-to-cart-messages"></div>'); 15825 } 15826 $('.minicart-quantity').html(data.totalQty); 15827 $('.add-to-cart-messages').append('<div class="alert alert-success add-to-basket-alert text-center"' + ' role="alert">' + data.msgSuccess + '</div>'); 15828 setTimeout(function () { 15829 $('.add-to-basket-alert').remove(); 15830 if ($('.cart-page').length) { 15831 location.reload(); 15832 } 15833 }, 1500); 15834 } 15835 }, 15836 error: function error() { 15837 $.spinner().stop(); 15838 } 15839 }); 15840 }); 15841 }, 15842 getPidValue: getPidValue, 15843 getQuantitySelected: getQuantitySelected, 15844 miniCartReportingUrl: miniCartReportingUrl 15845}; 15846 15847/***/ }), 15848
vendor: 60,164 bytes, lines 15849-18065
15849/***/ "./node_modules/@vimeo/player/dist/player.es.js": 15850/*!******************************************************!*\ 15851 !*** ./node_modules/@vimeo/player/dist/player.es.js ***! 15852 \******************************************************/ 15853/*! exports provided: default */ 15854/***/ (function(module, __webpack_exports__, __webpack_require__) { 15855 15856"use strict"; 15857__webpack_require__.r(__webpack_exports__); 15858/* WEBPACK VAR INJECTION */(function(global, setImmediate) {/*! @vimeo/player v2.12.0 | (c) 2020 Vimeo | MIT License | https://github.com/vimeo/player.js */ 15859function _classCallCheck(instance, Constructor) { 15860 if (!(instance instanceof Constructor)) { 15861 throw new TypeError("Cannot call a class as a function"); 15862 } 15863} 15864 15865function _defineProperties(target, props) { 15866 for (var i = 0; i < props.length; i++) { 15867 var descriptor = props[i]; 15868 descriptor.enumerable = descriptor.enumerable || false; 15869 descriptor.configurable = true; 15870 if ("value" in descriptor) descriptor.writable = true; 15871 Object.defineProperty(target, descriptor.key, descriptor); 15872 } 15873} 15874 15875function _createClass(Constructor, protoProps, staticProps) { 15876 if (protoProps) _defineProperties(Constructor.prototype, protoProps); 15877 if (staticProps) _defineProperties(Constructor, staticProps); 15878 return Constructor; 15879} 15880 15881/** 15882 * @module lib/functions 15883 */ 15884 15885/** 15886 * Check to see this is a node environment. 15887 * @type {Boolean} 15888 */ 15889 15890/* global global */ 15891var isNode = typeof global !== 'undefined' && {}.toString.call(global) === '[object global]'; 15892/** 15893 * Get the name of the method for a given getter or setter. 15894 * 15895 * @param {string} prop The name of the property. 15896 * @param {string} type Either âgetâ or âsetâ. 15897 * @return {string} 15898 */ 15899 15900function getMethodName(prop, type) { 15901 if (prop.indexOf(type.toLowerCase()) === 0) { 15902 return prop; 15903 } 15904 15905 return "".concat(type.toLowerCase()).concat(prop.substr(0, 1).toUpperCase()).concat(prop.substr(1)); 15906} 15907/** 15908 * Check to see if the object is a DOM Element. 15909 * 15910 * @param {*} element The object to check. 15911 * @return {boolean} 15912 */ 15913 15914function isDomElement(element) { 15915 return Boolean(element && element.nodeType === 1 && 'nodeName' in element && element.ownerDocument && element.ownerDocument.defaultView); 15916} 15917/** 15918 * Check to see whether the value is a number. 15919 * 15920 * @see http://dl.dropboxusercontent.com/u/35146/js/tests/isNumber.html 15921 * @param {*} value The value to check. 15922 * @param {boolean} integer Check if the value is an integer. 15923 * @return {boolean} 15924 */ 15925 15926function isInteger(value) { 15927 // eslint-disable-next-line eqeqeq 15928 return !isNaN(parseFloat(value)) && isFinite(value) && Math.floor(value) == value; 15929} 15930/** 15931 * Check to see if the URL is a Vimeo url. 15932 * 15933 * @param {string} url The url string. 15934 * @return {boolean} 15935 */ 15936 15937function isVimeoUrl(url) { 15938 return /^(https?:)?\/\/((player|www)\.)?vimeo\.com(?=$|\/)/.test(url); 15939} 15940/** 15941 * Get the Vimeo URL from an element. 15942 * The element must have either a data-vimeo-id or data-vimeo-url attribute. 15943 * 15944 * @param {object} oEmbedParameters The oEmbed parameters. 15945 * @return {string} 15946 */ 15947 15948function getVimeoUrl() { 15949 var oEmbedParameters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 15950 var id = oEmbedParameters.id; 15951 var url = oEmbedParameters.url; 15952 var idOrUrl = id || url; 15953 15954 if (!idOrUrl) { 15955 throw new Error('An id or url must be passed, either in an options object or as a data-vimeo-id or data-vimeo-url attribute.'); 15956 } 15957 15958 if (isInteger(idOrUrl)) { 15959 return "https://vimeo.com/".concat(idOrUrl); 15960 } 15961 15962 if (isVimeoUrl(idOrUrl)) { 15963 return idOrUrl.replace('http:', 'https:'); 15964 } 15965 15966 if (id) { 15967 throw new TypeError("\u201C".concat(id, "\u201D is not a valid video id.")); 15968 } 15969 15970 throw new TypeError("\u201C".concat(idOrUrl, "\u201D is not a vimeo.com url.")); 15971} 15972 15973var arrayIndexOfSupport = typeof Array.prototype.indexOf !== 'undefined'; 15974var postMessageSupport = typeof window !== 'undefined' && typeof window.postMessage !== 'undefined'; 15975 15976if (!isNode && (!arrayIndexOfSupport || !postMessageSupport)) { 15977 throw new Error('Sorry, the Vimeo Player API is not available in this browser.'); 15978} 15979 15980var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; 15981 15982function createCommonjsModule(fn, module) { 15983 return module = { exports: {} }, fn(module, module.exports), module.exports; 15984} 15985 15986/*! 15987 * weakmap-polyfill v2.0.1 - ECMAScript6 WeakMap polyfill 15988 * https://github.com/polygonplanet/weakmap-polyfill 15989 * Copyright (c) 2015-2020 Polygon Planet <[email protected]> 15990 * @license MIT 15991 */ 15992(function (self) { 15993 15994 if (self.WeakMap) { 15995 return; 15996 } 15997 15998 var hasOwnProperty = Object.prototype.hasOwnProperty; 15999 16000 var defineProperty = function (object, name, value) { 16001 if (Object.defineProperty) { 16002 Object.defineProperty(object, name, { 16003 configurable: true, 16004 writable: true, 16005 value: value 16006 }); 16007 } else { 16008 object[name] = value; 16009 } 16010 }; 16011 16012 self.WeakMap = function () { 16013 // ECMA-262 23.3 WeakMap Objects 16014 function WeakMap() { 16015 if (this === void 0) { 16016 throw new TypeError("Constructor WeakMap requires 'new'"); 16017 } 16018 16019 defineProperty(this, '_id', genId('_WeakMap')); // ECMA-262 23.3.1.1 WeakMap([iterable]) 16020 16021 if (arguments.length > 0) { 16022 // Currently, WeakMap `iterable` argument is not supported 16023 throw new TypeError('WeakMap iterable is not supported'); 16024 } 16025 } // ECMA-262 23.3.3.2 WeakMap.prototype.delete(key) 16026 16027 16028 defineProperty(WeakMap.prototype, 'delete', function (key) { 16029 checkInstance(this, 'delete'); 16030 16031 if (!isObject(key)) { 16032 return false; 16033 } 16034 16035 var entry = key[this._id]; 16036 16037 if (entry && entry[0] === key) { 16038 delete key[this._id]; 16039 return true; 16040 } 16041 16042 return false; 16043 }); // ECMA-262 23.3.3.3 WeakMap.prototype.get(key) 16044 16045 defineProperty(WeakMap.prototype, 'get', function (key) { 16046 checkInstance(this, 'get'); 16047 16048 if (!isObject(key)) { 16049 return void 0; 16050 } 16051 16052 var entry = key[this._id]; 16053 16054 if (entry && entry[0] === key) { 16055 return entry[1]; 16056 } 16057 16058 return void 0; 16059 }); // ECMA-262 23.3.3.4 WeakMap.prototype.has(key) 16060 16061 defineProperty(WeakMap.prototype, 'has', function (key) { 16062 checkInstance(this, 'has'); 16063 16064 if (!isObject(key)) { 16065 return false; 16066 } 16067 16068 var entry = key[this._id]; 16069 16070 if (entry && entry[0] === key) { 16071 return true; 16072 } 16073 16074 return false; 16075 }); // ECMA-262 23.3.3.5 WeakMap.prototype.set(key, value) 16076 16077 defineProperty(WeakMap.prototype, 'set', function (key, value) { 16078 checkInstance(this, 'set'); 16079 16080 if (!isObject(key)) { 16081 throw new TypeError('Invalid value used as weak map key'); 16082 } 16083 16084 var entry = key[this._id]; 16085 16086 if (entry && entry[0] === key) { 16087 entry[1] = value; 16088 return this; 16089 } 16090 16091 defineProperty(key, this._id, [key, value]); 16092 return this; 16093 }); 16094 16095 function checkInstance(x, methodName) { 16096 if (!isObject(x) || !hasOwnProperty.call(x, '_id')) { 16097 throw new TypeError(methodName + ' method called on incompatible receiver ' + typeof x); 16098 } 16099 } 16100 16101 function genId(prefix) { 16102 return prefix + '_' + rand() + '.' + rand(); 16103 } 16104 16105 function rand() { 16106 return Math.random().toString().substring(2); 16107 } 16108 16109 defineProperty(WeakMap, '_polyfill', true); 16110 return WeakMap; 16111 }(); 16112 16113 function isObject(x) { 16114 return Object(x) === x; 16115 } 16116})(typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : commonjsGlobal); 16117 16118var npo_src = createCommonjsModule(function (module) { 16119/*! Native Promise Only 16120 v0.8.1 (c) Kyle Simpson 16121 MIT License: http://getify.mit-license.org 16122*/ 16123(function UMD(name, context, definition) { 16124 // special form of UMD for polyfilling across evironments 16125 context[name] = context[name] || definition(); 16126 16127 if ( module.exports) { 16128 module.exports = context[name]; 16129 } 16130})("Promise", typeof commonjsGlobal != "undefined" ? commonjsGlobal : commonjsGlobal, function DEF() { 16131 16132 var builtInProp, 16133 cycle, 16134 scheduling_queue, 16135 ToString = Object.prototype.toString, 16136 timer = typeof setImmediate != "undefined" ? function timer(fn) { 16137 return setImmediate(fn); 16138 } : setTimeout; // dammit, IE8. 16139 16140 try { 16141 Object.defineProperty({}, "x", {}); 16142 16143 builtInProp = function builtInProp(obj, name, val, config) { 16144 return Object.defineProperty(obj, name, { 16145 value: val, 16146 writable: true, 16147 configurable: config !== false 16148 }); 16149 }; 16150 } catch (err) { 16151 builtInProp = function builtInProp(obj, name, val) { 16152 obj[name] = val; 16153 return obj; 16154 }; 16155 } // Note: using a queue instead of array for efficiency 16156 16157 16158 scheduling_queue = function Queue() { 16159 var first, last, item; 16160 16161 function Item(fn, self) { 16162 this.fn = fn; 16163 this.self = self; 16164 this.next = void 0; 16165 } 16166 16167 return { 16168 add: function add(fn, self) { 16169 item = new Item(fn, self); 16170 16171 if (last) { 16172 last.next = item; 16173 } else { 16174 first = item; 16175 } 16176 16177 last = item; 16178 item = void 0; 16179 }, 16180 drain: function drain() { 16181 var f = first; 16182 first = last = cycle = void 0; 16183 16184 while (f) { 16185 f.fn.call(f.self); 16186 f = f.next; 16187 } 16188 } 16189 }; 16190 }(); 16191 16192 function schedule(fn, self) { 16193 scheduling_queue.add(fn, self); 16194 16195 if (!cycle) { 16196 cycle = timer(scheduling_queue.drain); 16197 } 16198 } // promise duck typing 16199 16200 16201 function isThenable(o) { 16202 var _then, 16203 o_type = typeof o; 16204 16205 if (o != null && (o_type == "object" || o_type == "function")) { 16206 _then = o.then; 16207 } 16208 16209 return typeof _then == "function" ? _then : false; 16210 } 16211 16212 function notify() { 16213 for (var i = 0; i < this.chain.length; i++) { 16214 notifyIsolated(this, this.state === 1 ? this.chain[i].success : this.chain[i].failure, this.chain[i]); 16215 } 16216 16217 this.chain.length = 0; 16218 } // NOTE: This is a separate function to isolate 16219 // the `try..catch` so that other code can be 16220 // optimized better 16221 16222 16223 function notifyIsolated(self, cb, chain) { 16224 var ret, _then; 16225 16226 try { 16227 if (cb === false) { 16228 chain.reject(self.msg); 16229 } else { 16230 if (cb === true) { 16231 ret = self.msg; 16232 } else { 16233 ret = cb.call(void 0, self.msg); 16234 } 16235 16236 if (ret === chain.promise) { 16237 chain.reject(TypeError("Promise-chain cycle")); 16238 } else if (_then = isThenable(ret)) { 16239 _then.call(ret, chain.resolve, chain.reject); 16240 } else { 16241 chain.resolve(ret); 16242 } 16243 } 16244 } catch (err) { 16245 chain.reject(err); 16246 } 16247 } 16248 16249 function resolve(msg) { 16250 var _then, 16251 self = this; // already triggered? 16252 16253 16254 if (self.triggered) { 16255 return; 16256 } 16257 16258 self.triggered = true; // unwrap 16259 16260 if (self.def) { 16261 self = self.def; 16262 } 16263 16264 try { 16265 if (_then = isThenable(msg)) { 16266 schedule(function () { 16267 var def_wrapper = new MakeDefWrapper(self); 16268 16269 try { 16270 _then.call(msg, function $resolve$() { 16271 resolve.apply(def_wrapper, arguments); 16272 }, function $reject$() { 16273 reject.apply(def_wrapper, arguments); 16274 }); 16275 } catch (err) { 16276 reject.call(def_wrapper, err); 16277 } 16278 }); 16279 } else { 16280 self.msg = msg; 16281 self.state = 1; 16282 16283 if (self.chain.length > 0) { 16284 schedule(notify, self); 16285 } 16286 } 16287 } catch (err) { 16288 reject.call(new MakeDefWrapper(self), err); 16289 } 16290 } 16291 16292 function reject(msg) { 16293 var self = this; // already triggered? 16294 16295 if (self.triggered) { 16296 return; 16297 } 16298 16299 self.triggered = true; // unwrap 16300 16301 if (self.def) { 16302 self = self.def; 16303 } 16304 16305 self.msg = msg; 16306 self.state = 2; 16307 16308 if (self.chain.length > 0) { 16309 schedule(notify, self); 16310 } 16311 } 16312 16313 function iteratePromises(Constructor, arr, resolver, rejecter) { 16314 for (var idx = 0; idx < arr.length; idx++) { 16315 (function IIFE(idx) { 16316 Constructor.resolve(arr[idx]).then(function $resolver$(msg) { 16317 resolver(idx, msg); 16318 }, rejecter); 16319 })(idx); 16320 } 16321 } 16322 16323 function MakeDefWrapper(self) { 16324 this.def = self; 16325 this.triggered = false; 16326 } 16327 16328 function MakeDef(self) { 16329 this.promise = self; 16330 this.state = 0; 16331 this.triggered = false; 16332 this.chain = []; 16333 this.msg = void 0; 16334 } 16335 16336 function Promise(executor) { 16337 if (typeof executor != "function") { 16338 throw TypeError("Not a function"); 16339 } 16340 16341 if (this.__NPO__ !== 0) { 16342 throw TypeError("Not a promise"); 16343 } // instance shadowing the inherited "brand" 16344 // to signal an already "initialized" promise 16345 16346 16347 this.__NPO__ = 1; 16348 var def = new MakeDef(this); 16349 16350 this["then"] = function then(success, failure) { 16351 var o = { 16352 success: typeof success == "function" ? success : true, 16353 failure: typeof failure == "function" ? failure : false 16354 }; // Note: `then(..)` itself can be borrowed to be used against 16355 // a different promise constructor for making the chained promise, 16356 // by substituting a different `this` binding. 16357 16358 o.promise = new this.constructor(function extractChain(resolve, reject) { 16359 if (typeof resolve != "function" || typeof reject != "function") { 16360 throw TypeError("Not a function"); 16361 } 16362 16363 o.resolve = resolve; 16364 o.reject = reject; 16365 }); 16366 def.chain.push(o); 16367 16368 if (def.state !== 0) { 16369 schedule(notify, def); 16370 } 16371 16372 return o.promise; 16373 }; 16374 16375 this["catch"] = function $catch$(failure) { 16376 return this.then(void 0, failure); 16377 }; 16378 16379 try { 16380 executor.call(void 0, function publicResolve(msg) { 16381 resolve.call(def, msg); 16382 }, function publicReject(msg) { 16383 reject.call(def, msg); 16384 }); 16385 } catch (err) { 16386 reject.call(def, err); 16387 } 16388 } 16389 16390 var PromisePrototype = builtInProp({}, "constructor", Promise, 16391 /*configurable=*/ 16392 false); // Note: Android 4 cannot use `Object.defineProperty(..)` here 16393 16394 Promise.prototype = PromisePrototype; // built-in "brand" to signal an "uninitialized" promise 16395 16396 builtInProp(PromisePrototype, "__NPO__", 0, 16397 /*configurable=*/ 16398 false); 16399 builtInProp(Promise, "resolve", function Promise$resolve(msg) { 16400 var Constructor = this; // spec mandated checks 16401 // note: best "isPromise" check that's practical for now 16402 16403 if (msg && typeof msg == "object" && msg.__NPO__ === 1) { 16404 return msg; 16405 } 16406 16407 return new Constructor(function executor(resolve, reject) { 16408 if (typeof resolve != "function" || typeof reject != "function") { 16409 throw TypeError("Not a function"); 16410 } 16411 16412 resolve(msg); 16413 }); 16414 }); 16415 builtInProp(Promise, "reject", function Promise$reject(msg) { 16416 return new this(function executor(resolve, reject) { 16417 if (typeof resolve != "function" || typeof reject != "function") { 16418 throw TypeError("Not a function"); 16419 } 16420 16421 reject(msg); 16422 }); 16423 }); 16424 builtInProp(Promise, "all", function Promise$all(arr) { 16425 var Constructor = this; // spec mandated checks 16426 16427 if (ToString.call(arr) != "[object Array]") { 16428 return Constructor.reject(TypeError("Not an array")); 16429 } 16430 16431 if (arr.length === 0) { 16432 return Constructor.resolve([]); 16433 } 16434 16435 return new Constructor(function executor(resolve, reject) { 16436 if (typeof resolve != "function" || typeof reject != "function") { 16437 throw TypeError("Not a function"); 16438 } 16439 16440 var len = arr.length, 16441 msgs = Array(len), 16442 count = 0; 16443 iteratePromises(Constructor, arr, function resolver(idx, msg) { 16444 msgs[idx] = msg; 16445 16446 if (++count === len) { 16447 resolve(msgs); 16448 } 16449 }, reject); 16450 }); 16451 }); 16452 builtInProp(Promise, "race", function Promise$race(arr) { 16453 var Constructor = this; // spec mandated checks 16454 16455 if (ToString.call(arr) != "[object Array]") { 16456 return Constructor.reject(TypeError("Not an array")); 16457 } 16458 16459 return new Constructor(function executor(resolve, reject) { 16460 if (typeof resolve != "function" || typeof reject != "function") { 16461 throw TypeError("Not a function"); 16462 } 16463 16464 iteratePromises(Constructor, arr, function resolver(idx, msg) { 16465 resolve(msg); 16466 }, reject); 16467 }); 16468 }); 16469 return Promise; 16470}); 16471}); 16472 16473/** 16474 * @module lib/callbacks 16475 */ 16476var callbackMap = new WeakMap(); 16477/** 16478 * Store a callback for a method or event for a player. 16479 * 16480 * @param {Player} player The player object. 16481 * @param {string} name The method or event name. 16482 * @param {(function(this:Player, *): void|{resolve: function, reject: function})} callback 16483 * The callback to call or an object with resolve and reject functions for a promise. 16484 * @return {void} 16485 */ 16486 16487function storeCallback(player, name, callback) { 16488 var playerCallbacks = callbackMap.get(player.element) || {}; 16489 16490 if (!(name in playerCallbacks)) { 16491 playerCallbacks[name] = []; 16492 } 16493 16494 playerCallbacks[name].push(callback); 16495 callbackMap.set(player.element, playerCallbacks); 16496} 16497/** 16498 * Get the callbacks for a player and event or method. 16499 * 16500 * @param {Player} player The player object. 16501 * @param {string} name The method or event name 16502 * @return {function[]} 16503 */ 16504 16505function getCallbacks(player, name) { 16506 var playerCallbacks = callbackMap.get(player.element) || {}; 16507 return playerCallbacks[name] || []; 16508} 16509/** 16510 * Remove a stored callback for a method or event for a player. 16511 * 16512 * @param {Player} player The player object. 16513 * @param {string} name The method or event name 16514 * @param {function} [callback] The specific callback to remove. 16515 * @return {boolean} Was this the last callback? 16516 */ 16517 16518function removeCallback(player, name, callback) { 16519 var playerCallbacks = callbackMap.get(player.element) || {}; 16520 16521 if (!playerCallbacks[name]) { 16522 return true; 16523 } // If no callback is passed, remove all callbacks for the event 16524 16525 16526 if (!callback) { 16527 playerCallbacks[name] = []; 16528 callbackMap.set(player.element, playerCallbacks); 16529 return true; 16530 } 16531 16532 var index = playerCallbacks[name].indexOf(callback); 16533 16534 if (index !== -1) { 16535 playerCallbacks[name].splice(index, 1); 16536 } 16537 16538 callbackMap.set(player.element, playerCallbacks); 16539 return playerCallbacks[name] && playerCallbacks[name].length === 0; 16540} 16541/** 16542 * Return the first stored callback for a player and event or method. 16543 * 16544 * @param {Player} player The player object. 16545 * @param {string} name The method or event name. 16546 * @return {function} The callback, or false if there were none 16547 */ 16548 16549function shiftCallbacks(player, name) { 16550 var playerCallbacks = getCallbacks(player, name); 16551 16552 if (playerCallbacks.length < 1) { 16553 return false; 16554 } 16555 16556 var callback = playerCallbacks.shift(); 16557 removeCallback(player, name, callback); 16558 return callback; 16559} 16560/** 16561 * Move callbacks associated with an element to another element. 16562 * 16563 * @param {HTMLElement} oldElement The old element. 16564 * @param {HTMLElement} newElement The new element. 16565 * @return {void} 16566 */ 16567 16568function swapCallbacks(oldElement, newElement) { 16569 var playerCallbacks = callbackMap.get(oldElement); 16570 callbackMap.set(newElement, playerCallbacks); 16571 callbackMap.delete(oldElement); 16572} 16573 16574/** 16575 * @module lib/embed 16576 */ 16577var oEmbedParameters = ['autopause', 'autoplay', 'background', 'byline', 'color', 'controls', 'dnt', 'height', 'id', 'loop', 'maxheight', 'maxwidth', 'muted', 'playsinline', 'portrait', 'responsive', 'speed', 'texttrack', 'title', 'transparent', 'url', 'width']; 16578/** 16579 * Get the 'data-vimeo'-prefixed attributes from an element as an object. 16580 * 16581 * @param {HTMLElement} element The element. 16582 * @param {Object} [defaults={}] The default values to use. 16583 * @return {Object<string, string>} 16584 */ 16585 16586function getOEmbedParameters(element) { 16587 var defaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 16588 return oEmbedParameters.reduce(function (params, param) { 16589 var value = element.getAttribute("data-vimeo-".concat(param)); 16590 16591 if (value || value === '') { 16592 params[param] = value === '' ? 1 : value; 16593 } 16594 16595 return params; 16596 }, defaults); 16597} 16598/** 16599 * Create an embed from oEmbed data inside an element. 16600 * 16601 * @param {object} data The oEmbed data. 16602 * @param {HTMLElement} element The element to put the iframe in. 16603 * @return {HTMLIFrameElement} The iframe embed. 16604 */ 16605 16606function createEmbed(_ref, element) { 16607 var html = _ref.html; 16608 16609 if (!element) { 16610 throw new TypeError('An element must be provided'); 16611 } 16612 16613 if (element.getAttribute('data-vimeo-initialized') !== null) { 16614 return element.querySelector('iframe'); 16615 } 16616 16617 var div = document.createElement('div'); 16618 div.innerHTML = html; 16619 element.appendChild(div.firstChild); 16620 element.setAttribute('data-vimeo-initialized', 'true'); 16621 return element.querySelector('iframe'); 16622} 16623/** 16624 * Make an oEmbed call for the specified URL. 16625 * 16626 * @param {string} videoUrl The vimeo.com url for the video. 16627 * @param {Object} [params] Parameters to pass to oEmbed. 16628 * @param {HTMLElement} element The element. 16629 * @return {Promise} 16630 */ 16631 16632function getOEmbedData(videoUrl) { 16633 var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 16634 var element = arguments.length > 2 ? arguments[2] : undefined; 16635 return new Promise(function (resolve, reject) { 16636 if (!isVimeoUrl(videoUrl)) { 16637 throw new TypeError("\u201C".concat(videoUrl, "\u201D is not a vimeo.com url.")); 16638 } 16639 16640 var url = "https://vimeo.com/api/oembed.json?url=".concat(encodeURIComponent(videoUrl)); 16641 16642 for (var param in params) { 16643 if (params.hasOwnProperty(param)) { 16644 url += "&".concat(param, "=").concat(encodeURIComponent(params[param])); 16645 } 16646 } 16647 16648 var xhr = 'XDomainRequest' in window ? new XDomainRequest() : new XMLHttpRequest(); 16649 xhr.open('GET', url, true); 16650 16651 xhr.onload = function () { 16652 if (xhr.status === 404) { 16653 reject(new Error("\u201C".concat(videoUrl, "\u201D was not found."))); 16654 return; 16655 } 16656 16657 if (xhr.status === 403) { 16658 reject(new Error("\u201C".concat(videoUrl, "\u201D is not embeddable."))); 16659 return; 16660 } 16661 16662 try { 16663 var json = JSON.parse(xhr.responseText); // Check api response for 403 on oembed 16664 16665 if (json.domain_status_code === 403) { 16666 // We still want to create the embed to give users visual feedback 16667 createEmbed(json, element); 16668 reject(new Error("\u201C".concat(videoUrl, "\u201D is not embeddable."))); 16669 return; 16670 } 16671 16672 resolve(json); 16673 } catch (error) { 16674 reject(error); 16675 } 16676 }; 16677 16678 xhr.onerror = function () { 16679 var status = xhr.status ? " (".concat(xhr.status, ")") : ''; 16680 reject(new Error("There was an error fetching the embed code from Vimeo".concat(status, "."))); 16681 }; 16682 16683 xhr.send(); 16684 }); 16685} 16686/** 16687 * Initialize all embeds within a specific element 16688 * 16689 * @param {HTMLElement} [parent=document] The parent element. 16690 * @return {void} 16691 */ 16692 16693function initializeEmbeds() { 16694 var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document; 16695 var elements = [].slice.call(parent.querySelectorAll('[data-vimeo-id], [data-vimeo-url]')); 16696 16697 var handleError = function handleError(error) { 16698 if ('console' in window && console.error) { 16699 console.error("There was an error creating an embed: ".concat(error)); 16700 } 16701 }; 16702 16703 elements.forEach(function (element) { 16704 try { 16705 // Skip any that have data-vimeo-defer 16706 if (element.getAttribute('data-vimeo-defer') !== null) { 16707 return; 16708 } 16709 16710 var params = getOEmbedParameters(element); 16711 var url = getVimeoUrl(params); 16712 getOEmbedData(url, params, element).then(function (data) { 16713 return createEmbed(data, element); 16714 }).catch(handleError); 16715 } catch (error) { 16716 handleError(error); 16717 } 16718 }); 16719} 16720/** 16721 * Resize embeds when messaged by the player. 16722 * 16723 * @param {HTMLElement} [parent=document] The parent element. 16724 * @return {void} 16725 */ 16726 16727function resizeEmbeds() { 16728 var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document; 16729 16730 // Prevent execution if users include the player.js script multiple times. 16731 if (window.VimeoPlayerResizeEmbeds_) { 16732 return; 16733 } 16734 16735 window.VimeoPlayerResizeEmbeds_ = true; 16736 16737 var onMessage = function onMessage(event) { 16738 if (!isVimeoUrl(event.origin)) { 16739 return; 16740 } // 'spacechange' is fired only on embeds with cards 16741 16742 16743 if (!event.data || event.data.event !== 'spacechange') { 16744 return; 16745 } 16746 16747 var iframes = parent.querySelectorAll('iframe'); 16748 16749 for (var i = 0; i < iframes.length; i++) { 16750 if (iframes[i].contentWindow !== event.source) { 16751 continue; 16752 } // Change padding-bottom of the enclosing div to accommodate 16753 // card carousel without distorting aspect ratio 16754 16755 16756 var space = iframes[i].parentElement; 16757 space.style.paddingBottom = "".concat(event.data.data[0].bottom, "px"); 16758 break; 16759 } 16760 }; 16761 16762 window.addEventListener('message', onMessage); 16763} 16764 16765/** 16766 * @module lib/postmessage 16767 */ 16768/** 16769 * Parse a message received from postMessage. 16770 * 16771 * @param {*} data The data received from postMessage. 16772 * @return {object} 16773 */ 16774 16775function parseMessageData(data) { 16776 if (typeof data === 'string') { 16777 try { 16778 data = JSON.parse(data); 16779 } catch (error) { 16780 // If the message cannot be parsed, throw the error as a warning 16781 console.warn(error); 16782 return {}; 16783 } 16784 } 16785 16786 return data; 16787} 16788/** 16789 * Post a message to the specified target. 16790 * 16791 * @param {Player} player The player object to use. 16792 * @param {string} method The API method to call. 16793 * @param {object} params The parameters to send to the player. 16794 * @return {void} 16795 */ 16796 16797function postMessage(player, method, params) { 16798 if (!player.element.contentWindow || !player.element.contentWindow.postMessage) { 16799 return; 16800 } 16801 16802 var message = { 16803 method: method 16804 }; 16805 16806 if (params !== undefined) { 16807 message.value = params; 16808 } // IE 8 and 9 do not support passing messages, so stringify them 16809 16810 16811 var ieVersion = parseFloat(navigator.userAgent.toLowerCase().replace(/^.*msie (\d+).*$/, '$1')); 16812 16813 if (ieVersion >= 8 && ieVersion < 10) { 16814 message = JSON.stringify(message); 16815 } 16816 16817 player.element.contentWindow.postMessage(message, player.origin); 16818} 16819/** 16820 * Parse the data received from a message event. 16821 * 16822 * @param {Player} player The player that received the message. 16823 * @param {(Object|string)} data The message data. Strings will be parsed into JSON. 16824 * @return {void} 16825 */ 16826 16827function processData(player, data) { 16828 data = parseMessageData(data); 16829 var callbacks = []; 16830 var param; 16831 16832 if (data.event) { 16833 if (data.event === 'error') { 16834 var promises = getCallbacks(player, data.data.method); 16835 promises.forEach(function (promise) { 16836 var error = new Error(data.data.message); 16837 error.name = data.data.name; 16838 promise.reject(error); 16839 removeCallback(player, data.data.method, promise); 16840 }); 16841 } 16842 16843 callbacks = getCallbacks(player, "event:".concat(data.event)); 16844 param = data.data; 16845 } else if (data.method) { 16846 var callback = shiftCallbacks(player, data.method); 16847 16848 if (callback) { 16849 callbacks.push(callback); 16850 param = data.value; 16851 } 16852 } 16853 16854 callbacks.forEach(function (callback) { 16855 try { 16856 if (typeof callback === 'function') { 16857 callback.call(player, param); 16858 return; 16859 } 16860 16861 callback.resolve(param); 16862 } catch (e) {// empty 16863 } 16864 }); 16865} 16866 16867var playerMap = new WeakMap(); 16868var readyMap = new WeakMap(); 16869 16870var Player = 16871/*#__PURE__*/ 16872function () { 16873 /** 16874 * Create a Player. 16875 * 16876 * @param {(HTMLIFrameElement|HTMLElement|string|jQuery)} element A reference to the Vimeo 16877 * player iframe, and id, or a jQuery object. 16878 * @param {object} [options] oEmbed parameters to use when creating an embed in the element. 16879 * @return {Player} 16880 */ 16881 function Player(element) { 16882 var _this = this; 16883 16884 var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 16885 16886 _classCallCheck(this, Player); 16887 16888 /* global jQuery */ 16889 if (window.jQuery && element instanceof jQuery) { 16890 if (element.length > 1 && window.console && console.warn) { 16891 console.warn('A jQuery object with multiple elements was passed, using the first element.'); 16892 } 16893 16894 element = element[0]; 16895 } // Find an element by ID 16896 16897 16898 if (typeof document !== 'undefined' && typeof element === 'string') { 16899 element = document.getElementById(element); 16900 } // Not an element! 16901 16902 16903 if (!isDomElement(element)) { 16904 throw new TypeError('You must pass either a valid element or a valid id.'); 16905 } // Already initialized an embed in this div, so grab the iframe 16906 16907 16908 if (element.nodeName !== 'IFRAME') { 16909 var iframe = element.querySelector('iframe'); 16910 16911 if (iframe) { 16912 element = iframe; 16913 } 16914 } // iframe url is not a Vimeo url 16915 16916 16917 if (element.nodeName === 'IFRAME' && !isVimeoUrl(element.getAttribute('src') || '')) { 16918 throw new Error('The player element passed isnât a Vimeo embed.'); 16919 } // If there is already a player object in the map, return that 16920 16921 16922 if (playerMap.has(element)) { 16923 return playerMap.get(element); 16924 } 16925 16926 this._window = element.ownerDocument.defaultView; 16927 this.element = element; 16928 this.origin = '*'; 16929 var readyPromise = new npo_src(function (resolve, reject) { 16930 _this._onMessage = function (event) { 16931 if (!isVimeoUrl(event.origin) || _this.element.contentWindow !== event.source) { 16932 return; 16933 } 16934 16935 if (_this.origin === '*') { 16936 _this.origin = event.origin; 16937 } 16938 16939 var data = parseMessageData(event.data); 16940 var isError = data && data.event === 'error'; 16941 var isReadyError = isError && data.data && data.data.method === 'ready'; 16942 16943 if (isReadyError) { 16944 var error = new Error(data.data.message); 16945 error.name = data.data.name; 16946 reject(error); 16947 return; 16948 } 16949 16950 var isReadyEvent = data && data.event === 'ready'; 16951 var isPingResponse = data && data.method === 'ping'; 16952 16953 if (isReadyEvent || isPingResponse) { 16954 _this.element.setAttribute('data-ready', 'true'); 16955 16956 resolve(); 16957 return; 16958 } 16959 16960 processData(_this, data); 16961 }; 16962 16963 _this._window.addEventListener('message', _this._onMessage); 16964 16965 if (_this.element.nodeName !== 'IFRAME') { 16966 var params = getOEmbedParameters(element, options); 16967 var url = getVimeoUrl(params); 16968 getOEmbedData(url, params, element).then(function (data) { 16969 var iframe = createEmbed(data, element); // Overwrite element with the new iframe, 16970 // but store reference to the original element 16971 16972 _this.element = iframe; 16973 _this._originalElement = element; 16974 swapCallbacks(element, iframe); 16975 playerMap.set(_this.element, _this); 16976 return data; 16977 }).catch(reject); 16978 } 16979 }); // Store a copy of this Player in the map 16980 16981 readyMap.set(this, readyPromise); 16982 playerMap.set(this.element, this); // Send a ping to the iframe so the ready promise will be resolved if 16983 // the player is already ready. 16984 16985 if (this.element.nodeName === 'IFRAME') { 16986 postMessage(this, 'ping'); 16987 } 16988 16989 return this; 16990 } 16991 /** 16992 * Get a promise for a method. 16993 * 16994 * @param {string} name The API method to call. 16995 * @param {Object} [args={}] Arguments to send via postMessage. 16996 * @return {Promise} 16997 */ 16998 16999 17000 _createClass(Player, [{ 17001 key: "callMethod", 17002 value: function callMethod(name) { 17003 var _this2 = this; 17004 17005 var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 17006 return new npo_src(function (resolve, reject) { 17007 // We are storing the resolve/reject handlers to call later, so we 17008 // canât return here. 17009 // eslint-disable-next-line promise/always-return 17010 return _this2.ready().then(function () { 17011 storeCallback(_this2, name, { 17012 resolve: resolve, 17013 reject: reject 17014 }); 17015 postMessage(_this2, name, args); 17016 }).catch(reject); 17017 }); 17018 } 17019 /** 17020 * Get a promise for the value of a player property. 17021 * 17022 * @param {string} name The property name 17023 * @return {Promise} 17024 */ 17025 17026 }, { 17027 key: "get", 17028 value: function get(name) { 17029 var _this3 = this; 17030 17031 return new npo_src(function (resolve, reject) { 17032 name = getMethodName(name, 'get'); // We are storing the resolve/reject handlers to call later, so we 17033 // canât return here. 17034 // eslint-disable-next-line promise/always-return 17035 17036 return _this3.ready().then(function () { 17037 storeCallback(_this3, name, { 17038 resolve: resolve, 17039 reject: reject 17040 }); 17041 postMessage(_this3, name); 17042 }).catch(reject); 17043 }); 17044 } 17045 /** 17046 * Get a promise for setting the value of a player property. 17047 * 17048 * @param {string} name The API method to call. 17049 * @param {mixed} value The value to set. 17050 * @return {Promise} 17051 */ 17052 17053 }, { 17054 key: "set", 17055 value: function set(name, value) { 17056 var _this4 = this; 17057 17058 return new npo_src(function (resolve, reject) { 17059 name = getMethodName(name, 'set'); 17060 17061 if (value === undefined || value === null) { 17062 throw new TypeError('There must be a value to set.'); 17063 } // We are storing the resolve/reject handlers to call later, so we 17064 // canât return here. 17065 // eslint-disable-next-line promise/always-return 17066 17067 17068 return _this4.ready().then(function () { 17069 storeCallback(_this4, name, { 17070 resolve: resolve, 17071 reject: reject 17072 }); 17073 postMessage(_this4, name, value); 17074 }).catch(reject); 17075 }); 17076 } 17077 /** 17078 * Add an event listener for the specified event. Will call the 17079 * callback with a single parameter, `data`, that contains the data for 17080 * that event. 17081 * 17082 * @param {string} eventName The name of the event. 17083 * @param {function(*)} callback The function to call when the event fires. 17084 * @return {void} 17085 */ 17086 17087 }, { 17088 key: "on", 17089 value: function on(eventName, callback) { 17090 if (!eventName) { 17091 throw new TypeError('You must pass an event name.'); 17092 } 17093 17094 if (!callback) { 17095 throw new TypeError('You must pass a callback function.'); 17096 } 17097 17098 if (typeof callback !== 'function') { 17099 throw new TypeError('The callback must be a function.'); 17100 } 17101 17102 var callbacks = getCallbacks(this, "event:".concat(eventName)); 17103 17104 if (callbacks.length === 0) { 17105 this.callMethod('addEventListener', eventName).catch(function () {// Ignore the error. There will be an error event fired that 17106 // will trigger the error callback if they are listening. 17107 }); 17108 } 17109 17110 storeCallback(this, "event:".concat(eventName), callback); 17111 } 17112 /** 17113 * Remove an event listener for the specified event. Will remove all 17114 * listeners for that event if a `callback` isnât passed, or only that 17115 * specific callback if it is passed. 17116 * 17117 * @param {string} eventName The name of the event. 17118 * @param {function} [callback] The specific callback to remove. 17119 * @return {void} 17120 */ 17121 17122 }, { 17123 key: "off", 17124 value: function off(eventName, callback) { 17125 if (!eventName) { 17126 throw new TypeError('You must pass an event name.'); 17127 } 17128 17129 if (callback && typeof callback !== 'function') { 17130 throw new TypeError('The callback must be a function.'); 17131 } 17132 17133 var lastCallback = removeCallback(this, "event:".concat(eventName), callback); // If there are no callbacks left, remove the listener 17134 17135 if (lastCallback) { 17136 this.callMethod('removeEventListener', eventName).catch(function (e) {// Ignore the error. There will be an error event fired that 17137 // will trigger the error callback if they are listening. 17138 }); 17139 } 17140 } 17141 /** 17142 * A promise to load a new video. 17143 * 17144 * @promise LoadVideoPromise 17145 * @fulfill {number} The video with this id successfully loaded. 17146 * @reject {TypeError} The id was not a number. 17147 */ 17148 17149 /** 17150 * Load a new video into this embed. The promise will be resolved if 17151 * the video is successfully loaded, or it will be rejected if it could 17152 * not be loaded. 17153 * 17154 * @param {number|object} options The id of the video or an object with embed options. 17155 * @return {LoadVideoPromise} 17156 */ 17157 17158 }, { 17159 key: "loadVideo", 17160 value: function loadVideo(options) { 17161 return this.callMethod('loadVideo', options); 17162 } 17163 /** 17164 * A promise to perform an action when the Player is ready. 17165 * 17166 * @todo document errors 17167 * @promise LoadVideoPromise 17168 * @fulfill {void} 17169 */ 17170 17171 /** 17172 * Trigger a function when the player iframe has initialized. You do not 17173 * need to wait for `ready` to trigger to begin adding event listeners 17174 * or calling other methods. 17175 * 17176 * @return {ReadyPromise} 17177 */ 17178 17179 }, { 17180 key: "ready", 17181 value: function ready() { 17182 var readyPromise = readyMap.get(this) || new npo_src(function (resolve, reject) { 17183 reject(new Error('Unknown player. Probably unloaded.')); 17184 }); 17185 return npo_src.resolve(readyPromise); 17186 } 17187 /** 17188 * A promise to add a cue point to the player. 17189 * 17190 * @promise AddCuePointPromise 17191 * @fulfill {string} The id of the cue point to use for removeCuePoint. 17192 * @reject {RangeError} the time was less than 0 or greater than the 17193 * videoâs duration. 17194 * @reject {UnsupportedError} Cue points are not supported with the current 17195 * player or browser. 17196 */ 17197 17198 /** 17199 * Add a cue point to the player. 17200 * 17201 * @param {number} time The time for the cue point. 17202 * @param {object} [data] Arbitrary data to be returned with the cue point. 17203 * @return {AddCuePointPromise} 17204 */ 17205 17206 }, { 17207 key: "addCuePoint", 17208 value: function addCuePoint(time) { 17209 var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 17210 return this.callMethod('addCuePoint', { 17211 time: time, 17212 data: data 17213 }); 17214 } 17215 /** 17216 * A promise to remove a cue point from the player. 17217 * 17218 * @promise AddCuePointPromise 17219 * @fulfill {string} The id of the cue point that was removed. 17220 * @reject {InvalidCuePoint} The cue point with the specified id was not 17221 * found. 17222 * @reject {UnsupportedError} Cue points are not supported with the current 17223 * player or browser. 17224 */ 17225 17226 /** 17227 * Remove a cue point from the video. 17228 * 17229 * @param {string} id The id of the cue point to remove. 17230 * @return {RemoveCuePointPromise} 17231 */ 17232 17233 }, { 17234 key: "removeCuePoint", 17235 value: function removeCuePoint(id) { 17236 return this.callMethod('removeCuePoint', id); 17237 } 17238 /** 17239 * A representation of a text track on a video. 17240 * 17241 * @typedef {Object} VimeoTextTrack 17242 * @property {string} language The ISO language code. 17243 * @property {string} kind The kind of track it is (captions or subtitles). 17244 * @property {string} label The humanâreadable label for the track. 17245 */ 17246 17247 /** 17248 * A promise to enable a text track. 17249 * 17250 * @promise EnableTextTrackPromise 17251 * @fulfill {VimeoTextTrack} The text track that was enabled. 17252 * @reject {InvalidTrackLanguageError} No track was available with the 17253 * specified language. 17254 * @reject {InvalidTrackError} No track was available with the specified 17255 * language and kind. 17256 */ 17257 17258 /** 17259 * Enable the text track with the specified language, and optionally the 17260 * specified kind (captions or subtitles). 17261 * 17262 * When set via the API, the track language will not change the viewerâs 17263 * stored preference. 17264 * 17265 * @param {string} language The twoâletter language code. 17266 * @param {string} [kind] The kind of track to enable (captions or subtitles). 17267 * @return {EnableTextTrackPromise} 17268 */ 17269 17270 }, { 17271 key: "enableTextTrack", 17272 value: function enableTextTrack(language, kind) { 17273 if (!language) { 17274 throw new TypeError('You must pass a language.'); 17275 } 17276 17277 return this.callMethod('enableTextTrack', { 17278 language: language, 17279 kind: kind 17280 }); 17281 } 17282 /** 17283 * A promise to disable the active text track. 17284 * 17285 * @promise DisableTextTrackPromise 17286 * @fulfill {void} The track was disabled. 17287 */ 17288 17289 /** 17290 * Disable the currently-active text track. 17291 * 17292 * @return {DisableTextTrackPromise} 17293 */ 17294 17295 }, { 17296 key: "disableTextTrack", 17297 value: function disableTextTrack() { 17298 return this.callMethod('disableTextTrack'); 17299 } 17300 /** 17301 * A promise to pause the video. 17302 * 17303 * @promise PausePromise 17304 * @fulfill {void} The video was paused. 17305 */ 17306 17307 /** 17308 * Pause the video if itâs playing. 17309 * 17310 * @return {PausePromise} 17311 */ 17312 17313 }, { 17314 key: "pause", 17315 value: function pause() { 17316 return this.callMethod('pause'); 17317 } 17318 /** 17319 * A promise to play the video. 17320 * 17321 * @promise PlayPromise 17322 * @fulfill {void} The video was played. 17323 */ 17324 17325 /** 17326 * Play the video if itâs paused. **Note:** on iOS and some other 17327 * mobile devices, you cannot programmatically trigger play. Once the 17328 * viewer has tapped on the play button in the player, however, you 17329 * will be able to use this function. 17330 * 17331 * @return {PlayPromise} 17332 */ 17333 17334 }, { 17335 key: "play", 17336 value: function play() { 17337 return this.callMethod('play'); 17338 } 17339 /** 17340 * Request that the player enters fullscreen. 17341 * @return {Promise} 17342 */ 17343 17344 }, { 17345 key: "requestFullscreen", 17346 value: function requestFullscreen() { 17347 return this.callMethod('requestFullscreen'); 17348 } 17349 /** 17350 * Request that the player exits fullscreen. 17351 * @return {Promise} 17352 */ 17353 17354 }, { 17355 key: "exitFullscreen", 17356 value: function exitFullscreen() { 17357 return this.callMethod('exitFullscreen'); 17358 } 17359 /** 17360 * Returns true if the player is currently fullscreen. 17361 * @return {Promise} 17362 */ 17363 17364 }, { 17365 key: "getFullscreen", 17366 value: function getFullscreen() { 17367 return this.get('fullscreen'); 17368 } 17369 /** 17370 * A promise to unload the video. 17371 * 17372 * @promise UnloadPromise 17373 * @fulfill {void} The video was unloaded. 17374 */ 17375 17376 /** 17377 * Return the player to its initial state. 17378 * 17379 * @return {UnloadPromise} 17380 */ 17381 17382 }, { 17383 key: "unload", 17384 value: function unload() { 17385 return this.callMethod('unload'); 17386 } 17387 /** 17388 * Cleanup the player and remove it from the DOM 17389 * 17390 * It won't be usable and a new one should be constructed 17391 * in order to do any operations. 17392 * 17393 * @return {Promise} 17394 */ 17395 17396 }, { 17397 key: "destroy", 17398 value: function destroy() { 17399 var _this5 = this; 17400 17401 return new npo_src(function (resolve) { 17402 readyMap.delete(_this5); 17403 playerMap.delete(_this5.element); 17404 17405 if (_this5._originalElement) { 17406 playerMap.delete(_this5._originalElement); 17407 17408 _this5._originalElement.removeAttribute('data-vimeo-initialized'); 17409 } 17410 17411 if (_this5.element && _this5.element.nodeName === 'IFRAME' && _this5.element.parentNode) { 17412 _this5.element.parentNode.removeChild(_this5.element); 17413 } 17414 17415 _this5._window.removeEventListener('message', _this5._onMessage); 17416 17417 resolve(); 17418 }); 17419 } 17420 /** 17421 * A promise to get the autopause behavior of the video. 17422 * 17423 * @promise GetAutopausePromise 17424 * @fulfill {boolean} Whether autopause is turned on or off. 17425 * @reject {UnsupportedError} Autopause is not supported with the current 17426 * player or browser. 17427 */ 17428 17429 /** 17430 * Get the autopause behavior for this player. 17431 * 17432 * @return {GetAutopausePromise} 17433 */ 17434 17435 }, { 17436 key: "getAutopause", 17437 value: function getAutopause() { 17438 return this.get('autopause'); 17439 } 17440 /** 17441 * A promise to set the autopause behavior of the video. 17442 * 17443 * @promise SetAutopausePromise 17444 * @fulfill {boolean} Whether autopause is turned on or off. 17445 * @reject {UnsupportedError} Autopause is not supported with the current 17446 * player or browser. 17447 */ 17448 17449 /** 17450 * Enable or disable the autopause behavior of this player. 17451 * 17452 * By default, when another video is played in the same browser, this 17453 * player will automatically pause. Unless you have a specific reason 17454 * for doing so, we recommend that you leave autopause set to the 17455 * default (`true`). 17456 * 17457 * @param {boolean} autopause 17458 * @return {SetAutopausePromise} 17459 */ 17460 17461 }, { 17462 key: "setAutopause", 17463 value: function setAutopause(autopause) { 17464 return this.set('autopause', autopause); 17465 } 17466 /** 17467 * A promise to get the buffered property of the video. 17468 * 17469 * @promise GetBufferedPromise 17470 * @fulfill {Array} Buffered Timeranges converted to an Array. 17471 */ 17472 17473 /** 17474 * Get the buffered property of the video. 17475 * 17476 * @return {GetBufferedPromise} 17477 */ 17478 17479 }, { 17480 key: "getBuffered", 17481 value: function getBuffered() { 17482 return this.get('buffered'); 17483 } 17484 /** 17485 * A representation of a chapter. 17486 * 17487 * @typedef {Object} VimeoChapter 17488 * @property {number} startTime The start time of the chapter. 17489 * @property {object} title The title of the chapter. 17490 * @property {number} index The place in the order of Chapters. Starts at 1. 17491 */ 17492 17493 /** 17494 * A promise to get chapters for the video. 17495 * 17496 * @promise GetChaptersPromise 17497 * @fulfill {VimeoChapter[]} The chapters for the video. 17498 */ 17499 17500 /** 17501 * Get an array of all the chapters for the video. 17502 * 17503 * @return {GetChaptersPromise} 17504 */ 17505 17506 }, { 17507 key: "getChapters", 17508 value: function getChapters() { 17509 return this.get('chapters'); 17510 } 17511 /** 17512 * A promise to get the currently active chapter. 17513 * 17514 * @promise GetCurrentChaptersPromise 17515 * @fulfill {VimeoChapter|undefined} The current chapter for the video. 17516 */ 17517 17518 /** 17519 * Get the currently active chapter for the video. 17520 * 17521 * @return {GetCurrentChaptersPromise} 17522 */ 17523 17524 }, { 17525 key: "getCurrentChapter", 17526 value: function getCurrentChapter() { 17527 return this.get('currentChapter'); 17528 } 17529 /** 17530 * A promise to get the color of the player. 17531 * 17532 * @promise GetColorPromise 17533 * @fulfill {string} The hex color of the player. 17534 */ 17535 17536 /** 17537 * Get the color for this player. 17538 * 17539 * @return {GetColorPromise} 17540 */ 17541 17542 }, { 17543 key: "getColor", 17544 value: function getColor() { 17545 return this.get('color'); 17546 } 17547 /** 17548 * A promise to set the color of the player. 17549 * 17550 * @promise SetColorPromise 17551 * @fulfill {string} The color was successfully set. 17552 * @reject {TypeError} The string was not a valid hex or rgb color. 17553 * @reject {ContrastError} The color was set, but the contrast is 17554 * outside of the acceptable range. 17555 * @reject {EmbedSettingsError} The owner of the player has chosen to 17556 * use a specific color. 17557 */ 17558 17559 /** 17560 * Set the color of this player to a hex or rgb string. Setting the 17561 * color may fail if the owner of the video has set their embed 17562 * preferences to force a specific color. 17563 * 17564 * @param {string} color The hex or rgb color string to set. 17565 * @return {SetColorPromise} 17566 */ 17567 17568 }, { 17569 key: "setColor", 17570 value: function setColor(color) { 17571 return this.set('color', color); 17572 } 17573 /** 17574 * A representation of a cue point. 17575 * 17576 * @typedef {Object} VimeoCuePoint 17577 * @property {number} time The time of the cue point. 17578 * @property {object} data The data passed when adding the cue point. 17579 * @property {string} id The unique id for use with removeCuePoint. 17580 */ 17581 17582 /** 17583 * A promise to get the cue points of a video. 17584 * 17585 * @promise GetCuePointsPromise 17586 * @fulfill {VimeoCuePoint[]} The cue points added to the video. 17587 * @reject {UnsupportedError} Cue points are not supported with the current 17588 * player or browser. 17589 */ 17590 17591 /** 17592 * Get an array of the cue points added to the video. 17593 * 17594 * @return {GetCuePointsPromise} 17595 */ 17596 17597 }, { 17598 key: "getCuePoints", 17599 value: function getCuePoints() { 17600 return this.get('cuePoints'); 17601 } 17602 /** 17603 * A promise to get the current time of the video. 17604 * 17605 * @promise GetCurrentTimePromise 17606 * @fulfill {number} The current time in seconds. 17607 */ 17608 17609 /** 17610 * Get the current playback position in seconds. 17611 * 17612 * @return {GetCurrentTimePromise} 17613 */ 17614 17615 }, { 17616 key: "getCurrentTime", 17617 value: function getCurrentTime() { 17618 return this.get('currentTime'); 17619 } 17620 /** 17621 * A promise to set the current time of the video. 17622 * 17623 * @promise SetCurrentTimePromise 17624 * @fulfill {number} The actual current time that was set. 17625 * @reject {RangeError} the time was less than 0 or greater than the 17626 * videoâs duration. 17627 */ 17628 17629 /** 17630 * Set the current playback position in seconds. If the player was 17631 * paused, it will remain paused. Likewise, if the player was playing, 17632 * it will resume playing once the video has buffered. 17633 * 17634 * You can provide an accurate time and the player will attempt to seek 17635 * to as close to that time as possible. The exact time will be the 17636 * fulfilled value of the promise. 17637 * 17638 * @param {number} currentTime 17639 * @return {SetCurrentTimePromise} 17640 */ 17641 17642 }, { 17643 key: "setCurrentTime", 17644 value: function setCurrentTime(currentTime) { 17645 return this.set('currentTime', currentTime); 17646 } 17647 /** 17648 * A promise to get the duration of the video. 17649 * 17650 * @promise GetDurationPromise 17651 * @fulfill {number} The duration in seconds. 17652 */ 17653 17654 /** 17655 * Get the duration of the video in seconds. It will be rounded to the 17656 * nearest second before playback begins, and to the nearest thousandth 17657 * of a second after playback begins. 17658 * 17659 * @return {GetDurationPromise} 17660 */ 17661 17662 }, { 17663 key: "getDuration", 17664 value: function getDuration() { 17665 return this.get('duration'); 17666 } 17667 /** 17668 * A promise to get the ended state of the video. 17669 * 17670 * @promise GetEndedPromise 17671 * @fulfill {boolean} Whether or not the video has ended. 17672 */ 17673 17674 /** 17675 * Get the ended state of the video. The video has ended if 17676 * `currentTime === duration`. 17677 * 17678 * @return {GetEndedPromise} 17679 */ 17680 17681 }, { 17682 key: "getEnded", 17683 value: function getEnded() { 17684 return this.get('ended'); 17685 } 17686 /** 17687 * A promise to get the loop state of the player. 17688 * 17689 * @promise GetLoopPromise 17690 * @fulfill {boolean} Whether or not the player is set to loop. 17691 */ 17692 17693 /** 17694 * Get the loop state of the player. 17695 * 17696 * @return {GetLoopPromise} 17697 */ 17698 17699 }, { 17700 key: "getLoop", 17701 value: function getLoop() { 17702 return this.get('loop'); 17703 } 17704 /** 17705 * A promise to set the loop state of the player. 17706 * 17707 * @promise SetLoopPromise 17708 * @fulfill {boolean} The loop state that was set. 17709 */ 17710 17711 /** 17712 * Set the loop state of the player. When set to `true`, the player 17713 * will start over immediately once playback ends. 17714 * 17715 * @param {boolean} loop 17716 * @return {SetLoopPromise} 17717 */ 17718 17719 }, { 17720 key: "setLoop", 17721 value: function setLoop(loop) { 17722 return this.set('loop', loop); 17723 } 17724 /** 17725 * A promise to set the muted state of the player. 17726 * 17727 * @promise SetMutedPromise 17728 * @fulfill {boolean} The muted state that was set. 17729 */ 17730 17731 /** 17732 * Set the muted state of the player. When set to `true`, the player 17733 * volume will be muted. 17734 * 17735 * @param {boolean} muted 17736 * @return {SetMutedPromise} 17737 */ 17738 17739 }, { 17740 key: "setMuted", 17741 value: function setMuted(muted) { 17742 return this.set('muted', muted); 17743 } 17744 /** 17745 * A promise to get the muted state of the player. 17746 * 17747 * @promise GetMutedPromise 17748 * @fulfill {boolean} Whether or not the player is muted. 17749 */ 17750 17751 /** 17752 * Get the muted state of the player. 17753 * 17754 * @return {GetMutedPromise} 17755 */ 17756 17757 }, { 17758 key: "getMuted", 17759 value: function getMuted() { 17760 return this.get('muted'); 17761 } 17762 /** 17763 * A promise to get the paused state of the player. 17764 * 17765 * @promise GetLoopPromise 17766 * @fulfill {boolean} Whether or not the video is paused. 17767 */ 17768 17769 /** 17770 * Get the paused state of the player. 17771 * 17772 * @return {GetLoopPromise} 17773 */ 17774 17775 }, { 17776 key: "getPaused", 17777 value: function getPaused() { 17778 return this.get('paused'); 17779 } 17780 /** 17781 * A promise to get the playback rate of the player. 17782 * 17783 * @promise GetPlaybackRatePromise 17784 * @fulfill {number} The playback rate of the player on a scale from 0.5 to 2. 17785 */ 17786 17787 /** 17788 * Get the playback rate of the player on a scale from `0.5` to `2`. 17789 * 17790 * @return {GetPlaybackRatePromise} 17791 */ 17792 17793 }, { 17794 key: "getPlaybackRate", 17795 value: function getPlaybackRate() { 17796 return this.get('playbackRate'); 17797 } 17798 /** 17799 * A promise to set the playbackrate of the player. 17800 * 17801 * @promise SetPlaybackRatePromise 17802 * @fulfill {number} The playback rate was set. 17803 * @reject {RangeError} The playback rate was less than 0.5 or greater than 2. 17804 */ 17805 17806 /** 17807 * Set the playback rate of the player on a scale from `0.5` to `2`. When set 17808 * via the API, the playback rate will not be synchronized to other 17809 * players or stored as the viewer's preference. 17810 * 17811 * @param {number} playbackRate 17812 * @return {SetPlaybackRatePromise} 17813 */ 17814 17815 }, { 17816 key: "setPlaybackRate", 17817 value: function setPlaybackRate(playbackRate) { 17818 return this.set('playbackRate', playbackRate); 17819 } 17820 /** 17821 * A promise to get the played property of the video. 17822 * 17823 * @promise GetPlayedPromise 17824 * @fulfill {Array} Played Timeranges converted to an Array. 17825 */ 17826 17827 /** 17828 * Get the played property of the video. 17829 * 17830 * @return {GetPlayedPromise} 17831 */ 17832 17833 }, { 17834 key: "getPlayed", 17835 value: function getPlayed() { 17836 return this.get('played'); 17837 } 17838 /** 17839 * A promise to get the seekable property of the video. 17840 * 17841 * @promise GetSeekablePromise 17842 * @fulfill {Array} Seekable Timeranges converted to an Array. 17843 */ 17844 17845 /** 17846 * Get the seekable property of the video. 17847 * 17848 * @return {GetSeekablePromise} 17849 */ 17850 17851 }, { 17852 key: "getSeekable", 17853 value: function getSeekable() { 17854 return this.get('seekable'); 17855 } 17856 /** 17857 * A promise to get the seeking property of the player. 17858 * 17859 * @promise GetSeekingPromise 17860 * @fulfill {boolean} Whether or not the player is currently seeking. 17861 */ 17862 17863 /** 17864 * Get if the player is currently seeking. 17865 * 17866 * @return {GetSeekingPromise} 17867 */ 17868 17869 }, { 17870 key: "getSeeking", 17871 value: function getSeeking() { 17872 return this.get('seeking'); 17873 } 17874 /** 17875 * A promise to get the text tracks of a video. 17876 * 17877 * @promise GetTextTracksPromise 17878 * @fulfill {VimeoTextTrack[]} The text tracks associated with the video. 17879 */ 17880 17881 /** 17882 * Get an array of the text tracks that exist for the video. 17883 * 17884 * @return {GetTextTracksPromise} 17885 */ 17886 17887 }, { 17888 key: "getTextTracks", 17889 value: function getTextTracks() { 17890 return this.get('textTracks'); 17891 } 17892 /** 17893 * A promise to get the embed code for the video. 17894 * 17895 * @promise GetVideoEmbedCodePromise 17896 * @fulfill {string} The `<iframe>` embed code for the video. 17897 */ 17898 17899 /** 17900 * Get the `<iframe>` embed code for the video. 17901 * 17902 * @return {GetVideoEmbedCodePromise} 17903 */ 17904 17905 }, { 17906 key: "getVideoEmbedCode", 17907 value: function getVideoEmbedCode() { 17908 return this.get('videoEmbedCode'); 17909 } 17910 /** 17911 * A promise to get the id of the video. 17912 * 17913 * @promise GetVideoIdPromise 17914 * @fulfill {number} The id of the video. 17915 */ 17916 17917 /** 17918 * Get the id of the video. 17919 * 17920 * @return {GetVideoIdPromise} 17921 */ 17922 17923 }, { 17924 key: "getVideoId", 17925 value: function getVideoId() { 17926 return this.get('videoId'); 17927 } 17928 /** 17929 * A promise to get the title of the video. 17930 * 17931 * @promise GetVideoTitlePromise 17932 * @fulfill {number} The title of the video. 17933 */ 17934 17935 /** 17936 * Get the title of the video. 17937 * 17938 * @return {GetVideoTitlePromise} 17939 */ 17940 17941 }, { 17942 key: "getVideoTitle", 17943 value: function getVideoTitle() { 17944 return this.get('videoTitle'); 17945 } 17946 /** 17947 * A promise to get the native width of the video. 17948 * 17949 * @promise GetVideoWidthPromise 17950 * @fulfill {number} The native width of the video. 17951 */ 17952 17953 /** 17954 * Get the native width of the currentlyâplaying video. The width of 17955 * the highestâresolution available will be used before playback begins. 17956 * 17957 * @return {GetVideoWidthPromise} 17958 */ 17959 17960 }, { 17961 key: "getVideoWidth", 17962 value: function getVideoWidth() { 17963 return this.get('videoWidth'); 17964 } 17965 /** 17966 * A promise to get the native height of the video. 17967 * 17968 * @promise GetVideoHeightPromise 17969 * @fulfill {number} The native height of the video. 17970 */ 17971 17972 /** 17973 * Get the native height of the currentlyâplaying video. The height of 17974 * the highestâresolution available will be used before playback begins. 17975 * 17976 * @return {GetVideoHeightPromise} 17977 */ 17978 17979 }, { 17980 key: "getVideoHeight", 17981 value: function getVideoHeight() { 17982 return this.get('videoHeight'); 17983 } 17984 /** 17985 * A promise to get the vimeo.com url for the video. 17986 * 17987 * @promise GetVideoUrlPromise 17988 * @fulfill {number} The vimeo.com url for the video. 17989 * @reject {PrivacyError} The url isnât available because of the videoâs privacy setting. 17990 */ 17991 17992 /** 17993 * Get the vimeo.com url for the video. 17994 * 17995 * @return {GetVideoUrlPromise} 17996 */ 17997 17998 }, { 17999 key: "getVideoUrl", 18000 value: function getVideoUrl() { 18001 return this.get('videoUrl'); 18002 } 18003 /** 18004 * A promise to get the volume level of the player. 18005 * 18006 * @promise GetVolumePromise 18007 * @fulfill {number} The volume level of the player on a scale from 0 to 1. 18008 */ 18009 18010 /** 18011 * Get the current volume level of the player on a scale from `0` to `1`. 18012 * 18013 * Most mobile devices do not support an independent volume from the 18014 * system volume. In those cases, this method will always return `1`. 18015 * 18016 * @return {GetVolumePromise} 18017 */ 18018 18019 }, { 18020 key: "getVolume", 18021 value: function getVolume() { 18022 return this.get('volume'); 18023 } 18024 /** 18025 * A promise to set the volume level of the player. 18026 * 18027 * @promise SetVolumePromise 18028 * @fulfill {number} The volume was set. 18029 * @reject {RangeError} The volume was less than 0 or greater than 1. 18030 */ 18031 18032 /** 18033 * Set the volume of the player on a scale from `0` to `1`. When set 18034 * via the API, the volume level will not be synchronized to other 18035 * players or stored as the viewerâs preference. 18036 * 18037 * Most mobile devices do not support setting the volume. An error will 18038 * *not* be triggered in that situation. 18039 * 18040 * @param {number} volume 18041 * @return {SetVolumePromise} 18042 */ 18043 18044 }, { 18045 key: "setVolume", 18046 value: function setVolume(volume) { 18047 return this.set('volume', volume); 18048 } 18049 }]); 18050 18051 return Player; 18052}(); // Setup embed only if this is not a node environment 18053 18054 18055if (!isNode) { 18056 initializeEmbeds(); 18057 resizeEmbeds(); 18058} 18059 18060/* harmony default export */ __webpack_exports__["default"] = (Player); 18061 18062/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"), __webpack_require__(/*! ./../../../timers-browserify/main.js */ "./node_modules/timers-browserify/main.js").setImmediate)) 18063 18064/***/ }), 18065
vendor: 1,408 bytes, lines 18066-18108
18066/***/ "./node_modules/@zootools/email-spell-checker/dist/index.js": 18067/*!******************************************************************!*\ 18068 !*** ./node_modules/@zootools/email-spell-checker/dist/index.js ***! 18069 \******************************************************************/ 18070/*! no static exports found */ 18071/***/ (function(module, exports, __webpack_require__) { 18072 18073"use strict"; 18074 18075 18076var __importDefault = this && this.__importDefault || function (mod) { 18077 return mod && mod.__esModule ? mod : { 18078 "default": mod 18079 }; 18080}; 18081Object.defineProperty(exports, "__esModule", { 18082 value: true 18083}); 18084exports.POPULAR_TLDS = exports.POPULAR_DOMAINS = exports.run = void 0; 18085var run_1 = __importDefault(__webpack_require__(/*! ./lib/run */ "./node_modules/@zootools/email-spell-checker/dist/lib/run.js")); 18086exports.run = run_1.default; 18087var config_1 = __webpack_require__(/*! ./lib/config */ "./node_modules/@zootools/email-spell-checker/dist/lib/config/index.js"); 18088Object.defineProperty(exports, "POPULAR_DOMAINS", { 18089 enumerable: true, 18090 get: function get() { 18091 return config_1.POPULAR_DOMAINS; 18092 } 18093}); 18094Object.defineProperty(exports, "POPULAR_TLDS", { 18095 enumerable: true, 18096 get: function get() { 18097 return config_1.POPULAR_TLDS; 18098 } 18099}); 18100var MailSpellChecker = { 18101 run: run_1.default, 18102 POPULAR_DOMAINS: config_1.POPULAR_DOMAINS, 18103 POPULAR_TLDS: config_1.POPULAR_TLDS 18104}; 18105exports.default = MailSpellChecker; 18106 18107/***/ }), 18108
vendor: 3,075 bytes, lines 18109-18164
18109/***/ "./node_modules/@zootools/email-spell-checker/dist/lib/config/index.js": 18110/*!*****************************************************************************!*\ 18111 !*** ./node_modules/@zootools/email-spell-checker/dist/lib/config/index.js ***! 18112 \*****************************************************************************/ 18113/*! no static exports found */ 18114/***/ (function(module, exports, __webpack_require__) { 18115 18116"use strict"; 18117 18118 18119// Default configuration options 18120var __importDefault = this && this.__importDefault || function (mod) { 18121 return mod && mod.__esModule ? mod : { 18122 "default": mod 18123 }; 18124}; 18125Object.defineProperty(exports, "__esModule", { 18126 value: true 18127}); 18128exports.POPULAR_TLDS = exports.POPULAR_DOMAINS = exports.DEFAULT_CONFIG = void 0; 18129var sift3_distance_1 = __importDefault(__webpack_require__(/*! ../fuzzy-detection/sift3-distance */ "./node_modules/@zootools/email-spell-checker/dist/lib/fuzzy-detection/sift3-distance.js")); 18130/*** 18131 * Default list of popular emails for 2022 and onwards. 18132 * https://www.mailmunch.com/blog/best-email-service-providers 18133 * 18134 * If you find a domain you want to add, please submit a PR. 18135 * Also, notice that this list is not exhaustive. 18136 * You can always pass your own list of domains. 18137 */ 18138var POPULAR_DOMAINS = ['msn.com', 'bellsouth.net', 'telus.net', 'comcast.net', 'optusnet.com.au', 'earthlink.net', 'qq.com', 'sky.com', 'icloud.com', 'sympatico.ca', 'googlemail.com', 'att.net', 'xtra.co.nz', 'web.de', 'cox.net', 'gmail.com', 'ymail.com', 'aim.com', 'rogers.com', 'verizon.net', 'rocketmail.com', 'optonline.net', 'sbcglobal.net', 18139// aol 18140'aol.com', 'aim.com', 'me.com', 'mailw.com', 'btinternet.com', 'charter.net', 'shaw.ca', 'hey.com', 18141// Proton 18142'proton.me', 'pm.com', 'protonmail.com', 'zoho.com', 'yandex.com', 'titan.email']; 18143exports.POPULAR_DOMAINS = POPULAR_DOMAINS; 18144var POPULAR_TLDS = ['com', 'com.au', 'com.tw', 'co', 'ca', 'co.nz', 'co.uk', 'de', 'fr', 'it', 'ru', 'org', 'edu', 'gov', 'jp', 'nl', 'kr', 'se', 'eu', 'ie', 'co.il', 'us', 'at', 'be', 'dk', 'hk', 'es', 'gr', 'ch', 'no', 'cz', 'net', 'net.au', 'info', 'biz', 'mil', 'co.jp', 'sg', 'hu', 'uk', 'sk', 18145// Country specific popular domains 18146'ar', 'cf', 'cl', 'cn', 'ga', 'gq', 'ir', 'ml', 'mx', 'nu', 'nz', 'ph', 'pl', 'ro', 'tk', 'tw', 'ua', 'vg', 'ws', 'xn', 'za', 18147// popular TLDs that startup use in 2022 18148// https://thewebsiteflip.com/domains/funded-startup-brands-2021/#:~:text=from%20the%20data.-,1.,TLDs%20for%20the%20foreseeable%20future. 18149// https://martijnoud.com/most-popular-tld-crypto/ 18150'app', 'au', 'ai', 'biz', 'br', 'blog', 'cloud', 'club', 'cc', 'de', 'dev', 'digital', 'fi', 'finance', 'id', 'in', 'io', 'me', 'mobi', 'network', 'pw', 'so', 'xyz', 'software', 'to', 'tech']; 18151exports.POPULAR_TLDS = POPULAR_TLDS; 18152var DEFAULT_CONFIG = { 18153 domainThreshold: 2, 18154 domains: POPULAR_DOMAINS, 18155 secondLevelThreshold: 2, 18156 secondLevelDomains: ['yahoo', 'hotmail', 'mail', 'live', 'outlook'], 18157 topLevelThreshold: 2, 18158 topLevelDomains: POPULAR_TLDS, 18159 distanceFunction: sift3_distance_1.default 18160}; 18161exports.DEFAULT_CONFIG = DEFAULT_CONFIG; 18162 18163/***/ }), 18164
vendor: 1,577 bytes, lines 18165-18219
18165/***/ "./node_modules/@zootools/email-spell-checker/dist/lib/fuzzy-detection/sift3-distance.js": 18166/*!***********************************************************************************************!*\ 18167 !*** ./node_modules/@zootools/email-spell-checker/dist/lib/fuzzy-detection/sift3-distance.js ***! 18168 \***********************************************************************************************/ 18169/*! no static exports found */ 18170/***/ (function(module, exports, __webpack_require__) { 18171 18172"use strict"; 18173 18174 18175Object.defineProperty(exports, "__esModule", { 18176 value: true 18177}); 18178function sift3Distance(s1, s2) { 18179 // sift3: http://siderite.blogspot.com/2007/04/super-fast-and-accurate-string-distance.html 18180 if (s1 == null || s1.length === 0) { 18181 if (s2 == null || s2.length === 0) { 18182 return 0; 18183 } else { 18184 return s2.length; 18185 } 18186 } 18187 if (s2 == null || s2.length === 0) { 18188 return s1.length; 18189 } 18190 var c = 0; 18191 var offset1 = 0; 18192 var offset2 = 0; 18193 var lcs = 0; 18194 var maxOffset = 5; 18195 while (c + offset1 < s1.length && c + offset2 < s2.length) { 18196 if (s1.charAt(c + offset1) == s2.charAt(c + offset2)) { 18197 lcs++; 18198 } else { 18199 offset1 = 0; 18200 offset2 = 0; 18201 for (var i = 0; i < maxOffset; i++) { 18202 if (c + i < s1.length && s1.charAt(c + i) == s2.charAt(c)) { 18203 offset1 = i; 18204 break; 18205 } 18206 if (c + i < s2.length && s1.charAt(c) == s2.charAt(c + i)) { 18207 offset2 = i; 18208 break; 18209 } 18210 } 18211 } 18212 c++; 18213 } 18214 return (s1.length + s2.length) / 2 - lcs; 18215} 18216exports.default = sift3Distance; 18217 18218/***/ }), 18219
vendor: 1,347 bytes, lines 18220-18248
18220/***/ "./node_modules/@zootools/email-spell-checker/dist/lib/helpers/assert-valid-user-options.js": 18221/*!**************************************************************************************************!*\ 18222 !*** ./node_modules/@zootools/email-spell-checker/dist/lib/helpers/assert-valid-user-options.js ***! 18223 \**************************************************************************************************/ 18224/*! no static exports found */ 18225/***/ (function(module, exports, __webpack_require__) { 18226 18227"use strict"; 18228 18229 18230var __importDefault = this && this.__importDefault || function (mod) { 18231 return mod && mod.__esModule ? mod : { 18232 "default": mod 18233 }; 18234}; 18235Object.defineProperty(exports, "__esModule", { 18236 value: true 18237}); 18238var assert_1 = __importDefault(__webpack_require__(/*! ./assert */ "./node_modules/@zootools/email-spell-checker/dist/lib/helpers/assert.js")); 18239function assertValidUserOptions(options) { 18240 assert_1.default(Array.isArray(options.domains), 'domains must be an array'); 18241 assert_1.default(Array.isArray(options.topLevelDomains), 'topLevelDomains must be an array'); 18242 assert_1.default(Array.isArray(options.secondLevelDomains), 'secondLevelDomains must be an array'); 18243 assert_1.default(typeof options.distanceFunction === 'function', 'distanceFunction must be a function'); 18244} 18245exports.default = assertValidUserOptions; 18246 18247/***/ }), 18248
vendor: 636 bytes, lines 18249-18270
18249/***/ "./node_modules/@zootools/email-spell-checker/dist/lib/helpers/assert.js": 18250/*!*******************************************************************************!*\ 18251 !*** ./node_modules/@zootools/email-spell-checker/dist/lib/helpers/assert.js ***! 18252 \*******************************************************************************/ 18253/*! no static exports found */ 18254/***/ (function(module, exports, __webpack_require__) { 18255 18256"use strict"; 18257 18258 18259Object.defineProperty(exports, "__esModule", { 18260 value: true 18261}); 18262function assert(condition, message) { 18263 if (!condition) { 18264 throw new Error(message); 18265 } 18266} 18267exports.default = assert; 18268 18269/***/ }), 18270
vendor: 1,063 bytes, lines 18271-18297
18271/***/ "./node_modules/@zootools/email-spell-checker/dist/lib/helpers/encode-email.js": 18272/*!*************************************************************************************!*\ 18273 !*** ./node_modules/@zootools/email-spell-checker/dist/lib/helpers/encode-email.js ***! 18274 \*************************************************************************************/ 18275/*! no static exports found */ 18276/***/ (function(module, exports, __webpack_require__) { 18277 18278"use strict"; 18279 18280 18281Object.defineProperty(exports, "__esModule", { 18282 value: true 18283}); 18284// Encode the email address to prevent XSS but leave in valid 18285// characters, following this official spec: 18286// http://en.wikipedia.org/wiki/Email_address#Syntax 18287// 18288// We have to replace all the possible characters. 18289// that's why we use a regex with a global flag. 18290function encodeEmail(email) { 18291 var result = encodeURI(email).replace(/%20/g, ' ').replace(/%25/g, '%').replace(/%5E/g, '^').replace(/%60/g, '`').replace(/%7B/g, '{').replace(/%7C/g, '|').replace(/%7D/g, '}'); 18292 return result; 18293} 18294exports.default = encodeEmail; 18295 18296/***/ }), 18297
vendor: 1,262 bytes, lines 18298-18341
18298/***/ "./node_modules/@zootools/email-spell-checker/dist/lib/helpers/find-closest-domain.js": 18299/*!********************************************************************************************!*\ 18300 !*** ./node_modules/@zootools/email-spell-checker/dist/lib/helpers/find-closest-domain.js ***! 18301 \********************************************************************************************/ 18302/*! no static exports found */ 18303/***/ (function(module, exports, __webpack_require__) { 18304 18305"use strict"; 18306 18307 18308Object.defineProperty(exports, "__esModule", { 18309 value: true 18310}); 18311function findClosestDomain(opts) { 18312 var domain = opts.domain, 18313 domains = opts.domains, 18314 distanceFunction = opts.distanceFunction, 18315 threshold = opts.threshold; 18316 var dist; 18317 var minDist = Infinity; 18318 var closestDomain = null; 18319 if (!domain || !domains) { 18320 return undefined; 18321 } 18322 for (var i = 0; i < domains.length; i++) { 18323 if (domain === domains[i]) { 18324 return domain; 18325 } 18326 dist = distanceFunction(domain, domains[i]); 18327 if (dist < minDist) { 18328 minDist = dist; 18329 closestDomain = domains[i]; 18330 } 18331 } 18332 if (minDist <= threshold && closestDomain !== null) { 18333 return closestDomain; 18334 } else { 18335 return undefined; 18336 } 18337} 18338exports.default = findClosestDomain; 18339 18340/***/ }), 18341
vendor: 1,532 bytes, lines 18342-18373
18342/***/ "./node_modules/@zootools/email-spell-checker/dist/lib/helpers/get-options.js": 18343/*!************************************************************************************!*\ 18344 !*** ./node_modules/@zootools/email-spell-checker/dist/lib/helpers/get-options.js ***! 18345 \************************************************************************************/ 18346/*! no static exports found */ 18347/***/ (function(module, exports, __webpack_require__) { 18348 18349"use strict"; 18350 18351 18352Object.defineProperty(exports, "__esModule", { 18353 value: true 18354}); 18355var config_1 = __webpack_require__(/*! ../config */ "./node_modules/@zootools/email-spell-checker/dist/lib/config/index.js"); 18356function getOptions(userOptions) { 18357 return { 18358 email: userOptions.email, 18359 domains: userOptions.domains || config_1.DEFAULT_CONFIG.domains, 18360 topLevelDomains: userOptions.topLevelDomains || config_1.DEFAULT_CONFIG.topLevelDomains, 18361 secondLevelDomains: userOptions.secondLevelDomains || config_1.DEFAULT_CONFIG.secondLevelDomains, 18362 distanceFunction: userOptions.distanceFunction || config_1.DEFAULT_CONFIG.distanceFunction, 18363 domainThreshold: userOptions.domainThreshold || config_1.DEFAULT_CONFIG.domainThreshold, 18364 secondLevelThreshold: userOptions.secondLevelThreshold || config_1.DEFAULT_CONFIG.secondLevelThreshold, 18365 topLevelThreshold: userOptions.topLevelThreshold || config_1.DEFAULT_CONFIG.topLevelThreshold, 18366 suggested: userOptions.suggested || undefined, 18367 empty: userOptions.suggested || undefined 18368 }; 18369} 18370exports.default = getOptions; 18371 18372/***/ }), 18373
vendor: 1,918 bytes, lines 18374-18436
18374/***/ "./node_modules/@zootools/email-spell-checker/dist/lib/helpers/parse-email.js": 18375/*!************************************************************************************!*\ 18376 !*** ./node_modules/@zootools/email-spell-checker/dist/lib/helpers/parse-email.js ***! 18377 \************************************************************************************/ 18378/*! no static exports found */ 18379/***/ (function(module, exports, __webpack_require__) { 18380 18381"use strict"; 18382 18383 18384var __importDefault = this && this.__importDefault || function (mod) { 18385 return mod && mod.__esModule ? mod : { 18386 "default": mod 18387 }; 18388}; 18389Object.defineProperty(exports, "__esModule", { 18390 value: true 18391}); 18392var trim_1 = __importDefault(__webpack_require__(/*! ./trim */ "./node_modules/@zootools/email-spell-checker/dist/lib/helpers/trim.js")); 18393var MINIUM_EMAIL_PARTS = 2; 18394function parseEmail(emailStr) { 18395 var email = trim_1.default(emailStr); 18396 var parts = email.split('@'); 18397 if (parts.length < MINIUM_EMAIL_PARTS) { 18398 return false; 18399 } 18400 for (var i = 0; i < parts.length; i++) { 18401 if (parts[i] === '') { 18402 return false; 18403 } 18404 } 18405 // FYI, in [email protected] 18406 // secondLevelDomain -> example 18407 // topLevelDomain -> com 18408 var sld = ''; 18409 var tld = ''; 18410 var domain = parts.pop(); 18411 var domainParts = domain.split('.'); 18412 if (domainParts.length === 0) { 18413 // The address does not have a top-level domain 18414 return false; 18415 } else if (domainParts.length == 1) { 18416 // The address has only a top-level domain (valid under RFC) 18417 tld = domainParts[0]; 18418 } else { 18419 // The address has a domain and a top-level domain 18420 sld = domainParts[0]; 18421 for (var j = 1; j < domainParts.length; j++) { 18422 tld += domainParts[j] + '.'; 18423 } 18424 tld = tld.substring(0, tld.length - 1); 18425 } 18426 return { 18427 topLevelDomain: tld, 18428 secondLevelDomain: sld, 18429 domain: domain, 18430 address: parts.join('@') 18431 }; 18432} 18433exports.default = parseEmail; 18434 18435/***/ }), 18436
vendor: 1,064 bytes, lines 18437-18477
18437/***/ "./node_modules/@zootools/email-spell-checker/dist/lib/helpers/trim.js": 18438/*!*****************************************************************************!*\ 18439 !*** ./node_modules/@zootools/email-spell-checker/dist/lib/helpers/trim.js ***! 18440 \*****************************************************************************/ 18441/*! no static exports found */ 18442/***/ (function(module, exports, __webpack_require__) { 18443 18444"use strict"; 18445 18446 18447Object.defineProperty(exports, "__esModule", { 18448 value: true 18449}); 18450var WHITESPACE_PATTERN = /\s/; 18451/** 18452 * Just in case a browser doesn't support .trim 18453 * Copied from https://github.com/Trott/trim 18454 * Credits to them 18455 */ 18456function trim(str) { 18457 if (str.trim) { 18458 return str.trim(); 18459 } 18460 return right(left(str)); 18461} 18462function left(str) { 18463 if (str.trimLeft) return str.trimLeft(); 18464 return str.replace(/^\s\s*/, ''); 18465} 18466function right(str) { 18467 if (str.trimRight) return str.trimRight(); 18468 var i = str.length; 18469 while (WHITESPACE_PATTERN.test(str.charAt(--i))) { 18470 ; 18471 } 18472 return str.slice(0, i + 1); 18473} 18474exports.default = trim; 18475 18476/***/ }), 18477
vendor: 1,511 bytes, lines 18478-18514
18478/***/ "./node_modules/@zootools/email-spell-checker/dist/lib/run.js": 18479/*!********************************************************************!*\ 18480 !*** ./node_modules/@zootools/email-spell-checker/dist/lib/run.js ***! 18481 \********************************************************************/ 18482/*! no static exports found */ 18483/***/ (function(module, exports, __webpack_require__) { 18484 18485"use strict"; 18486 18487 18488var __importDefault = this && this.__importDefault || function (mod) { 18489 return mod && mod.__esModule ? mod : { 18490 "default": mod 18491 }; 18492}; 18493Object.defineProperty(exports, "__esModule", { 18494 value: true 18495}); 18496var assert_valid_user_options_1 = __importDefault(__webpack_require__(/*! ./helpers/assert-valid-user-options */ "./node_modules/@zootools/email-spell-checker/dist/lib/helpers/assert-valid-user-options.js")); 18497var suggest_email_1 = __importDefault(__webpack_require__(/*! ./suggest-email */ "./node_modules/@zootools/email-spell-checker/dist/lib/suggest-email.js")); 18498var get_options_1 = __importDefault(__webpack_require__(/*! ./helpers/get-options */ "./node_modules/@zootools/email-spell-checker/dist/lib/helpers/get-options.js")); 18499function run(userOptions) { 18500 var options = get_options_1.default(userOptions); 18501 assert_valid_user_options_1.default(options || {}); 18502 var email = suggest_email_1.default(options); 18503 if (!email && userOptions.empty) { 18504 userOptions.empty(); 18505 } 18506 if (email && userOptions.suggested) { 18507 userOptions.suggested(email); 18508 } 18509 return email; 18510} 18511exports.default = run; 18512 18513/***/ }), 18514
vendor: 4,252 bytes, lines 18515-18616
18515/***/ "./node_modules/@zootools/email-spell-checker/dist/lib/suggest-email.js": 18516/*!******************************************************************************!*\ 18517 !*** ./node_modules/@zootools/email-spell-checker/dist/lib/suggest-email.js ***! 18518 \******************************************************************************/ 18519/*! no static exports found */ 18520/***/ (function(module, exports, __webpack_require__) { 18521 18522"use strict"; 18523 18524 18525var __importDefault = this && this.__importDefault || function (mod) { 18526 return mod && mod.__esModule ? mod : { 18527 "default": mod 18528 }; 18529}; 18530Object.defineProperty(exports, "__esModule", { 18531 value: true 18532}); 18533var encode_email_1 = __importDefault(__webpack_require__(/*! ./helpers/encode-email */ "./node_modules/@zootools/email-spell-checker/dist/lib/helpers/encode-email.js")); 18534var find_closest_domain_1 = __importDefault(__webpack_require__(/*! ./helpers/find-closest-domain */ "./node_modules/@zootools/email-spell-checker/dist/lib/helpers/find-closest-domain.js")); 18535var parse_email_1 = __importDefault(__webpack_require__(/*! ./helpers/parse-email */ "./node_modules/@zootools/email-spell-checker/dist/lib/helpers/parse-email.js")); 18536function suggestEmail(opts) { 18537 var encodedEmail = encode_email_1.default(opts.email.toLowerCase()); 18538 var email = parse_email_1.default(encodedEmail); 18539 if (!email) { 18540 return undefined; 18541 } 18542 var domains = opts.domains, 18543 domainThreshold = opts.domainThreshold, 18544 distanceFunction = opts.distanceFunction, 18545 secondLevelDomains = opts.secondLevelDomains, 18546 topLevelDomains = opts.topLevelDomains; 18547 if (secondLevelDomains && topLevelDomains) { 18548 // If the email is a valid 2nd-level + top-level, do not suggest anything. 18549 // if (hasValidSecondLevelDomain(email) && hasValidTopLevelDomain(email)) { 18550 if (secondLevelDomains.indexOf(email.secondLevelDomain) !== -1 && topLevelDomains.indexOf(email.topLevelDomain) !== -1) { 18551 return undefined; 18552 } 18553 } 18554 var closestDomain = find_closest_domain_1.default({ 18555 domain: email.domain, 18556 domains: domains, 18557 distanceFunction: distanceFunction, 18558 threshold: domainThreshold 18559 }); 18560 if (closestDomain) { 18561 if (closestDomain == email.domain) { 18562 // The email address exactly matches one of the supplied domains; do not return a suggestion. 18563 return undefined; 18564 } else { 18565 // The email address closely matches one of the supplied domains; return a suggestion 18566 return { 18567 address: email.address, 18568 domain: closestDomain, 18569 full: email.address + '@' + closestDomain 18570 }; 18571 } 18572 } 18573 // The email address does not closely match one of the supplied domains 18574 var closestSecondLevelDomain = find_closest_domain_1.default({ 18575 domain: email.secondLevelDomain, 18576 domains: secondLevelDomains, 18577 distanceFunction: distanceFunction, 18578 threshold: opts.secondLevelThreshold 18579 }); 18580 var closestTopLevelDomain = find_closest_domain_1.default({ 18581 domain: email.topLevelDomain, 18582 domains: topLevelDomains, 18583 distanceFunction: distanceFunction, 18584 threshold: opts.topLevelThreshold 18585 }); 18586 if (email.domain) { 18587 closestDomain = email.domain; 18588 var rtrn = false; 18589 if (closestSecondLevelDomain && closestSecondLevelDomain != email.secondLevelDomain) { 18590 // The email address may have a mispelled second-level domain; return a suggestion 18591 closestDomain = closestDomain.replace(email.secondLevelDomain, closestSecondLevelDomain); 18592 rtrn = true; 18593 } 18594 if (closestTopLevelDomain && closestTopLevelDomain != email.topLevelDomain && email.secondLevelDomain !== '') { 18595 // The email address may have a mispelled top-level domain; return a suggestion 18596 closestDomain = closestDomain.replace(new RegExp(email.topLevelDomain + '$'), closestTopLevelDomain); 18597 rtrn = true; 18598 } 18599 if (rtrn) { 18600 return { 18601 address: email.address, 18602 domain: closestDomain, 18603 full: email.address + '@' + closestDomain 18604 }; 18605 } 18606 } 18607 /* The email address exactly matches one of the supplied domains, does not closely 18608 * match any domain and does not appear to simply have a mispelled top-level domain, 18609 * or is an invalid email address; do not return a suggestion. 18610 */ 18611 return undefined; 18612} 18613exports.default = suggestEmail; 18614 18615/***/ }), 18616
vendor: 24,070 bytes, lines 18617-19176
18617/***/ "./node_modules/bootstrap/js/src/carousel.js": 18618/*!***************************************************!*\ 18619 !*** ./node_modules/bootstrap/js/src/carousel.js ***! 18620 \***************************************************/ 18621/*! exports provided: default */ 18622/***/ (function(module, __webpack_exports__, __webpack_require__) { 18623 18624"use strict"; 18625__webpack_require__.r(__webpack_exports__); 18626/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 18627/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 18628/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "./node_modules/bootstrap/js/src/util.js"); 18629function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 18630function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } 18631function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } 18632function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 18633function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 18634function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } 18635function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 18636function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } 18637function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } 18638/** 18639 * -------------------------------------------------------------------------- 18640 * Bootstrap (v4.6.2): carousel.js 18641 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 18642 * -------------------------------------------------------------------------- 18643 */ 18644 18645 18646 18647 18648/** 18649 * Constants 18650 */ 18651 18652var NAME = 'carousel'; 18653var VERSION = '4.6.2'; 18654var DATA_KEY = 'bs.carousel'; 18655var EVENT_KEY = ".".concat(DATA_KEY); 18656var DATA_API_KEY = '.data-api'; 18657var JQUERY_NO_CONFLICT = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME]; 18658var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key 18659var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key 18660var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch 18661var SWIPE_THRESHOLD = 40; 18662var CLASS_NAME_CAROUSEL = 'carousel'; 18663var CLASS_NAME_ACTIVE = 'active'; 18664var CLASS_NAME_SLIDE = 'slide'; 18665var CLASS_NAME_RIGHT = 'carousel-item-right'; 18666var CLASS_NAME_LEFT = 'carousel-item-left'; 18667var CLASS_NAME_NEXT = 'carousel-item-next'; 18668var CLASS_NAME_PREV = 'carousel-item-prev'; 18669var CLASS_NAME_POINTER_EVENT = 'pointer-event'; 18670var DIRECTION_NEXT = 'next'; 18671var DIRECTION_PREV = 'prev'; 18672var DIRECTION_LEFT = 'left'; 18673var DIRECTION_RIGHT = 'right'; 18674var EVENT_SLIDE = "slide".concat(EVENT_KEY); 18675var EVENT_SLID = "slid".concat(EVENT_KEY); 18676var EVENT_KEYDOWN = "keydown".concat(EVENT_KEY); 18677var EVENT_MOUSEENTER = "mouseenter".concat(EVENT_KEY); 18678var EVENT_MOUSELEAVE = "mouseleave".concat(EVENT_KEY); 18679var EVENT_TOUCHSTART = "touchstart".concat(EVENT_KEY); 18680var EVENT_TOUCHMOVE = "touchmove".concat(EVENT_KEY); 18681var EVENT_TOUCHEND = "touchend".concat(EVENT_KEY); 18682var EVENT_POINTERDOWN = "pointerdown".concat(EVENT_KEY); 18683var EVENT_POINTERUP = "pointerup".concat(EVENT_KEY); 18684var EVENT_DRAG_START = "dragstart".concat(EVENT_KEY); 18685var EVENT_LOAD_DATA_API = "load".concat(EVENT_KEY).concat(DATA_API_KEY); 18686var EVENT_CLICK_DATA_API = "click".concat(EVENT_KEY).concat(DATA_API_KEY); 18687var SELECTOR_ACTIVE = '.active'; 18688var SELECTOR_ACTIVE_ITEM = '.active.carousel-item'; 18689var SELECTOR_ITEM = '.carousel-item'; 18690var SELECTOR_ITEM_IMG = '.carousel-item img'; 18691var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'; 18692var SELECTOR_INDICATORS = '.carousel-indicators'; 18693var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]'; 18694var SELECTOR_DATA_RIDE = '[data-ride="carousel"]'; 18695var Default = { 18696 interval: 5000, 18697 keyboard: true, 18698 slide: false, 18699 pause: 'hover', 18700 wrap: true, 18701 touch: true 18702}; 18703var DefaultType = { 18704 interval: '(number|boolean)', 18705 keyboard: 'boolean', 18706 slide: '(boolean|string)', 18707 pause: '(string|boolean)', 18708 wrap: 'boolean', 18709 touch: 'boolean' 18710}; 18711var PointerType = { 18712 TOUCH: 'touch', 18713 PEN: 'pen' 18714}; 18715 18716/** 18717 * Class definition 18718 */ 18719var Carousel = /*#__PURE__*/function () { 18720 function Carousel(element, config) { 18721 _classCallCheck(this, Carousel); 18722 this._items = null; 18723 this._interval = null; 18724 this._activeElement = null; 18725 this._isPaused = false; 18726 this._isSliding = false; 18727 this.touchTimeout = null; 18728 this.touchStartX = 0; 18729 this.touchDeltaX = 0; 18730 this._config = this._getConfig(config); 18731 this._element = element; 18732 this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS); 18733 this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; 18734 this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent); 18735 this._addEventListeners(); 18736 } 18737 18738 // Getters 18739 _createClass(Carousel, [{ 18740 key: "next", 18741 // Public 18742 value: function next() { 18743 if (!this._isSliding) { 18744 this._slide(DIRECTION_NEXT); 18745 } 18746 } 18747 }, { 18748 key: "nextWhenVisible", 18749 value: function nextWhenVisible() { 18750 var $element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element); 18751 // Don't call next when the page isn't visible 18752 // or the carousel or its parent isn't visible 18753 if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') { 18754 this.next(); 18755 } 18756 } 18757 }, { 18758 key: "prev", 18759 value: function prev() { 18760 if (!this._isSliding) { 18761 this._slide(DIRECTION_PREV); 18762 } 18763 } 18764 }, { 18765 key: "pause", 18766 value: function pause(event) { 18767 if (!event) { 18768 this._isPaused = true; 18769 } 18770 if (this._element.querySelector(SELECTOR_NEXT_PREV)) { 18771 _util__WEBPACK_IMPORTED_MODULE_1__["default"].triggerTransitionEnd(this._element); 18772 this.cycle(true); 18773 } 18774 clearInterval(this._interval); 18775 this._interval = null; 18776 } 18777 }, { 18778 key: "cycle", 18779 value: function cycle(event) { 18780 if (!event) { 18781 this._isPaused = false; 18782 } 18783 if (this._interval) { 18784 clearInterval(this._interval); 18785 this._interval = null; 18786 } 18787 if (this._config.interval && !this._isPaused) { 18788 this._updateInterval(); 18789 this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); 18790 } 18791 } 18792 }, { 18793 key: "to", 18794 value: function to(index) { 18795 var _this = this; 18796 this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM); 18797 var activeIndex = this._getItemIndex(this._activeElement); 18798 if (index > this._items.length - 1 || index < 0) { 18799 return; 18800 } 18801 if (this._isSliding) { 18802 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).one(EVENT_SLID, function () { 18803 return _this.to(index); 18804 }); 18805 return; 18806 } 18807 if (activeIndex === index) { 18808 this.pause(); 18809 this.cycle(); 18810 return; 18811 } 18812 var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV; 18813 this._slide(direction, this._items[index]); 18814 } 18815 }, { 18816 key: "dispose", 18817 value: function dispose() { 18818 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).off(EVENT_KEY); 18819 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.removeData(this._element, DATA_KEY); 18820 this._items = null; 18821 this._config = null; 18822 this._element = null; 18823 this._interval = null; 18824 this._isPaused = null; 18825 this._isSliding = null; 18826 this._activeElement = null; 18827 this._indicatorsElement = null; 18828 } // Private 18829 }, { 18830 key: "_getConfig", 18831 value: function _getConfig(config) { 18832 config = _objectSpread(_objectSpread({}, Default), config); 18833 _util__WEBPACK_IMPORTED_MODULE_1__["default"].typeCheckConfig(NAME, config, DefaultType); 18834 return config; 18835 } 18836 }, { 18837 key: "_handleSwipe", 18838 value: function _handleSwipe() { 18839 var absDeltax = Math.abs(this.touchDeltaX); 18840 if (absDeltax <= SWIPE_THRESHOLD) { 18841 return; 18842 } 18843 var direction = absDeltax / this.touchDeltaX; 18844 this.touchDeltaX = 0; 18845 18846 // swipe left 18847 if (direction > 0) { 18848 this.prev(); 18849 } 18850 18851 // swipe right 18852 if (direction < 0) { 18853 this.next(); 18854 } 18855 } 18856 }, { 18857 key: "_addEventListeners", 18858 value: function _addEventListeners() { 18859 var _this2 = this; 18860 if (this._config.keyboard) { 18861 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).on(EVENT_KEYDOWN, function (event) { 18862 return _this2._keydown(event); 18863 }); 18864 } 18865 if (this._config.pause === 'hover') { 18866 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).on(EVENT_MOUSEENTER, function (event) { 18867 return _this2.pause(event); 18868 }).on(EVENT_MOUSELEAVE, function (event) { 18869 return _this2.cycle(event); 18870 }); 18871 } 18872 if (this._config.touch) { 18873 this._addTouchEventListeners(); 18874 } 18875 } 18876 }, { 18877 key: "_addTouchEventListeners", 18878 value: function _addTouchEventListeners() { 18879 var _this3 = this; 18880 if (!this._touchSupported) { 18881 return; 18882 } 18883 var start = function start(event) { 18884 if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) { 18885 _this3.touchStartX = event.originalEvent.clientX; 18886 } else if (!_this3._pointerEvent) { 18887 _this3.touchStartX = event.originalEvent.touches[0].clientX; 18888 } 18889 }; 18890 var move = function move(event) { 18891 // ensure swiping with one touch and not pinching 18892 _this3.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ? 0 : event.originalEvent.touches[0].clientX - _this3.touchStartX; 18893 }; 18894 var end = function end(event) { 18895 if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) { 18896 _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX; 18897 } 18898 _this3._handleSwipe(); 18899 if (_this3._config.pause === 'hover') { 18900 // If it's a touch-enabled device, mouseenter/leave are fired as 18901 // part of the mouse compatibility events on first tap - the carousel 18902 // would stop cycling until user tapped out of it; 18903 // here, we listen for touchend, explicitly pause the carousel 18904 // (as if it's the second time we tap on it, mouseenter compat event 18905 // is NOT fired) and after a timeout (to allow for mouse compatibility 18906 // events to fire) we explicitly restart cycling 18907 18908 _this3.pause(); 18909 if (_this3.touchTimeout) { 18910 clearTimeout(_this3.touchTimeout); 18911 } 18912 _this3.touchTimeout = setTimeout(function (event) { 18913 return _this3.cycle(event); 18914 }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval); 18915 } 18916 }; 18917 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) { 18918 return e.preventDefault(); 18919 }); 18920 if (this._pointerEvent) { 18921 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).on(EVENT_POINTERDOWN, function (event) { 18922 return start(event); 18923 }); 18924 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).on(EVENT_POINTERUP, function (event) { 18925 return end(event); 18926 }); 18927 this._element.classList.add(CLASS_NAME_POINTER_EVENT); 18928 } else { 18929 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).on(EVENT_TOUCHSTART, function (event) { 18930 return start(event); 18931 }); 18932 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).on(EVENT_TOUCHMOVE, function (event) { 18933 return move(event); 18934 }); 18935 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).on(EVENT_TOUCHEND, function (event) { 18936 return end(event); 18937 }); 18938 } 18939 } 18940 }, { 18941 key: "_keydown", 18942 value: function _keydown(event) { 18943 if (/input|textarea/i.test(event.target.tagName)) { 18944 return; 18945 } 18946 switch (event.which) { 18947 case ARROW_LEFT_KEYCODE: 18948 event.preventDefault(); 18949 this.prev(); 18950 break; 18951 case ARROW_RIGHT_KEYCODE: 18952 event.preventDefault(); 18953 this.next(); 18954 break; 18955 default: 18956 } 18957 } 18958 }, { 18959 key: "_getItemIndex", 18960 value: function _getItemIndex(element) { 18961 this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : []; 18962 return this._items.indexOf(element); 18963 } 18964 }, { 18965 key: "_getItemByDirection", 18966 value: function _getItemByDirection(direction, activeElement) { 18967 var isNextDirection = direction === DIRECTION_NEXT; 18968 var isPrevDirection = direction === DIRECTION_PREV; 18969 var activeIndex = this._getItemIndex(activeElement); 18970 var lastItemIndex = this._items.length - 1; 18971 var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; 18972 if (isGoingToWrap && !this._config.wrap) { 18973 return activeElement; 18974 } 18975 var delta = direction === DIRECTION_PREV ? -1 : 1; 18976 var itemIndex = (activeIndex + delta) % this._items.length; 18977 return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; 18978 } 18979 }, { 18980 key: "_triggerSlideEvent", 18981 value: function _triggerSlideEvent(relatedTarget, eventDirectionName) { 18982 var targetIndex = this._getItemIndex(relatedTarget); 18983 var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM)); 18984 var slideEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(EVENT_SLIDE, { 18985 relatedTarget: relatedTarget, 18986 direction: eventDirectionName, 18987 from: fromIndex, 18988 to: targetIndex 18989 }); 18990 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).trigger(slideEvent); 18991 return slideEvent; 18992 } 18993 }, { 18994 key: "_setActiveIndicatorElement", 18995 value: function _setActiveIndicatorElement(element) { 18996 if (this._indicatorsElement) { 18997 var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE)); 18998 jquery__WEBPACK_IMPORTED_MODULE_0___default()(indicators).removeClass(CLASS_NAME_ACTIVE); 18999 var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; 19000 if (nextIndicator) { 19001 jquery__WEBPACK_IMPORTED_MODULE_0___default()(nextIndicator).addClass(CLASS_NAME_ACTIVE); 19002 } 19003 } 19004 } 19005 }, { 19006 key: "_updateInterval", 19007 value: function _updateInterval() { 19008 var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM); 19009 if (!element) { 19010 return; 19011 } 19012 var elementInterval = parseInt(element.getAttribute('data-interval'), 10); 19013 if (elementInterval) { 19014 this._config.defaultInterval = this._config.defaultInterval || this._config.interval; 19015 this._config.interval = elementInterval; 19016 } else { 19017 this._config.interval = this._config.defaultInterval || this._config.interval; 19018 } 19019 } 19020 }, { 19021 key: "_slide", 19022 value: function _slide(direction, element) { 19023 var _this4 = this; 19024 var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM); 19025 var activeElementIndex = this._getItemIndex(activeElement); 19026 var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); 19027 var nextElementIndex = this._getItemIndex(nextElement); 19028 var isCycling = Boolean(this._interval); 19029 var directionalClassName; 19030 var orderClassName; 19031 var eventDirectionName; 19032 if (direction === DIRECTION_NEXT) { 19033 directionalClassName = CLASS_NAME_LEFT; 19034 orderClassName = CLASS_NAME_NEXT; 19035 eventDirectionName = DIRECTION_LEFT; 19036 } else { 19037 directionalClassName = CLASS_NAME_RIGHT; 19038 orderClassName = CLASS_NAME_PREV; 19039 eventDirectionName = DIRECTION_RIGHT; 19040 } 19041 if (nextElement && jquery__WEBPACK_IMPORTED_MODULE_0___default()(nextElement).hasClass(CLASS_NAME_ACTIVE)) { 19042 this._isSliding = false; 19043 return; 19044 } 19045 var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); 19046 if (slideEvent.isDefaultPrevented()) { 19047 return; 19048 } 19049 if (!activeElement || !nextElement) { 19050 // Some weirdness is happening, so we bail 19051 return; 19052 } 19053 this._isSliding = true; 19054 if (isCycling) { 19055 this.pause(); 19056 } 19057 this._setActiveIndicatorElement(nextElement); 19058 this._activeElement = nextElement; 19059 var slidEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(EVENT_SLID, { 19060 relatedTarget: nextElement, 19061 direction: eventDirectionName, 19062 from: activeElementIndex, 19063 to: nextElementIndex 19064 }); 19065 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(CLASS_NAME_SLIDE)) { 19066 jquery__WEBPACK_IMPORTED_MODULE_0___default()(nextElement).addClass(orderClassName); 19067 _util__WEBPACK_IMPORTED_MODULE_1__["default"].reflow(nextElement); 19068 jquery__WEBPACK_IMPORTED_MODULE_0___default()(activeElement).addClass(directionalClassName); 19069 jquery__WEBPACK_IMPORTED_MODULE_0___default()(nextElement).addClass(directionalClassName); 19070 var transitionDuration = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getTransitionDurationFromElement(activeElement); 19071 jquery__WEBPACK_IMPORTED_MODULE_0___default()(activeElement).one(_util__WEBPACK_IMPORTED_MODULE_1__["default"].TRANSITION_END, function () { 19072 jquery__WEBPACK_IMPORTED_MODULE_0___default()(nextElement).removeClass("".concat(directionalClassName, " ").concat(orderClassName)).addClass(CLASS_NAME_ACTIVE); 19073 jquery__WEBPACK_IMPORTED_MODULE_0___default()(activeElement).removeClass("".concat(CLASS_NAME_ACTIVE, " ").concat(orderClassName, " ").concat(directionalClassName)); 19074 _this4._isSliding = false; 19075 setTimeout(function () { 19076 return jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this4._element).trigger(slidEvent); 19077 }, 0); 19078 }).emulateTransitionEnd(transitionDuration); 19079 } else { 19080 jquery__WEBPACK_IMPORTED_MODULE_0___default()(activeElement).removeClass(CLASS_NAME_ACTIVE); 19081 jquery__WEBPACK_IMPORTED_MODULE_0___default()(nextElement).addClass(CLASS_NAME_ACTIVE); 19082 this._isSliding = false; 19083 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).trigger(slidEvent); 19084 } 19085 if (isCycling) { 19086 this.cycle(); 19087 } 19088 } // Static 19089 }], [{ 19090 key: "_jQueryInterface", 19091 value: function _jQueryInterface(config) { 19092 return this.each(function () { 19093 var data = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data(DATA_KEY); 19094 var _config = _objectSpread(_objectSpread({}, Default), jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data()); 19095 if (_typeof(config) === 'object') { 19096 _config = _objectSpread(_objectSpread({}, _config), config); 19097 } 19098 var action = typeof config === 'string' ? config : _config.slide; 19099 if (!data) { 19100 data = new Carousel(this, _config); 19101 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data(DATA_KEY, data); 19102 } 19103 if (typeof config === 'number') { 19104 data.to(config); 19105 } else if (typeof action === 'string') { 19106 if (typeof data[action] === 'undefined') { 19107 throw new TypeError("No method named \"".concat(action, "\"")); 19108 } 19109 data[action](); 19110 } else if (_config.interval && _config.ride) { 19111 data.pause(); 19112 data.cycle(); 19113 } 19114 }); 19115 } 19116 }, { 19117 key: "_dataApiClickHandler", 19118 value: function _dataApiClickHandler(event) { 19119 var selector = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getSelectorFromElement(this); 19120 if (!selector) { 19121 return; 19122 } 19123 var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(selector)[0]; 19124 if (!target || !jquery__WEBPACK_IMPORTED_MODULE_0___default()(target).hasClass(CLASS_NAME_CAROUSEL)) { 19125 return; 19126 } 19127 var config = _objectSpread(_objectSpread({}, jquery__WEBPACK_IMPORTED_MODULE_0___default()(target).data()), jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data()); 19128 var slideIndex = this.getAttribute('data-slide-to'); 19129 if (slideIndex) { 19130 config.interval = false; 19131 } 19132 Carousel._jQueryInterface.call(jquery__WEBPACK_IMPORTED_MODULE_0___default()(target), config); 19133 if (slideIndex) { 19134 jquery__WEBPACK_IMPORTED_MODULE_0___default()(target).data(DATA_KEY).to(slideIndex); 19135 } 19136 event.preventDefault(); 19137 } 19138 }, { 19139 key: "VERSION", 19140 get: function get() { 19141 return VERSION; 19142 } 19143 }, { 19144 key: "Default", 19145 get: function get() { 19146 return Default; 19147 } 19148 }]); 19149 return Carousel; 19150}(); 19151/** 19152 * Data API implementation 19153 */ 19154jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler); 19155jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on(EVENT_LOAD_DATA_API, function () { 19156 var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE)); 19157 for (var i = 0, len = carousels.length; i < len; i++) { 19158 var $carousel = jquery__WEBPACK_IMPORTED_MODULE_0___default()(carousels[i]); 19159 Carousel._jQueryInterface.call($carousel, $carousel.data()); 19160 } 19161}); 19162 19163/** 19164 * jQuery 19165 */ 19166 19167jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = Carousel._jQueryInterface; 19168jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].Constructor = Carousel; 19169jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].noConflict = function () { 19170 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = JQUERY_NO_CONFLICT; 19171 return Carousel._jQueryInterface; 19172}; 19173/* harmony default export */ __webpack_exports__["default"] = (Carousel); 19174 19175/***/ }), 19176
vendor: 16,297 bytes, lines 19177-19508
19177/***/ "./node_modules/bootstrap/js/src/collapse.js": 19178/*!***************************************************!*\ 19179 !*** ./node_modules/bootstrap/js/src/collapse.js ***! 19180 \***************************************************/ 19181/*! exports provided: default */ 19182/***/ (function(module, __webpack_exports__, __webpack_require__) { 19183 19184"use strict"; 19185__webpack_require__.r(__webpack_exports__); 19186/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 19187/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 19188/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "./node_modules/bootstrap/js/src/util.js"); 19189function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 19190function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } 19191function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } 19192function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 19193function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 19194function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } 19195function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 19196function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } 19197function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } 19198/** 19199 * -------------------------------------------------------------------------- 19200 * Bootstrap (v4.6.2): collapse.js 19201 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 19202 * -------------------------------------------------------------------------- 19203 */ 19204 19205 19206 19207 19208/** 19209 * Constants 19210 */ 19211 19212var NAME = 'collapse'; 19213var VERSION = '4.6.2'; 19214var DATA_KEY = 'bs.collapse'; 19215var EVENT_KEY = ".".concat(DATA_KEY); 19216var DATA_API_KEY = '.data-api'; 19217var JQUERY_NO_CONFLICT = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME]; 19218var CLASS_NAME_SHOW = 'show'; 19219var CLASS_NAME_COLLAPSE = 'collapse'; 19220var CLASS_NAME_COLLAPSING = 'collapsing'; 19221var CLASS_NAME_COLLAPSED = 'collapsed'; 19222var DIMENSION_WIDTH = 'width'; 19223var DIMENSION_HEIGHT = 'height'; 19224var EVENT_SHOW = "show".concat(EVENT_KEY); 19225var EVENT_SHOWN = "shown".concat(EVENT_KEY); 19226var EVENT_HIDE = "hide".concat(EVENT_KEY); 19227var EVENT_HIDDEN = "hidden".concat(EVENT_KEY); 19228var EVENT_CLICK_DATA_API = "click".concat(EVENT_KEY).concat(DATA_API_KEY); 19229var SELECTOR_ACTIVES = '.show, .collapsing'; 19230var SELECTOR_DATA_TOGGLE = '[data-toggle="collapse"]'; 19231var Default = { 19232 toggle: true, 19233 parent: '' 19234}; 19235var DefaultType = { 19236 toggle: 'boolean', 19237 parent: '(string|element)' 19238}; 19239 19240/** 19241 * Class definition 19242 */ 19243var Collapse = /*#__PURE__*/function () { 19244 function Collapse(element, config) { 19245 _classCallCheck(this, Collapse); 19246 this._isTransitioning = false; 19247 this._element = element; 19248 this._config = this._getConfig(config); 19249 this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#".concat(element.id, "\"],") + "[data-toggle=\"collapse\"][data-target=\"#".concat(element.id, "\"]"))); 19250 var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE)); 19251 for (var i = 0, len = toggleList.length; i < len; i++) { 19252 var elem = toggleList[i]; 19253 var selector = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getSelectorFromElement(elem); 19254 var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) { 19255 return foundElem === element; 19256 }); 19257 if (selector !== null && filterElement.length > 0) { 19258 this._selector = selector; 19259 this._triggerArray.push(elem); 19260 } 19261 } 19262 this._parent = this._config.parent ? this._getParent() : null; 19263 if (!this._config.parent) { 19264 this._addAriaAndCollapsedClass(this._element, this._triggerArray); 19265 } 19266 if (this._config.toggle) { 19267 this.toggle(); 19268 } 19269 } 19270 19271 // Getters 19272 _createClass(Collapse, [{ 19273 key: "toggle", 19274 // Public 19275 value: function toggle() { 19276 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(CLASS_NAME_SHOW)) { 19277 this.hide(); 19278 } else { 19279 this.show(); 19280 } 19281 } 19282 }, { 19283 key: "show", 19284 value: function show() { 19285 var _this = this; 19286 if (this._isTransitioning || jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(CLASS_NAME_SHOW)) { 19287 return; 19288 } 19289 var actives; 19290 var activesData; 19291 if (this._parent) { 19292 actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) { 19293 if (typeof _this._config.parent === 'string') { 19294 return elem.getAttribute('data-parent') === _this._config.parent; 19295 } 19296 return elem.classList.contains(CLASS_NAME_COLLAPSE); 19297 }); 19298 if (actives.length === 0) { 19299 actives = null; 19300 } 19301 } 19302 if (actives) { 19303 activesData = jquery__WEBPACK_IMPORTED_MODULE_0___default()(actives).not(this._selector).data(DATA_KEY); 19304 if (activesData && activesData._isTransitioning) { 19305 return; 19306 } 19307 } 19308 var startEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(EVENT_SHOW); 19309 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).trigger(startEvent); 19310 if (startEvent.isDefaultPrevented()) { 19311 return; 19312 } 19313 if (actives) { 19314 Collapse._jQueryInterface.call(jquery__WEBPACK_IMPORTED_MODULE_0___default()(actives).not(this._selector), 'hide'); 19315 if (!activesData) { 19316 jquery__WEBPACK_IMPORTED_MODULE_0___default()(actives).data(DATA_KEY, null); 19317 } 19318 } 19319 var dimension = this._getDimension(); 19320 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING); 19321 this._element.style[dimension] = 0; 19322 if (this._triggerArray.length) { 19323 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true); 19324 } 19325 this.setTransitioning(true); 19326 var complete = function complete() { 19327 jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass("".concat(CLASS_NAME_COLLAPSE, " ").concat(CLASS_NAME_SHOW)); 19328 _this._element.style[dimension] = ''; 19329 _this.setTransitioning(false); 19330 jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this._element).trigger(EVENT_SHOWN); 19331 }; 19332 var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); 19333 var scrollSize = "scroll".concat(capitalizedDimension); 19334 var transitionDuration = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getTransitionDurationFromElement(this._element); 19335 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).one(_util__WEBPACK_IMPORTED_MODULE_1__["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); 19336 this._element.style[dimension] = "".concat(this._element[scrollSize], "px"); 19337 } 19338 }, { 19339 key: "hide", 19340 value: function hide() { 19341 var _this2 = this; 19342 if (this._isTransitioning || !jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(CLASS_NAME_SHOW)) { 19343 return; 19344 } 19345 var startEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(EVENT_HIDE); 19346 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).trigger(startEvent); 19347 if (startEvent.isDefaultPrevented()) { 19348 return; 19349 } 19350 var dimension = this._getDimension(); 19351 this._element.style[dimension] = "".concat(this._element.getBoundingClientRect()[dimension], "px"); 19352 _util__WEBPACK_IMPORTED_MODULE_1__["default"].reflow(this._element); 19353 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).addClass(CLASS_NAME_COLLAPSING).removeClass("".concat(CLASS_NAME_COLLAPSE, " ").concat(CLASS_NAME_SHOW)); 19354 var triggerArrayLength = this._triggerArray.length; 19355 if (triggerArrayLength > 0) { 19356 for (var i = 0; i < triggerArrayLength; i++) { 19357 var trigger = this._triggerArray[i]; 19358 var selector = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getSelectorFromElement(trigger); 19359 if (selector !== null) { 19360 var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()([].slice.call(document.querySelectorAll(selector))); 19361 if (!$elem.hasClass(CLASS_NAME_SHOW)) { 19362 jquery__WEBPACK_IMPORTED_MODULE_0___default()(trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false); 19363 } 19364 } 19365 } 19366 } 19367 this.setTransitioning(true); 19368 var complete = function complete() { 19369 _this2.setTransitioning(false); 19370 jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN); 19371 }; 19372 this._element.style[dimension] = ''; 19373 var transitionDuration = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getTransitionDurationFromElement(this._element); 19374 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).one(_util__WEBPACK_IMPORTED_MODULE_1__["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); 19375 } 19376 }, { 19377 key: "setTransitioning", 19378 value: function setTransitioning(isTransitioning) { 19379 this._isTransitioning = isTransitioning; 19380 } 19381 }, { 19382 key: "dispose", 19383 value: function dispose() { 19384 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.removeData(this._element, DATA_KEY); 19385 this._config = null; 19386 this._parent = null; 19387 this._element = null; 19388 this._triggerArray = null; 19389 this._isTransitioning = null; 19390 } // Private 19391 }, { 19392 key: "_getConfig", 19393 value: function _getConfig(config) { 19394 config = _objectSpread(_objectSpread({}, Default), config); 19395 config.toggle = Boolean(config.toggle); // Coerce string values 19396 _util__WEBPACK_IMPORTED_MODULE_1__["default"].typeCheckConfig(NAME, config, DefaultType); 19397 return config; 19398 } 19399 }, { 19400 key: "_getDimension", 19401 value: function _getDimension() { 19402 var hasWidth = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(DIMENSION_WIDTH); 19403 return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT; 19404 } 19405 }, { 19406 key: "_getParent", 19407 value: function _getParent() { 19408 var _this3 = this; 19409 var parent; 19410 if (_util__WEBPACK_IMPORTED_MODULE_1__["default"].isElement(this._config.parent)) { 19411 parent = this._config.parent; 19412 19413 // It's a jQuery object 19414 if (typeof this._config.parent.jquery !== 'undefined') { 19415 parent = this._config.parent[0]; 19416 } 19417 } else { 19418 parent = document.querySelector(this._config.parent); 19419 } 19420 var selector = "[data-toggle=\"collapse\"][data-parent=\"".concat(this._config.parent, "\"]"); 19421 var children = [].slice.call(parent.querySelectorAll(selector)); 19422 jquery__WEBPACK_IMPORTED_MODULE_0___default()(children).each(function (i, element) { 19423 _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); 19424 }); 19425 return parent; 19426 } 19427 }, { 19428 key: "_addAriaAndCollapsedClass", 19429 value: function _addAriaAndCollapsedClass(element, triggerArray) { 19430 var isOpen = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).hasClass(CLASS_NAME_SHOW); 19431 if (triggerArray.length) { 19432 jquery__WEBPACK_IMPORTED_MODULE_0___default()(triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen); 19433 } 19434 } // Static 19435 }], [{ 19436 key: "_getTargetFromElement", 19437 value: function _getTargetFromElement(element) { 19438 var selector = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getSelectorFromElement(element); 19439 return selector ? document.querySelector(selector) : null; 19440 } 19441 }, { 19442 key: "_jQueryInterface", 19443 value: function _jQueryInterface(config) { 19444 return this.each(function () { 19445 var $element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this); 19446 var data = $element.data(DATA_KEY); 19447 var _config = _objectSpread(_objectSpread(_objectSpread({}, Default), $element.data()), _typeof(config) === 'object' && config ? config : {}); 19448 if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) { 19449 _config.toggle = false; 19450 } 19451 if (!data) { 19452 data = new Collapse(this, _config); 19453 $element.data(DATA_KEY, data); 19454 } 19455 if (typeof config === 'string') { 19456 if (typeof data[config] === 'undefined') { 19457 throw new TypeError("No method named \"".concat(config, "\"")); 19458 } 19459 data[config](); 19460 } 19461 }); 19462 } 19463 }, { 19464 key: "VERSION", 19465 get: function get() { 19466 return VERSION; 19467 } 19468 }, { 19469 key: "Default", 19470 get: function get() { 19471 return Default; 19472 } 19473 }]); 19474 return Collapse; 19475}(); 19476/** 19477 * Data API implementation 19478 */ 19479jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) { 19480 // preventDefault only for <a> elements (which change the URL) not inside the collapsible element 19481 if (event.currentTarget.tagName === 'A') { 19482 event.preventDefault(); 19483 } 19484 var $trigger = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this); 19485 var selector = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getSelectorFromElement(this); 19486 var selectors = [].slice.call(document.querySelectorAll(selector)); 19487 jquery__WEBPACK_IMPORTED_MODULE_0___default()(selectors).each(function () { 19488 var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this); 19489 var data = $target.data(DATA_KEY); 19490 var config = data ? 'toggle' : $trigger.data(); 19491 Collapse._jQueryInterface.call($target, config); 19492 }); 19493}); 19494 19495/** 19496 * jQuery 19497 */ 19498 19499jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = Collapse._jQueryInterface; 19500jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].Constructor = Collapse; 19501jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].noConflict = function () { 19502 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = JQUERY_NO_CONFLICT; 19503 return Collapse._jQueryInterface; 19504}; 19505/* harmony default export */ __webpack_exports__["default"] = (Collapse); 19506 19507/***/ }), 19508
vendor: 21,867 bytes, lines 19509-19983
19509/***/ "./node_modules/bootstrap/js/src/dropdown.js": 19510/*!***************************************************!*\ 19511 !*** ./node_modules/bootstrap/js/src/dropdown.js ***! 19512 \***************************************************/ 19513/*! exports provided: default */ 19514/***/ (function(module, __webpack_exports__, __webpack_require__) { 19515 19516"use strict"; 19517__webpack_require__.r(__webpack_exports__); 19518/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 19519/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 19520/* harmony import */ var popper_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! popper.js */ "./node_modules/popper.js/dist/esm/popper.js"); 19521/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ "./node_modules/bootstrap/js/src/util.js"); 19522function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 19523function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } 19524function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } 19525function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 19526function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 19527function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } 19528function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 19529function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } 19530function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } 19531/** 19532 * -------------------------------------------------------------------------- 19533 * Bootstrap (v4.6.2): dropdown.js 19534 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 19535 * -------------------------------------------------------------------------- 19536 */ 19537 19538 19539 19540 19541 19542/** 19543 * Constants 19544 */ 19545 19546var NAME = 'dropdown'; 19547var VERSION = '4.6.2'; 19548var DATA_KEY = 'bs.dropdown'; 19549var EVENT_KEY = ".".concat(DATA_KEY); 19550var DATA_API_KEY = '.data-api'; 19551var JQUERY_NO_CONFLICT = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME]; 19552var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key 19553var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key 19554var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key 19555var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key 19556var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key 19557var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse) 19558var REGEXP_KEYDOWN = new RegExp("".concat(ARROW_UP_KEYCODE, "|").concat(ARROW_DOWN_KEYCODE, "|").concat(ESCAPE_KEYCODE)); 19559var CLASS_NAME_DISABLED = 'disabled'; 19560var CLASS_NAME_SHOW = 'show'; 19561var CLASS_NAME_DROPUP = 'dropup'; 19562var CLASS_NAME_DROPRIGHT = 'dropright'; 19563var CLASS_NAME_DROPLEFT = 'dropleft'; 19564var CLASS_NAME_MENURIGHT = 'dropdown-menu-right'; 19565var CLASS_NAME_POSITION_STATIC = 'position-static'; 19566var EVENT_HIDE = "hide".concat(EVENT_KEY); 19567var EVENT_HIDDEN = "hidden".concat(EVENT_KEY); 19568var EVENT_SHOW = "show".concat(EVENT_KEY); 19569var EVENT_SHOWN = "shown".concat(EVENT_KEY); 19570var EVENT_CLICK = "click".concat(EVENT_KEY); 19571var EVENT_CLICK_DATA_API = "click".concat(EVENT_KEY).concat(DATA_API_KEY); 19572var EVENT_KEYDOWN_DATA_API = "keydown".concat(EVENT_KEY).concat(DATA_API_KEY); 19573var EVENT_KEYUP_DATA_API = "keyup".concat(EVENT_KEY).concat(DATA_API_KEY); 19574var SELECTOR_DATA_TOGGLE = '[data-toggle="dropdown"]'; 19575var SELECTOR_FORM_CHILD = '.dropdown form'; 19576var SELECTOR_MENU = '.dropdown-menu'; 19577var SELECTOR_NAVBAR_NAV = '.navbar-nav'; 19578var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'; 19579var PLACEMENT_TOP = 'top-start'; 19580var PLACEMENT_TOPEND = 'top-end'; 19581var PLACEMENT_BOTTOM = 'bottom-start'; 19582var PLACEMENT_BOTTOMEND = 'bottom-end'; 19583var PLACEMENT_RIGHT = 'right-start'; 19584var PLACEMENT_LEFT = 'left-start'; 19585var Default = { 19586 offset: 0, 19587 flip: true, 19588 boundary: 'scrollParent', 19589 reference: 'toggle', 19590 display: 'dynamic', 19591 popperConfig: null 19592}; 19593var DefaultType = { 19594 offset: '(number|string|function)', 19595 flip: 'boolean', 19596 boundary: '(string|element)', 19597 reference: '(string|element)', 19598 display: 'string', 19599 popperConfig: '(null|object)' 19600}; 19601 19602/** 19603 * Class definition 19604 */ 19605var Dropdown = /*#__PURE__*/function () { 19606 function Dropdown(element, config) { 19607 _classCallCheck(this, Dropdown); 19608 this._element = element; 19609 this._popper = null; 19610 this._config = this._getConfig(config); 19611 this._menu = this._getMenuElement(); 19612 this._inNavbar = this._detectNavbar(); 19613 this._addEventListeners(); 19614 } 19615 19616 // Getters 19617 _createClass(Dropdown, [{ 19618 key: "toggle", 19619 // Public 19620 value: function toggle() { 19621 if (this._element.disabled || jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(CLASS_NAME_DISABLED)) { 19622 return; 19623 } 19624 var isActive = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._menu).hasClass(CLASS_NAME_SHOW); 19625 Dropdown._clearMenus(); 19626 if (isActive) { 19627 return; 19628 } 19629 this.show(true); 19630 } 19631 }, { 19632 key: "show", 19633 value: function show() { 19634 var usePopper = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; 19635 if (this._element.disabled || jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(CLASS_NAME_DISABLED) || jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._menu).hasClass(CLASS_NAME_SHOW)) { 19636 return; 19637 } 19638 var relatedTarget = { 19639 relatedTarget: this._element 19640 }; 19641 var showEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(EVENT_SHOW, relatedTarget); 19642 var parent = Dropdown._getParentFromElement(this._element); 19643 jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).trigger(showEvent); 19644 if (showEvent.isDefaultPrevented()) { 19645 return; 19646 } 19647 19648 // Totally disable Popper for Dropdowns in Navbar 19649 if (!this._inNavbar && usePopper) { 19650 // Check for Popper dependency 19651 if (typeof popper_js__WEBPACK_IMPORTED_MODULE_1__["default"] === 'undefined') { 19652 throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)'); 19653 } 19654 var referenceElement = this._element; 19655 if (this._config.reference === 'parent') { 19656 referenceElement = parent; 19657 } else if (_util__WEBPACK_IMPORTED_MODULE_2__["default"].isElement(this._config.reference)) { 19658 referenceElement = this._config.reference; 19659 19660 // Check if it's jQuery element 19661 if (typeof this._config.reference.jquery !== 'undefined') { 19662 referenceElement = this._config.reference[0]; 19663 } 19664 } 19665 19666 // If boundary is not `scrollParent`, then set position to `static` 19667 // to allow the menu to "escape" the scroll parent's boundaries 19668 // https://github.com/twbs/bootstrap/issues/24251 19669 if (this._config.boundary !== 'scrollParent') { 19670 jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).addClass(CLASS_NAME_POSITION_STATIC); 19671 } 19672 this._popper = new popper_js__WEBPACK_IMPORTED_MODULE_1__["default"](referenceElement, this._menu, this._getPopperConfig()); 19673 } 19674 19675 // If this is a touch-enabled device we add extra 19676 // empty mouseover listeners to the body's immediate children; 19677 // only needed because of broken event delegation on iOS 19678 // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html 19679 if ('ontouchstart' in document.documentElement && jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).closest(SELECTOR_NAVBAR_NAV).length === 0) { 19680 jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).children().on('mouseover', null, jquery__WEBPACK_IMPORTED_MODULE_0___default.a.noop); 19681 } 19682 this._element.focus(); 19683 this._element.setAttribute('aria-expanded', true); 19684 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._menu).toggleClass(CLASS_NAME_SHOW); 19685 jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).toggleClass(CLASS_NAME_SHOW).trigger(jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(EVENT_SHOWN, relatedTarget)); 19686 } 19687 }, { 19688 key: "hide", 19689 value: function hide() { 19690 if (this._element.disabled || jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(CLASS_NAME_DISABLED) || !jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._menu).hasClass(CLASS_NAME_SHOW)) { 19691 return; 19692 } 19693 var relatedTarget = { 19694 relatedTarget: this._element 19695 }; 19696 var hideEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(EVENT_HIDE, relatedTarget); 19697 var parent = Dropdown._getParentFromElement(this._element); 19698 jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).trigger(hideEvent); 19699 if (hideEvent.isDefaultPrevented()) { 19700 return; 19701 } 19702 if (this._popper) { 19703 this._popper.destroy(); 19704 } 19705 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._menu).toggleClass(CLASS_NAME_SHOW); 19706 jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).toggleClass(CLASS_NAME_SHOW).trigger(jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(EVENT_HIDDEN, relatedTarget)); 19707 } 19708 }, { 19709 key: "dispose", 19710 value: function dispose() { 19711 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.removeData(this._element, DATA_KEY); 19712 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).off(EVENT_KEY); 19713 this._element = null; 19714 this._menu = null; 19715 if (this._popper !== null) { 19716 this._popper.destroy(); 19717 this._popper = null; 19718 } 19719 } 19720 }, { 19721 key: "update", 19722 value: function update() { 19723 this._inNavbar = this._detectNavbar(); 19724 if (this._popper !== null) { 19725 this._popper.scheduleUpdate(); 19726 } 19727 } // Private 19728 }, { 19729 key: "_addEventListeners", 19730 value: function _addEventListeners() { 19731 var _this = this; 19732 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).on(EVENT_CLICK, function (event) { 19733 event.preventDefault(); 19734 event.stopPropagation(); 19735 _this.toggle(); 19736 }); 19737 } 19738 }, { 19739 key: "_getConfig", 19740 value: function _getConfig(config) { 19741 config = _objectSpread(_objectSpread(_objectSpread({}, this.constructor.Default), jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).data()), config); 19742 _util__WEBPACK_IMPORTED_MODULE_2__["default"].typeCheckConfig(NAME, config, this.constructor.DefaultType); 19743 return config; 19744 } 19745 }, { 19746 key: "_getMenuElement", 19747 value: function _getMenuElement() { 19748 if (!this._menu) { 19749 var parent = Dropdown._getParentFromElement(this._element); 19750 if (parent) { 19751 this._menu = parent.querySelector(SELECTOR_MENU); 19752 } 19753 } 19754 return this._menu; 19755 } 19756 }, { 19757 key: "_getPlacement", 19758 value: function _getPlacement() { 19759 var $parentDropdown = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element.parentNode); 19760 var placement = PLACEMENT_BOTTOM; 19761 19762 // Handle dropup 19763 if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) { 19764 placement = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP; 19765 } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) { 19766 placement = PLACEMENT_RIGHT; 19767 } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) { 19768 placement = PLACEMENT_LEFT; 19769 } else if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._menu).hasClass(CLASS_NAME_MENURIGHT)) { 19770 placement = PLACEMENT_BOTTOMEND; 19771 } 19772 return placement; 19773 } 19774 }, { 19775 key: "_detectNavbar", 19776 value: function _detectNavbar() { 19777 return jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).closest('.navbar').length > 0; 19778 } 19779 }, { 19780 key: "_getOffset", 19781 value: function _getOffset() { 19782 var _this2 = this; 19783 var offset = {}; 19784 if (typeof this._config.offset === 'function') { 19785 offset.fn = function (data) { 19786 data.offsets = _objectSpread(_objectSpread({}, data.offsets), _this2._config.offset(data.offsets, _this2._element)); 19787 return data; 19788 }; 19789 } else { 19790 offset.offset = this._config.offset; 19791 } 19792 return offset; 19793 } 19794 }, { 19795 key: "_getPopperConfig", 19796 value: function _getPopperConfig() { 19797 var popperConfig = { 19798 placement: this._getPlacement(), 19799 modifiers: { 19800 offset: this._getOffset(), 19801 flip: { 19802 enabled: this._config.flip 19803 }, 19804 preventOverflow: { 19805 boundariesElement: this._config.boundary 19806 } 19807 } 19808 }; 19809 19810 // Disable Popper if we have a static display 19811 if (this._config.display === 'static') { 19812 popperConfig.modifiers.applyStyle = { 19813 enabled: false 19814 }; 19815 } 19816 return _objectSpread(_objectSpread({}, popperConfig), this._config.popperConfig); 19817 } // Static 19818 }], [{ 19819 key: "_jQueryInterface", 19820 value: function _jQueryInterface(config) { 19821 return this.each(function () { 19822 var data = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data(DATA_KEY); 19823 var _config = _typeof(config) === 'object' ? config : null; 19824 if (!data) { 19825 data = new Dropdown(this, _config); 19826 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data(DATA_KEY, data); 19827 } 19828 if (typeof config === 'string') { 19829 if (typeof data[config] === 'undefined') { 19830 throw new TypeError("No method named \"".concat(config, "\"")); 19831 } 19832 data[config](); 19833 } 19834 }); 19835 } 19836 }, { 19837 key: "_clearMenus", 19838 value: function _clearMenus(event) { 19839 if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) { 19840 return; 19841 } 19842 var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE)); 19843 for (var i = 0, len = toggles.length; i < len; i++) { 19844 var parent = Dropdown._getParentFromElement(toggles[i]); 19845 var context = jquery__WEBPACK_IMPORTED_MODULE_0___default()(toggles[i]).data(DATA_KEY); 19846 var relatedTarget = { 19847 relatedTarget: toggles[i] 19848 }; 19849 if (event && event.type === 'click') { 19850 relatedTarget.clickEvent = event; 19851 } 19852 if (!context) { 19853 continue; 19854 } 19855 var dropdownMenu = context._menu; 19856 if (!jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).hasClass(CLASS_NAME_SHOW)) { 19857 continue; 19858 } 19859 if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(parent, event.target)) { 19860 continue; 19861 } 19862 var hideEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(EVENT_HIDE, relatedTarget); 19863 jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).trigger(hideEvent); 19864 if (hideEvent.isDefaultPrevented()) { 19865 continue; 19866 } 19867 19868 // If this is a touch-enabled device we remove the extra 19869 // empty mouseover listeners we added for iOS support 19870 if ('ontouchstart' in document.documentElement) { 19871 jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).children().off('mouseover', null, jquery__WEBPACK_IMPORTED_MODULE_0___default.a.noop); 19872 } 19873 toggles[i].setAttribute('aria-expanded', 'false'); 19874 if (context._popper) { 19875 context._popper.destroy(); 19876 } 19877 jquery__WEBPACK_IMPORTED_MODULE_0___default()(dropdownMenu).removeClass(CLASS_NAME_SHOW); 19878 jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).removeClass(CLASS_NAME_SHOW).trigger(jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(EVENT_HIDDEN, relatedTarget)); 19879 } 19880 } 19881 }, { 19882 key: "_getParentFromElement", 19883 value: function _getParentFromElement(element) { 19884 var parent; 19885 var selector = _util__WEBPACK_IMPORTED_MODULE_2__["default"].getSelectorFromElement(element); 19886 if (selector) { 19887 parent = document.querySelector(selector); 19888 } 19889 return parent || element.parentNode; 19890 } // eslint-disable-next-line complexity 19891 }, { 19892 key: "_dataApiKeydownHandler", 19893 value: function _dataApiKeydownHandler(event) { 19894 // If not input/textarea: 19895 // - And not a key in REGEXP_KEYDOWN => not a dropdown command 19896 // If input/textarea: 19897 // - If space key => not a dropdown command 19898 // - If key is other than escape 19899 // - If key is not up or down => not a dropdown command 19900 // - If trigger inside the menu => not a dropdown command 19901 if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) { 19902 return; 19903 } 19904 if (this.disabled || jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).hasClass(CLASS_NAME_DISABLED)) { 19905 return; 19906 } 19907 var parent = Dropdown._getParentFromElement(this); 19908 var isActive = jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).hasClass(CLASS_NAME_SHOW); 19909 if (!isActive && event.which === ESCAPE_KEYCODE) { 19910 return; 19911 } 19912 event.preventDefault(); 19913 event.stopPropagation(); 19914 if (!isActive || event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE) { 19915 if (event.which === ESCAPE_KEYCODE) { 19916 jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus'); 19917 } 19918 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('click'); 19919 return; 19920 } 19921 var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) { 19922 return jquery__WEBPACK_IMPORTED_MODULE_0___default()(item).is(':visible'); 19923 }); 19924 if (items.length === 0) { 19925 return; 19926 } 19927 var index = items.indexOf(event.target); 19928 if (event.which === ARROW_UP_KEYCODE && index > 0) { 19929 // Up 19930 index--; 19931 } 19932 if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { 19933 // Down 19934 index++; 19935 } 19936 if (index < 0) { 19937 index = 0; 19938 } 19939 items[index].focus(); 19940 } 19941 }, { 19942 key: "VERSION", 19943 get: function get() { 19944 return VERSION; 19945 } 19946 }, { 19947 key: "Default", 19948 get: function get() { 19949 return Default; 19950 } 19951 }, { 19952 key: "DefaultType", 19953 get: function get() { 19954 return DefaultType; 19955 } 19956 }]); 19957 return Dropdown; 19958}(); 19959/** 19960 * Data API implementation 19961 */ 19962jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on("".concat(EVENT_CLICK_DATA_API, " ").concat(EVENT_KEYUP_DATA_API), Dropdown._clearMenus).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) { 19963 event.preventDefault(); 19964 event.stopPropagation(); 19965 Dropdown._jQueryInterface.call(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'toggle'); 19966}).on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, function (e) { 19967 e.stopPropagation(); 19968}); 19969 19970/** 19971 * jQuery 19972 */ 19973 19974jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = Dropdown._jQueryInterface; 19975jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].Constructor = Dropdown; 19976jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].noConflict = function () { 19977 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = JQUERY_NO_CONFLICT; 19978 return Dropdown._jQueryInterface; 19979}; 19980/* harmony default export */ __webpack_exports__["default"] = (Dropdown); 19981 19982/***/ }), 19983
vendor: 27,011 bytes, lines 19984-20555
19984/***/ "./node_modules/bootstrap/js/src/modal.js": 19985/*!************************************************!*\ 19986 !*** ./node_modules/bootstrap/js/src/modal.js ***! 19987 \************************************************/ 19988/*! exports provided: default */ 19989/***/ (function(module, __webpack_exports__, __webpack_require__) { 19990 19991"use strict"; 19992__webpack_require__.r(__webpack_exports__); 19993/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 19994/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 19995/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "./node_modules/bootstrap/js/src/util.js"); 19996function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 19997function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } 19998function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } 19999function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 20000function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 20001function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } 20002function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 20003function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } 20004function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } 20005/** 20006 * -------------------------------------------------------------------------- 20007 * Bootstrap (v4.6.2): modal.js 20008 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 20009 * -------------------------------------------------------------------------- 20010 */ 20011 20012 20013 20014 20015/** 20016 * Constants 20017 */ 20018 20019var NAME = 'modal'; 20020var VERSION = '4.6.2'; 20021var DATA_KEY = 'bs.modal'; 20022var EVENT_KEY = ".".concat(DATA_KEY); 20023var DATA_API_KEY = '.data-api'; 20024var JQUERY_NO_CONFLICT = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME]; 20025var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key 20026 20027var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable'; 20028var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'; 20029var CLASS_NAME_BACKDROP = 'modal-backdrop'; 20030var CLASS_NAME_OPEN = 'modal-open'; 20031var CLASS_NAME_FADE = 'fade'; 20032var CLASS_NAME_SHOW = 'show'; 20033var CLASS_NAME_STATIC = 'modal-static'; 20034var EVENT_HIDE = "hide".concat(EVENT_KEY); 20035var EVENT_HIDE_PREVENTED = "hidePrevented".concat(EVENT_KEY); 20036var EVENT_HIDDEN = "hidden".concat(EVENT_KEY); 20037var EVENT_SHOW = "show".concat(EVENT_KEY); 20038var EVENT_SHOWN = "shown".concat(EVENT_KEY); 20039var EVENT_FOCUSIN = "focusin".concat(EVENT_KEY); 20040var EVENT_RESIZE = "resize".concat(EVENT_KEY); 20041var EVENT_CLICK_DISMISS = "click.dismiss".concat(EVENT_KEY); 20042var EVENT_KEYDOWN_DISMISS = "keydown.dismiss".concat(EVENT_KEY); 20043var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss".concat(EVENT_KEY); 20044var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss".concat(EVENT_KEY); 20045var EVENT_CLICK_DATA_API = "click".concat(EVENT_KEY).concat(DATA_API_KEY); 20046var SELECTOR_DIALOG = '.modal-dialog'; 20047var SELECTOR_MODAL_BODY = '.modal-body'; 20048var SELECTOR_DATA_TOGGLE = '[data-toggle="modal"]'; 20049var SELECTOR_DATA_DISMISS = '[data-dismiss="modal"]'; 20050var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'; 20051var SELECTOR_STICKY_CONTENT = '.sticky-top'; 20052var Default = { 20053 backdrop: true, 20054 keyboard: true, 20055 focus: true, 20056 show: true 20057}; 20058var DefaultType = { 20059 backdrop: '(boolean|string)', 20060 keyboard: 'boolean', 20061 focus: 'boolean', 20062 show: 'boolean' 20063}; 20064 20065/** 20066 * Class definition 20067 */ 20068var Modal = /*#__PURE__*/function () { 20069 function Modal(element, config) { 20070 _classCallCheck(this, Modal); 20071 this._config = this._getConfig(config); 20072 this._element = element; 20073 this._dialog = element.querySelector(SELECTOR_DIALOG); 20074 this._backdrop = null; 20075 this._isShown = false; 20076 this._isBodyOverflowing = false; 20077 this._ignoreBackdropClick = false; 20078 this._isTransitioning = false; 20079 this._scrollbarWidth = 0; 20080 } 20081 20082 // Getters 20083 _createClass(Modal, [{ 20084 key: "toggle", 20085 // Public 20086 value: function toggle(relatedTarget) { 20087 return this._isShown ? this.hide() : this.show(relatedTarget); 20088 } 20089 }, { 20090 key: "show", 20091 value: function show(relatedTarget) { 20092 var _this = this; 20093 if (this._isShown || this._isTransitioning) { 20094 return; 20095 } 20096 var showEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(EVENT_SHOW, { 20097 relatedTarget: relatedTarget 20098 }); 20099 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).trigger(showEvent); 20100 if (showEvent.isDefaultPrevented()) { 20101 return; 20102 } 20103 this._isShown = true; 20104 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(CLASS_NAME_FADE)) { 20105 this._isTransitioning = true; 20106 } 20107 this._checkScrollbar(); 20108 this._setScrollbar(); 20109 this._adjustDialog(); 20110 this._setEscapeEvent(); 20111 this._setResizeEvent(); 20112 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) { 20113 return _this.hide(event); 20114 }); 20115 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () { 20116 jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) { 20117 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).is(_this._element)) { 20118 _this._ignoreBackdropClick = true; 20119 } 20120 }); 20121 }); 20122 this._showBackdrop(function () { 20123 return _this._showElement(relatedTarget); 20124 }); 20125 } 20126 }, { 20127 key: "hide", 20128 value: function hide(event) { 20129 var _this2 = this; 20130 if (event) { 20131 event.preventDefault(); 20132 } 20133 if (!this._isShown || this._isTransitioning) { 20134 return; 20135 } 20136 var hideEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(EVENT_HIDE); 20137 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).trigger(hideEvent); 20138 if (!this._isShown || hideEvent.isDefaultPrevented()) { 20139 return; 20140 } 20141 this._isShown = false; 20142 var transition = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(CLASS_NAME_FADE); 20143 if (transition) { 20144 this._isTransitioning = true; 20145 } 20146 this._setEscapeEvent(); 20147 this._setResizeEvent(); 20148 jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).off(EVENT_FOCUSIN); 20149 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).removeClass(CLASS_NAME_SHOW); 20150 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).off(EVENT_CLICK_DISMISS); 20151 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._dialog).off(EVENT_MOUSEDOWN_DISMISS); 20152 if (transition) { 20153 var transitionDuration = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getTransitionDurationFromElement(this._element); 20154 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).one(_util__WEBPACK_IMPORTED_MODULE_1__["default"].TRANSITION_END, function (event) { 20155 return _this2._hideModal(event); 20156 }).emulateTransitionEnd(transitionDuration); 20157 } else { 20158 this._hideModal(); 20159 } 20160 } 20161 }, { 20162 key: "dispose", 20163 value: function dispose() { 20164 [window, this._element, this._dialog].forEach(function (htmlElement) { 20165 return jquery__WEBPACK_IMPORTED_MODULE_0___default()(htmlElement).off(EVENT_KEY); 20166 }); 20167 20168 /** 20169 * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API` 20170 * Do not move `document` in `htmlElements` array 20171 * It will remove `EVENT_CLICK_DATA_API` event that should remain 20172 */ 20173 jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).off(EVENT_FOCUSIN); 20174 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.removeData(this._element, DATA_KEY); 20175 this._config = null; 20176 this._element = null; 20177 this._dialog = null; 20178 this._backdrop = null; 20179 this._isShown = null; 20180 this._isBodyOverflowing = null; 20181 this._ignoreBackdropClick = null; 20182 this._isTransitioning = null; 20183 this._scrollbarWidth = null; 20184 } 20185 }, { 20186 key: "handleUpdate", 20187 value: function handleUpdate() { 20188 this._adjustDialog(); 20189 } // Private 20190 }, { 20191 key: "_getConfig", 20192 value: function _getConfig(config) { 20193 config = _objectSpread(_objectSpread({}, Default), config); 20194 _util__WEBPACK_IMPORTED_MODULE_1__["default"].typeCheckConfig(NAME, config, DefaultType); 20195 return config; 20196 } 20197 }, { 20198 key: "_triggerBackdropTransition", 20199 value: function _triggerBackdropTransition() { 20200 var _this3 = this; 20201 var hideEventPrevented = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(EVENT_HIDE_PREVENTED); 20202 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).trigger(hideEventPrevented); 20203 if (hideEventPrevented.isDefaultPrevented()) { 20204 return; 20205 } 20206 var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; 20207 if (!isModalOverflowing) { 20208 this._element.style.overflowY = 'hidden'; 20209 } 20210 this._element.classList.add(CLASS_NAME_STATIC); 20211 var modalTransitionDuration = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getTransitionDurationFromElement(this._dialog); 20212 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).off(_util__WEBPACK_IMPORTED_MODULE_1__["default"].TRANSITION_END); 20213 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).one(_util__WEBPACK_IMPORTED_MODULE_1__["default"].TRANSITION_END, function () { 20214 _this3._element.classList.remove(CLASS_NAME_STATIC); 20215 if (!isModalOverflowing) { 20216 jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this3._element).one(_util__WEBPACK_IMPORTED_MODULE_1__["default"].TRANSITION_END, function () { 20217 _this3._element.style.overflowY = ''; 20218 }).emulateTransitionEnd(_this3._element, modalTransitionDuration); 20219 } 20220 }).emulateTransitionEnd(modalTransitionDuration); 20221 this._element.focus(); 20222 } 20223 }, { 20224 key: "_showElement", 20225 value: function _showElement(relatedTarget) { 20226 var _this4 = this; 20227 var transition = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(CLASS_NAME_FADE); 20228 var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null; 20229 if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { 20230 // Don't move modal's DOM position 20231 document.body.appendChild(this._element); 20232 } 20233 this._element.style.display = 'block'; 20234 this._element.removeAttribute('aria-hidden'); 20235 this._element.setAttribute('aria-modal', true); 20236 this._element.setAttribute('role', 'dialog'); 20237 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) { 20238 modalBody.scrollTop = 0; 20239 } else { 20240 this._element.scrollTop = 0; 20241 } 20242 if (transition) { 20243 _util__WEBPACK_IMPORTED_MODULE_1__["default"].reflow(this._element); 20244 } 20245 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).addClass(CLASS_NAME_SHOW); 20246 if (this._config.focus) { 20247 this._enforceFocus(); 20248 } 20249 var shownEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(EVENT_SHOWN, { 20250 relatedTarget: relatedTarget 20251 }); 20252 var transitionComplete = function transitionComplete() { 20253 if (_this4._config.focus) { 20254 _this4._element.focus(); 20255 } 20256 _this4._isTransitioning = false; 20257 jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this4._element).trigger(shownEvent); 20258 }; 20259 if (transition) { 20260 var transitionDuration = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getTransitionDurationFromElement(this._dialog); 20261 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._dialog).one(_util__WEBPACK_IMPORTED_MODULE_1__["default"].TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration); 20262 } else { 20263 transitionComplete(); 20264 } 20265 } 20266 }, { 20267 key: "_enforceFocus", 20268 value: function _enforceFocus() { 20269 var _this5 = this; 20270 jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).off(EVENT_FOCUSIN) // Guard against infinite focus loop 20271 .on(EVENT_FOCUSIN, function (event) { 20272 if (document !== event.target && _this5._element !== event.target && jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this5._element).has(event.target).length === 0) { 20273 _this5._element.focus(); 20274 } 20275 }); 20276 } 20277 }, { 20278 key: "_setEscapeEvent", 20279 value: function _setEscapeEvent() { 20280 var _this6 = this; 20281 if (this._isShown) { 20282 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).on(EVENT_KEYDOWN_DISMISS, function (event) { 20283 if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) { 20284 event.preventDefault(); 20285 _this6.hide(); 20286 } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) { 20287 _this6._triggerBackdropTransition(); 20288 } 20289 }); 20290 } else if (!this._isShown) { 20291 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).off(EVENT_KEYDOWN_DISMISS); 20292 } 20293 } 20294 }, { 20295 key: "_setResizeEvent", 20296 value: function _setResizeEvent() { 20297 var _this7 = this; 20298 if (this._isShown) { 20299 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on(EVENT_RESIZE, function (event) { 20300 return _this7.handleUpdate(event); 20301 }); 20302 } else { 20303 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(EVENT_RESIZE); 20304 } 20305 } 20306 }, { 20307 key: "_hideModal", 20308 value: function _hideModal() { 20309 var _this8 = this; 20310 this._element.style.display = 'none'; 20311 this._element.setAttribute('aria-hidden', true); 20312 this._element.removeAttribute('aria-modal'); 20313 this._element.removeAttribute('role'); 20314 this._isTransitioning = false; 20315 this._showBackdrop(function () { 20316 jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).removeClass(CLASS_NAME_OPEN); 20317 _this8._resetAdjustments(); 20318 _this8._resetScrollbar(); 20319 jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this8._element).trigger(EVENT_HIDDEN); 20320 }); 20321 } 20322 }, { 20323 key: "_removeBackdrop", 20324 value: function _removeBackdrop() { 20325 if (this._backdrop) { 20326 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._backdrop).remove(); 20327 this._backdrop = null; 20328 } 20329 } 20330 }, { 20331 key: "_showBackdrop", 20332 value: function _showBackdrop(callback) { 20333 var _this9 = this; 20334 var animate = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(CLASS_NAME_FADE) ? CLASS_NAME_FADE : ''; 20335 if (this._isShown && this._config.backdrop) { 20336 this._backdrop = document.createElement('div'); 20337 this._backdrop.className = CLASS_NAME_BACKDROP; 20338 if (animate) { 20339 this._backdrop.classList.add(animate); 20340 } 20341 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._backdrop).appendTo(document.body); 20342 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).on(EVENT_CLICK_DISMISS, function (event) { 20343 if (_this9._ignoreBackdropClick) { 20344 _this9._ignoreBackdropClick = false; 20345 return; 20346 } 20347 if (event.target !== event.currentTarget) { 20348 return; 20349 } 20350 if (_this9._config.backdrop === 'static') { 20351 _this9._triggerBackdropTransition(); 20352 } else { 20353 _this9.hide(); 20354 } 20355 }); 20356 if (animate) { 20357 _util__WEBPACK_IMPORTED_MODULE_1__["default"].reflow(this._backdrop); 20358 } 20359 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._backdrop).addClass(CLASS_NAME_SHOW); 20360 if (!callback) { 20361 return; 20362 } 20363 if (!animate) { 20364 callback(); 20365 return; 20366 } 20367 var backdropTransitionDuration = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getTransitionDurationFromElement(this._backdrop); 20368 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._backdrop).one(_util__WEBPACK_IMPORTED_MODULE_1__["default"].TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration); 20369 } else if (!this._isShown && this._backdrop) { 20370 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._backdrop).removeClass(CLASS_NAME_SHOW); 20371 var callbackRemove = function callbackRemove() { 20372 _this9._removeBackdrop(); 20373 if (callback) { 20374 callback(); 20375 } 20376 }; 20377 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(CLASS_NAME_FADE)) { 20378 var _backdropTransitionDuration = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getTransitionDurationFromElement(this._backdrop); 20379 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._backdrop).one(_util__WEBPACK_IMPORTED_MODULE_1__["default"].TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration); 20380 } else { 20381 callbackRemove(); 20382 } 20383 } else if (callback) { 20384 callback(); 20385 } 20386 } // ---------------------------------------------------------------------- 20387 // the following methods are used to handle overflowing modals 20388 // todo (fat): these should probably be refactored out of modal.js 20389 // ---------------------------------------------------------------------- 20390 }, { 20391 key: "_adjustDialog", 20392 value: function _adjustDialog() { 20393 var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; 20394 if (!this._isBodyOverflowing && isModalOverflowing) { 20395 this._element.style.paddingLeft = "".concat(this._scrollbarWidth, "px"); 20396 } 20397 if (this._isBodyOverflowing && !isModalOverflowing) { 20398 this._element.style.paddingRight = "".concat(this._scrollbarWidth, "px"); 20399 } 20400 } 20401 }, { 20402 key: "_resetAdjustments", 20403 value: function _resetAdjustments() { 20404 this._element.style.paddingLeft = ''; 20405 this._element.style.paddingRight = ''; 20406 } 20407 }, { 20408 key: "_checkScrollbar", 20409 value: function _checkScrollbar() { 20410 var rect = document.body.getBoundingClientRect(); 20411 this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth; 20412 this._scrollbarWidth = this._getScrollbarWidth(); 20413 } 20414 }, { 20415 key: "_setScrollbar", 20416 value: function _setScrollbar() { 20417 var _this10 = this; 20418 if (this._isBodyOverflowing) { 20419 // Note: DOMNode.style.paddingRight returns the actual value or '' if not set 20420 // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set 20421 var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT)); 20422 var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); 20423 20424 // Adjust fixed content padding 20425 jquery__WEBPACK_IMPORTED_MODULE_0___default()(fixedContent).each(function (index, element) { 20426 var actualPadding = element.style.paddingRight; 20427 var calculatedPadding = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).css('padding-right'); 20428 jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).data('padding-right', actualPadding).css('padding-right', "".concat(parseFloat(calculatedPadding) + _this10._scrollbarWidth, "px")); 20429 }); 20430 20431 // Adjust sticky content margin 20432 jquery__WEBPACK_IMPORTED_MODULE_0___default()(stickyContent).each(function (index, element) { 20433 var actualMargin = element.style.marginRight; 20434 var calculatedMargin = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).css('margin-right'); 20435 jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).data('margin-right', actualMargin).css('margin-right', "".concat(parseFloat(calculatedMargin) - _this10._scrollbarWidth, "px")); 20436 }); 20437 20438 // Adjust body padding 20439 var actualPadding = document.body.style.paddingRight; 20440 var calculatedPadding = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).css('padding-right'); 20441 jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).data('padding-right', actualPadding).css('padding-right', "".concat(parseFloat(calculatedPadding) + this._scrollbarWidth, "px")); 20442 } 20443 jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).addClass(CLASS_NAME_OPEN); 20444 } 20445 }, { 20446 key: "_resetScrollbar", 20447 value: function _resetScrollbar() { 20448 // Restore fixed content padding 20449 var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT)); 20450 jquery__WEBPACK_IMPORTED_MODULE_0___default()(fixedContent).each(function (index, element) { 20451 var padding = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).data('padding-right'); 20452 jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).removeData('padding-right'); 20453 element.style.paddingRight = padding ? padding : ''; 20454 }); 20455 20456 // Restore sticky content 20457 var elements = [].slice.call(document.querySelectorAll("".concat(SELECTOR_STICKY_CONTENT))); 20458 jquery__WEBPACK_IMPORTED_MODULE_0___default()(elements).each(function (index, element) { 20459 var margin = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).data('margin-right'); 20460 if (typeof margin !== 'undefined') { 20461 jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).css('margin-right', margin).removeData('margin-right'); 20462 } 20463 }); 20464 20465 // Restore body padding 20466 var padding = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).data('padding-right'); 20467 jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).removeData('padding-right'); 20468 document.body.style.paddingRight = padding ? padding : ''; 20469 } 20470 }, { 20471 key: "_getScrollbarWidth", 20472 value: function _getScrollbarWidth() { 20473 // thx d.walsh 20474 var scrollDiv = document.createElement('div'); 20475 scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER; 20476 document.body.appendChild(scrollDiv); 20477 var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; 20478 document.body.removeChild(scrollDiv); 20479 return scrollbarWidth; 20480 } // Static 20481 }], [{ 20482 key: "_jQueryInterface", 20483 value: function _jQueryInterface(config, relatedTarget) { 20484 return this.each(function () { 20485 var data = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data(DATA_KEY); 20486 var _config = _objectSpread(_objectSpread(_objectSpread({}, Default), jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data()), _typeof(config) === 'object' && config ? config : {}); 20487 if (!data) { 20488 data = new Modal(this, _config); 20489 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data(DATA_KEY, data); 20490 } 20491 if (typeof config === 'string') { 20492 if (typeof data[config] === 'undefined') { 20493 throw new TypeError("No method named \"".concat(config, "\"")); 20494 } 20495 data[config](relatedTarget); 20496 } else if (_config.show) { 20497 data.show(relatedTarget); 20498 } 20499 }); 20500 } 20501 }, { 20502 key: "VERSION", 20503 get: function get() { 20504 return VERSION; 20505 } 20506 }, { 20507 key: "Default", 20508 get: function get() { 20509 return Default; 20510 } 20511 }]); 20512 return Modal; 20513}(); 20514/** 20515 * Data API implementation 20516 */ 20517jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) { 20518 var _this11 = this; 20519 var target; 20520 var selector = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getSelectorFromElement(this); 20521 if (selector) { 20522 target = document.querySelector(selector); 20523 } 20524 var config = jquery__WEBPACK_IMPORTED_MODULE_0___default()(target).data(DATA_KEY) ? 'toggle' : _objectSpread(_objectSpread({}, jquery__WEBPACK_IMPORTED_MODULE_0___default()(target).data()), jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data()); 20525 if (this.tagName === 'A' || this.tagName === 'AREA') { 20526 event.preventDefault(); 20527 } 20528 var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(target).one(EVENT_SHOW, function (showEvent) { 20529 if (showEvent.isDefaultPrevented()) { 20530 // Only register focus restorer if modal will actually get shown 20531 return; 20532 } 20533 $target.one(EVENT_HIDDEN, function () { 20534 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this11).is(':visible')) { 20535 _this11.focus(); 20536 } 20537 }); 20538 }); 20539 Modal._jQueryInterface.call(jquery__WEBPACK_IMPORTED_MODULE_0___default()(target), config, this); 20540}); 20541 20542/** 20543 * jQuery 20544 */ 20545 20546jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = Modal._jQueryInterface; 20547jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].Constructor = Modal; 20548jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].noConflict = function () { 20549 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = JQUERY_NO_CONFLICT; 20550 return Modal._jQueryInterface; 20551}; 20552/* harmony default export */ __webpack_exports__["default"] = (Modal); 20553 20554/***/ }), 20555
vendor: 10,742 bytes, lines 20556-20779
20556/***/ "./node_modules/bootstrap/js/src/tab.js": 20557/*!**********************************************!*\ 20558 !*** ./node_modules/bootstrap/js/src/tab.js ***! 20559 \**********************************************/ 20560/*! exports provided: default */ 20561/***/ (function(module, __webpack_exports__, __webpack_require__) { 20562 20563"use strict"; 20564__webpack_require__.r(__webpack_exports__); 20565/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 20566/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 20567/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "./node_modules/bootstrap/js/src/util.js"); 20568function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 20569function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 20570function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } 20571function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 20572function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } 20573function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } 20574/** 20575 * -------------------------------------------------------------------------- 20576 * Bootstrap (v4.6.2): tab.js 20577 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 20578 * -------------------------------------------------------------------------- 20579 */ 20580 20581 20582 20583 20584/** 20585 * Constants 20586 */ 20587 20588var NAME = 'tab'; 20589var VERSION = '4.6.2'; 20590var DATA_KEY = 'bs.tab'; 20591var EVENT_KEY = ".".concat(DATA_KEY); 20592var DATA_API_KEY = '.data-api'; 20593var JQUERY_NO_CONFLICT = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME]; 20594var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'; 20595var CLASS_NAME_ACTIVE = 'active'; 20596var CLASS_NAME_DISABLED = 'disabled'; 20597var CLASS_NAME_FADE = 'fade'; 20598var CLASS_NAME_SHOW = 'show'; 20599var EVENT_HIDE = "hide".concat(EVENT_KEY); 20600var EVENT_HIDDEN = "hidden".concat(EVENT_KEY); 20601var EVENT_SHOW = "show".concat(EVENT_KEY); 20602var EVENT_SHOWN = "shown".concat(EVENT_KEY); 20603var EVENT_CLICK_DATA_API = "click".concat(EVENT_KEY).concat(DATA_API_KEY); 20604var SELECTOR_DROPDOWN = '.dropdown'; 20605var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'; 20606var SELECTOR_ACTIVE = '.active'; 20607var SELECTOR_ACTIVE_UL = '> li > .active'; 20608var SELECTOR_DATA_TOGGLE = '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]'; 20609var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'; 20610var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active'; 20611 20612/** 20613 * Class definition 20614 */ 20615var Tab = /*#__PURE__*/function () { 20616 function Tab(element) { 20617 _classCallCheck(this, Tab); 20618 this._element = element; 20619 } 20620 20621 // Getters 20622 _createClass(Tab, [{ 20623 key: "show", 20624 // Public 20625 value: function show() { 20626 var _this = this; 20627 if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(CLASS_NAME_ACTIVE) || jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(CLASS_NAME_DISABLED) || this._element.hasAttribute('disabled')) { 20628 return; 20629 } 20630 var target; 20631 var previous; 20632 var listElement = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).closest(SELECTOR_NAV_LIST_GROUP)[0]; 20633 var selector = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getSelectorFromElement(this._element); 20634 if (listElement) { 20635 var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE; 20636 previous = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.makeArray(jquery__WEBPACK_IMPORTED_MODULE_0___default()(listElement).find(itemSelector)); 20637 previous = previous[previous.length - 1]; 20638 } 20639 var hideEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(EVENT_HIDE, { 20640 relatedTarget: this._element 20641 }); 20642 var showEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(EVENT_SHOW, { 20643 relatedTarget: previous 20644 }); 20645 if (previous) { 20646 jquery__WEBPACK_IMPORTED_MODULE_0___default()(previous).trigger(hideEvent); 20647 } 20648 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).trigger(showEvent); 20649 if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) { 20650 return; 20651 } 20652 if (selector) { 20653 target = document.querySelector(selector); 20654 } 20655 this._activate(this._element, listElement); 20656 var complete = function complete() { 20657 var hiddenEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(EVENT_HIDDEN, { 20658 relatedTarget: _this._element 20659 }); 20660 var shownEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(EVENT_SHOWN, { 20661 relatedTarget: previous 20662 }); 20663 jquery__WEBPACK_IMPORTED_MODULE_0___default()(previous).trigger(hiddenEvent); 20664 jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this._element).trigger(shownEvent); 20665 }; 20666 if (target) { 20667 this._activate(target, target.parentNode, complete); 20668 } else { 20669 complete(); 20670 } 20671 } 20672 }, { 20673 key: "dispose", 20674 value: function dispose() { 20675 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.removeData(this._element, DATA_KEY); 20676 this._element = null; 20677 } // Private 20678 }, { 20679 key: "_activate", 20680 value: function _activate(element, container, callback) { 20681 var _this2 = this; 20682 var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? jquery__WEBPACK_IMPORTED_MODULE_0___default()(container).find(SELECTOR_ACTIVE_UL) : jquery__WEBPACK_IMPORTED_MODULE_0___default()(container).children(SELECTOR_ACTIVE); 20683 var active = activeElements[0]; 20684 var isTransitioning = callback && active && jquery__WEBPACK_IMPORTED_MODULE_0___default()(active).hasClass(CLASS_NAME_FADE); 20685 var complete = function complete() { 20686 return _this2._transitionComplete(element, active, callback); 20687 }; 20688 if (active && isTransitioning) { 20689 var transitionDuration = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getTransitionDurationFromElement(active); 20690 jquery__WEBPACK_IMPORTED_MODULE_0___default()(active).removeClass(CLASS_NAME_SHOW).one(_util__WEBPACK_IMPORTED_MODULE_1__["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); 20691 } else { 20692 complete(); 20693 } 20694 } 20695 }, { 20696 key: "_transitionComplete", 20697 value: function _transitionComplete(element, active, callback) { 20698 if (active) { 20699 jquery__WEBPACK_IMPORTED_MODULE_0___default()(active).removeClass(CLASS_NAME_ACTIVE); 20700 var dropdownChild = jquery__WEBPACK_IMPORTED_MODULE_0___default()(active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0]; 20701 if (dropdownChild) { 20702 jquery__WEBPACK_IMPORTED_MODULE_0___default()(dropdownChild).removeClass(CLASS_NAME_ACTIVE); 20703 } 20704 if (active.getAttribute('role') === 'tab') { 20705 active.setAttribute('aria-selected', false); 20706 } 20707 } 20708 jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).addClass(CLASS_NAME_ACTIVE); 20709 if (element.getAttribute('role') === 'tab') { 20710 element.setAttribute('aria-selected', true); 20711 } 20712 _util__WEBPACK_IMPORTED_MODULE_1__["default"].reflow(element); 20713 if (element.classList.contains(CLASS_NAME_FADE)) { 20714 element.classList.add(CLASS_NAME_SHOW); 20715 } 20716 var parent = element.parentNode; 20717 if (parent && parent.nodeName === 'LI') { 20718 parent = parent.parentNode; 20719 } 20720 if (parent && jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).hasClass(CLASS_NAME_DROPDOWN_MENU)) { 20721 var dropdownElement = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).closest(SELECTOR_DROPDOWN)[0]; 20722 if (dropdownElement) { 20723 var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE)); 20724 jquery__WEBPACK_IMPORTED_MODULE_0___default()(dropdownToggleList).addClass(CLASS_NAME_ACTIVE); 20725 } 20726 element.setAttribute('aria-expanded', true); 20727 } 20728 if (callback) { 20729 callback(); 20730 } 20731 } // Static 20732 }], [{ 20733 key: "_jQueryInterface", 20734 value: function _jQueryInterface(config) { 20735 return this.each(function () { 20736 var $this = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this); 20737 var data = $this.data(DATA_KEY); 20738 if (!data) { 20739 data = new Tab(this); 20740 $this.data(DATA_KEY, data); 20741 } 20742 if (typeof config === 'string') { 20743 if (typeof data[config] === 'undefined') { 20744 throw new TypeError("No method named \"".concat(config, "\"")); 20745 } 20746 data[config](); 20747 } 20748 }); 20749 } 20750 }, { 20751 key: "VERSION", 20752 get: function get() { 20753 return VERSION; 20754 } 20755 }]); 20756 return Tab; 20757}(); 20758/** 20759 * Data API implementation 20760 */ 20761jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) { 20762 event.preventDefault(); 20763 Tab._jQueryInterface.call(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'show'); 20764}); 20765 20766/** 20767 * jQuery 20768 */ 20769 20770jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = Tab._jQueryInterface; 20771jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].Constructor = Tab; 20772jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].noConflict = function () { 20773 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = JQUERY_NO_CONFLICT; 20774 return Tab._jQueryInterface; 20775}; 20776/* harmony default export */ __webpack_exports__["default"] = (Tab); 20777 20778/***/ }), 20779
vendor: 4,234 bytes, lines 20780-20902
20780/***/ "./node_modules/bootstrap/js/src/tools/sanitizer.js": 20781/*!**********************************************************!*\ 20782 !*** ./node_modules/bootstrap/js/src/tools/sanitizer.js ***! 20783 \**********************************************************/ 20784/*! exports provided: DefaultWhitelist, sanitizeHtml */ 20785/***/ (function(module, __webpack_exports__, __webpack_require__) { 20786 20787"use strict"; 20788__webpack_require__.r(__webpack_exports__); 20789/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DefaultWhitelist", function() { return DefaultWhitelist; }); 20790/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sanitizeHtml", function() { return sanitizeHtml; }); 20791/** 20792 * -------------------------------------------------------------------------- 20793 * Bootstrap (v4.6.2): tools/sanitizer.js 20794 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 20795 * -------------------------------------------------------------------------- 20796 */ 20797 20798var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']; 20799var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; 20800var DefaultWhitelist = { 20801 // Global attributes allowed on any supplied element below. 20802 '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], 20803 a: ['target', 'href', 'title', 'rel'], 20804 area: [], 20805 b: [], 20806 br: [], 20807 col: [], 20808 code: [], 20809 div: [], 20810 em: [], 20811 hr: [], 20812 h1: [], 20813 h2: [], 20814 h3: [], 20815 h4: [], 20816 h5: [], 20817 h6: [], 20818 i: [], 20819 img: ['src', 'srcset', 'alt', 'title', 'width', 'height'], 20820 li: [], 20821 ol: [], 20822 p: [], 20823 pre: [], 20824 s: [], 20825 small: [], 20826 span: [], 20827 sub: [], 20828 sup: [], 20829 strong: [], 20830 u: [], 20831 ul: [] 20832}; 20833 20834/** 20835 * A pattern that recognizes a commonly useful subset of URLs that are safe. 20836 * 20837 * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts 20838 */ 20839var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i; 20840 20841/** 20842 * A pattern that matches safe data URLs. Only matches image, video and audio types. 20843 * 20844 * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts 20845 */ 20846var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i; 20847function allowedAttribute(attr, allowedAttributeList) { 20848 var attrName = attr.nodeName.toLowerCase(); 20849 if (allowedAttributeList.indexOf(attrName) !== -1) { 20850 if (uriAttrs.indexOf(attrName) !== -1) { 20851 return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue)); 20852 } 20853 return true; 20854 } 20855 var regExp = allowedAttributeList.filter(function (attrRegex) { 20856 return attrRegex instanceof RegExp; 20857 }); 20858 20859 // Check if a regular expression validates the attribute. 20860 for (var i = 0, len = regExp.length; i < len; i++) { 20861 if (regExp[i].test(attrName)) { 20862 return true; 20863 } 20864 } 20865 return false; 20866} 20867function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) { 20868 if (unsafeHtml.length === 0) { 20869 return unsafeHtml; 20870 } 20871 if (sanitizeFn && typeof sanitizeFn === 'function') { 20872 return sanitizeFn(unsafeHtml); 20873 } 20874 var domParser = new window.DOMParser(); 20875 var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); 20876 var whitelistKeys = Object.keys(whiteList); 20877 var elements = [].slice.call(createdDocument.body.querySelectorAll('*')); 20878 var _loop = function _loop(i, len) { 20879 var el = elements[i]; 20880 var elName = el.nodeName.toLowerCase(); 20881 if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) { 20882 el.parentNode.removeChild(el); 20883 return "continue"; 20884 } 20885 var attributeList = [].slice.call(el.attributes); 20886 // eslint-disable-next-line unicorn/prefer-spread 20887 var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []); 20888 attributeList.forEach(function (attr) { 20889 if (!allowedAttribute(attr, whitelistedAttributes)) { 20890 el.removeAttribute(attr.nodeName); 20891 } 20892 }); 20893 }; 20894 for (var i = 0, len = elements.length; i < len; i++) { 20895 var _ret = _loop(i, len); 20896 if (_ret === "continue") continue; 20897 } 20898 return createdDocument.body.innerHTML; 20899} 20900 20901/***/ }), 20902
vendor: 27,731 bytes, lines 20903-21586
20903/***/ "./node_modules/bootstrap/js/src/tooltip.js": 20904/*!**************************************************!*\ 20905 !*** ./node_modules/bootstrap/js/src/tooltip.js ***! 20906 \**************************************************/ 20907/*! exports provided: default */ 20908/***/ (function(module, __webpack_exports__, __webpack_require__) { 20909 20910"use strict"; 20911__webpack_require__.r(__webpack_exports__); 20912/* harmony import */ var _tools_sanitizer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tools/sanitizer */ "./node_modules/bootstrap/js/src/tools/sanitizer.js"); 20913/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jquery */ "jquery"); 20914/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_1__); 20915/* harmony import */ var popper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! popper.js */ "./node_modules/popper.js/dist/esm/popper.js"); 20916/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ "./node_modules/bootstrap/js/src/util.js"); 20917function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } 20918function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } 20919function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 20920function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 20921function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 20922function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } 20923function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 20924function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } 20925function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } 20926/** 20927 * -------------------------------------------------------------------------- 20928 * Bootstrap (v4.6.2): tooltip.js 20929 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 20930 * -------------------------------------------------------------------------- 20931 */ 20932 20933 20934 20935 20936 20937 20938/** 20939 * Constants 20940 */ 20941 20942var NAME = 'tooltip'; 20943var VERSION = '4.6.2'; 20944var DATA_KEY = 'bs.tooltip'; 20945var EVENT_KEY = ".".concat(DATA_KEY); 20946var JQUERY_NO_CONFLICT = jquery__WEBPACK_IMPORTED_MODULE_1___default.a.fn[NAME]; 20947var CLASS_PREFIX = 'bs-tooltip'; 20948var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)".concat(CLASS_PREFIX, "\\S+"), 'g'); 20949var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']; 20950var CLASS_NAME_FADE = 'fade'; 20951var CLASS_NAME_SHOW = 'show'; 20952var HOVER_STATE_SHOW = 'show'; 20953var HOVER_STATE_OUT = 'out'; 20954var SELECTOR_TOOLTIP_INNER = '.tooltip-inner'; 20955var SELECTOR_ARROW = '.arrow'; 20956var TRIGGER_HOVER = 'hover'; 20957var TRIGGER_FOCUS = 'focus'; 20958var TRIGGER_CLICK = 'click'; 20959var TRIGGER_MANUAL = 'manual'; 20960var AttachmentMap = { 20961 AUTO: 'auto', 20962 TOP: 'top', 20963 RIGHT: 'right', 20964 BOTTOM: 'bottom', 20965 LEFT: 'left' 20966}; 20967var Default = { 20968 animation: true, 20969 template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>', 20970 trigger: 'hover focus', 20971 title: '', 20972 delay: 0, 20973 html: false, 20974 selector: false, 20975 placement: 'top', 20976 offset: 0, 20977 container: false, 20978 fallbackPlacement: 'flip', 20979 boundary: 'scrollParent', 20980 customClass: '', 20981 sanitize: true, 20982 sanitizeFn: null, 20983 whiteList: _tools_sanitizer__WEBPACK_IMPORTED_MODULE_0__["DefaultWhitelist"], 20984 popperConfig: null 20985}; 20986var DefaultType = { 20987 animation: 'boolean', 20988 template: 'string', 20989 title: '(string|element|function)', 20990 trigger: 'string', 20991 delay: '(number|object)', 20992 html: 'boolean', 20993 selector: '(string|boolean)', 20994 placement: '(string|function)', 20995 offset: '(number|string|function)', 20996 container: '(string|element|boolean)', 20997 fallbackPlacement: '(string|array)', 20998 boundary: '(string|element)', 20999 customClass: '(string|function)', 21000 sanitize: 'boolean', 21001 sanitizeFn: '(null|function)', 21002 whiteList: 'object', 21003 popperConfig: '(null|object)' 21004}; 21005var Event = { 21006 HIDE: "hide".concat(EVENT_KEY), 21007 HIDDEN: "hidden".concat(EVENT_KEY), 21008 SHOW: "show".concat(EVENT_KEY), 21009 SHOWN: "shown".concat(EVENT_KEY), 21010 INSERTED: "inserted".concat(EVENT_KEY), 21011 CLICK: "click".concat(EVENT_KEY), 21012 FOCUSIN: "focusin".concat(EVENT_KEY), 21013 FOCUSOUT: "focusout".concat(EVENT_KEY), 21014 MOUSEENTER: "mouseenter".concat(EVENT_KEY), 21015 MOUSELEAVE: "mouseleave".concat(EVENT_KEY) 21016}; 21017 21018/** 21019 * Class definition 21020 */ 21021var Tooltip = /*#__PURE__*/function () { 21022 function Tooltip(element, config) { 21023 _classCallCheck(this, Tooltip); 21024 if (typeof popper_js__WEBPACK_IMPORTED_MODULE_2__["default"] === 'undefined') { 21025 throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)'); 21026 } 21027 21028 // Private 21029 this._isEnabled = true; 21030 this._timeout = 0; 21031 this._hoverState = ''; 21032 this._activeTrigger = {}; 21033 this._popper = null; 21034 21035 // Protected 21036 this.element = element; 21037 this.config = this._getConfig(config); 21038 this.tip = null; 21039 this._setListeners(); 21040 } 21041 21042 // Getters 21043 _createClass(Tooltip, [{ 21044 key: "enable", 21045 // Public 21046 value: function enable() { 21047 this._isEnabled = true; 21048 } 21049 }, { 21050 key: "disable", 21051 value: function disable() { 21052 this._isEnabled = false; 21053 } 21054 }, { 21055 key: "toggleEnabled", 21056 value: function toggleEnabled() { 21057 this._isEnabled = !this._isEnabled; 21058 } 21059 }, { 21060 key: "toggle", 21061 value: function toggle(event) { 21062 if (!this._isEnabled) { 21063 return; 21064 } 21065 if (event) { 21066 var dataKey = this.constructor.DATA_KEY; 21067 var context = jquery__WEBPACK_IMPORTED_MODULE_1___default()(event.currentTarget).data(dataKey); 21068 if (!context) { 21069 context = new this.constructor(event.currentTarget, this._getDelegateConfig()); 21070 jquery__WEBPACK_IMPORTED_MODULE_1___default()(event.currentTarget).data(dataKey, context); 21071 } 21072 context._activeTrigger.click = !context._activeTrigger.click; 21073 if (context._isWithActiveTrigger()) { 21074 context._enter(null, context); 21075 } else { 21076 context._leave(null, context); 21077 } 21078 } else { 21079 if (jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.getTipElement()).hasClass(CLASS_NAME_SHOW)) { 21080 this._leave(null, this); 21081 return; 21082 } 21083 this._enter(null, this); 21084 } 21085 } 21086 }, { 21087 key: "dispose", 21088 value: function dispose() { 21089 clearTimeout(this._timeout); 21090 jquery__WEBPACK_IMPORTED_MODULE_1___default.a.removeData(this.element, this.constructor.DATA_KEY); 21091 jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).off(this.constructor.EVENT_KEY); 21092 jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler); 21093 if (this.tip) { 21094 jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.tip).remove(); 21095 } 21096 this._isEnabled = null; 21097 this._timeout = null; 21098 this._hoverState = null; 21099 this._activeTrigger = null; 21100 if (this._popper) { 21101 this._popper.destroy(); 21102 } 21103 this._popper = null; 21104 this.element = null; 21105 this.config = null; 21106 this.tip = null; 21107 } 21108 }, { 21109 key: "show", 21110 value: function show() { 21111 var _this = this; 21112 if (jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).css('display') === 'none') { 21113 throw new Error('Please use show on visible elements'); 21114 } 21115 var showEvent = jquery__WEBPACK_IMPORTED_MODULE_1___default.a.Event(this.constructor.Event.SHOW); 21116 if (this.isWithContent() && this._isEnabled) { 21117 jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).trigger(showEvent); 21118 var shadowRoot = _util__WEBPACK_IMPORTED_MODULE_3__["default"].findShadowRoot(this.element); 21119 var isInTheDom = jquery__WEBPACK_IMPORTED_MODULE_1___default.a.contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element); 21120 if (showEvent.isDefaultPrevented() || !isInTheDom) { 21121 return; 21122 } 21123 var tip = this.getTipElement(); 21124 var tipId = _util__WEBPACK_IMPORTED_MODULE_3__["default"].getUID(this.constructor.NAME); 21125 tip.setAttribute('id', tipId); 21126 this.element.setAttribute('aria-describedby', tipId); 21127 this.setContent(); 21128 if (this.config.animation) { 21129 jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).addClass(CLASS_NAME_FADE); 21130 } 21131 var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; 21132 var attachment = this._getAttachment(placement); 21133 this.addAttachmentClass(attachment); 21134 var container = this._getContainer(); 21135 jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).data(this.constructor.DATA_KEY, this); 21136 if (!jquery__WEBPACK_IMPORTED_MODULE_1___default.a.contains(this.element.ownerDocument.documentElement, this.tip)) { 21137 jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).appendTo(container); 21138 } 21139 jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).trigger(this.constructor.Event.INSERTED); 21140 this._popper = new popper_js__WEBPACK_IMPORTED_MODULE_2__["default"](this.element, tip, this._getPopperConfig(attachment)); 21141 jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).addClass(CLASS_NAME_SHOW); 21142 jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).addClass(this.config.customClass); 21143 21144 // If this is a touch-enabled device we add extra 21145 // empty mouseover listeners to the body's immediate children; 21146 // only needed because of broken event delegation on iOS 21147 // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html 21148 if ('ontouchstart' in document.documentElement) { 21149 jquery__WEBPACK_IMPORTED_MODULE_1___default()(document.body).children().on('mouseover', null, jquery__WEBPACK_IMPORTED_MODULE_1___default.a.noop); 21150 } 21151 var complete = function complete() { 21152 if (_this.config.animation) { 21153 _this._fixTransition(); 21154 } 21155 var prevHoverState = _this._hoverState; 21156 _this._hoverState = null; 21157 jquery__WEBPACK_IMPORTED_MODULE_1___default()(_this.element).trigger(_this.constructor.Event.SHOWN); 21158 if (prevHoverState === HOVER_STATE_OUT) { 21159 _this._leave(null, _this); 21160 } 21161 }; 21162 if (jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.tip).hasClass(CLASS_NAME_FADE)) { 21163 var transitionDuration = _util__WEBPACK_IMPORTED_MODULE_3__["default"].getTransitionDurationFromElement(this.tip); 21164 jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.tip).one(_util__WEBPACK_IMPORTED_MODULE_3__["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); 21165 } else { 21166 complete(); 21167 } 21168 } 21169 } 21170 }, { 21171 key: "hide", 21172 value: function hide(callback) { 21173 var _this2 = this; 21174 var tip = this.getTipElement(); 21175 var hideEvent = jquery__WEBPACK_IMPORTED_MODULE_1___default.a.Event(this.constructor.Event.HIDE); 21176 var complete = function complete() { 21177 if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) { 21178 tip.parentNode.removeChild(tip); 21179 } 21180 _this2._cleanTipClass(); 21181 _this2.element.removeAttribute('aria-describedby'); 21182 jquery__WEBPACK_IMPORTED_MODULE_1___default()(_this2.element).trigger(_this2.constructor.Event.HIDDEN); 21183 if (_this2._popper !== null) { 21184 _this2._popper.destroy(); 21185 } 21186 if (callback) { 21187 callback(); 21188 } 21189 }; 21190 jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).trigger(hideEvent); 21191 if (hideEvent.isDefaultPrevented()) { 21192 return; 21193 } 21194 jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).removeClass(CLASS_NAME_SHOW); 21195 21196 // If this is a touch-enabled device we remove the extra 21197 // empty mouseover listeners we added for iOS support 21198 if ('ontouchstart' in document.documentElement) { 21199 jquery__WEBPACK_IMPORTED_MODULE_1___default()(document.body).children().off('mouseover', null, jquery__WEBPACK_IMPORTED_MODULE_1___default.a.noop); 21200 } 21201 this._activeTrigger[TRIGGER_CLICK] = false; 21202 this._activeTrigger[TRIGGER_FOCUS] = false; 21203 this._activeTrigger[TRIGGER_HOVER] = false; 21204 if (jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.tip).hasClass(CLASS_NAME_FADE)) { 21205 var transitionDuration = _util__WEBPACK_IMPORTED_MODULE_3__["default"].getTransitionDurationFromElement(tip); 21206 jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).one(_util__WEBPACK_IMPORTED_MODULE_3__["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); 21207 } else { 21208 complete(); 21209 } 21210 this._hoverState = ''; 21211 } 21212 }, { 21213 key: "update", 21214 value: function update() { 21215 if (this._popper !== null) { 21216 this._popper.scheduleUpdate(); 21217 } 21218 } // Protected 21219 }, { 21220 key: "isWithContent", 21221 value: function isWithContent() { 21222 return Boolean(this.getTitle()); 21223 } 21224 }, { 21225 key: "addAttachmentClass", 21226 value: function addAttachmentClass(attachment) { 21227 jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.getTipElement()).addClass("".concat(CLASS_PREFIX, "-").concat(attachment)); 21228 } 21229 }, { 21230 key: "getTipElement", 21231 value: function getTipElement() { 21232 this.tip = this.tip || jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.config.template)[0]; 21233 return this.tip; 21234 } 21235 }, { 21236 key: "setContent", 21237 value: function setContent() { 21238 var tip = this.getTipElement(); 21239 this.setElementContent(jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle()); 21240 jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).removeClass("".concat(CLASS_NAME_FADE, " ").concat(CLASS_NAME_SHOW)); 21241 } 21242 }, { 21243 key: "setElementContent", 21244 value: function setElementContent($element, content) { 21245 if (_typeof(content) === 'object' && (content.nodeType || content.jquery)) { 21246 // Content is a DOM node or a jQuery 21247 if (this.config.html) { 21248 if (!jquery__WEBPACK_IMPORTED_MODULE_1___default()(content).parent().is($element)) { 21249 $element.empty().append(content); 21250 } 21251 } else { 21252 $element.text(jquery__WEBPACK_IMPORTED_MODULE_1___default()(content).text()); 21253 } 21254 return; 21255 } 21256 if (this.config.html) { 21257 if (this.config.sanitize) { 21258 content = Object(_tools_sanitizer__WEBPACK_IMPORTED_MODULE_0__["sanitizeHtml"])(content, this.config.whiteList, this.config.sanitizeFn); 21259 } 21260 $element.html(content); 21261 } else { 21262 $element.text(content); 21263 } 21264 } 21265 }, { 21266 key: "getTitle", 21267 value: function getTitle() { 21268 var title = this.element.getAttribute('data-original-title'); 21269 if (!title) { 21270 title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title; 21271 } 21272 return title; 21273 } // Private 21274 }, { 21275 key: "_getPopperConfig", 21276 value: function _getPopperConfig(attachment) { 21277 var _this3 = this; 21278 var defaultBsConfig = { 21279 placement: attachment, 21280 modifiers: { 21281 offset: this._getOffset(), 21282 flip: { 21283 behavior: this.config.fallbackPlacement 21284 }, 21285 arrow: { 21286 element: SELECTOR_ARROW 21287 }, 21288 preventOverflow: { 21289 boundariesElement: this.config.boundary 21290 } 21291 }, 21292 onCreate: function onCreate(data) { 21293 if (data.originalPlacement !== data.placement) { 21294 _this3._handlePopperPlacementChange(data); 21295 } 21296 }, 21297 onUpdate: function onUpdate(data) { 21298 return _this3._handlePopperPlacementChange(data); 21299 } 21300 }; 21301 return _objectSpread(_objectSpread({}, defaultBsConfig), this.config.popperConfig); 21302 } 21303 }, { 21304 key: "_getOffset", 21305 value: function _getOffset() { 21306 var _this4 = this; 21307 var offset = {}; 21308 if (typeof this.config.offset === 'function') { 21309 offset.fn = function (data) { 21310 data.offsets = _objectSpread(_objectSpread({}, data.offsets), _this4.config.offset(data.offsets, _this4.element)); 21311 return data; 21312 }; 21313 } else { 21314 offset.offset = this.config.offset; 21315 } 21316 return offset; 21317 } 21318 }, { 21319 key: "_getContainer", 21320 value: function _getContainer() { 21321 if (this.config.container === false) { 21322 return document.body; 21323 } 21324 if (_util__WEBPACK_IMPORTED_MODULE_3__["default"].isElement(this.config.container)) { 21325 return jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.config.container); 21326 } 21327 return jquery__WEBPACK_IMPORTED_MODULE_1___default()(document).find(this.config.container); 21328 } 21329 }, { 21330 key: "_getAttachment", 21331 value: function _getAttachment(placement) { 21332 return AttachmentMap[placement.toUpperCase()]; 21333 } 21334 }, { 21335 key: "_setListeners", 21336 value: function _setListeners() { 21337 var _this5 = this; 21338 var triggers = this.config.trigger.split(' '); 21339 triggers.forEach(function (trigger) { 21340 if (trigger === 'click') { 21341 jquery__WEBPACK_IMPORTED_MODULE_1___default()(_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) { 21342 return _this5.toggle(event); 21343 }); 21344 } else if (trigger !== TRIGGER_MANUAL) { 21345 var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN; 21346 var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT; 21347 jquery__WEBPACK_IMPORTED_MODULE_1___default()(_this5.element).on(eventIn, _this5.config.selector, function (event) { 21348 return _this5._enter(event); 21349 }).on(eventOut, _this5.config.selector, function (event) { 21350 return _this5._leave(event); 21351 }); 21352 } 21353 }); 21354 this._hideModalHandler = function () { 21355 if (_this5.element) { 21356 _this5.hide(); 21357 } 21358 }; 21359 jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler); 21360 if (this.config.selector) { 21361 this.config = _objectSpread(_objectSpread({}, this.config), {}, { 21362 trigger: 'manual', 21363 selector: '' 21364 }); 21365 } else { 21366 this._fixTitle(); 21367 } 21368 } 21369 }, { 21370 key: "_fixTitle", 21371 value: function _fixTitle() { 21372 var titleType = _typeof(this.element.getAttribute('data-original-title')); 21373 if (this.element.getAttribute('title') || titleType !== 'string') { 21374 this.element.setAttribute('data-original-title', this.element.getAttribute('title') || ''); 21375 this.element.setAttribute('title', ''); 21376 } 21377 } 21378 }, { 21379 key: "_enter", 21380 value: function _enter(event, context) { 21381 var dataKey = this.constructor.DATA_KEY; 21382 context = context || jquery__WEBPACK_IMPORTED_MODULE_1___default()(event.currentTarget).data(dataKey); 21383 if (!context) { 21384 context = new this.constructor(event.currentTarget, this._getDelegateConfig()); 21385 jquery__WEBPACK_IMPORTED_MODULE_1___default()(event.currentTarget).data(dataKey, context); 21386 } 21387 if (event) { 21388 context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; 21389 } 21390 if (jquery__WEBPACK_IMPORTED_MODULE_1___default()(context.getTipElement()).hasClass(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) { 21391 context._hoverState = HOVER_STATE_SHOW; 21392 return; 21393 } 21394 clearTimeout(context._timeout); 21395 context._hoverState = HOVER_STATE_SHOW; 21396 if (!context.config.delay || !context.config.delay.show) { 21397 context.show(); 21398 return; 21399 } 21400 context._timeout = setTimeout(function () { 21401 if (context._hoverState === HOVER_STATE_SHOW) { 21402 context.show(); 21403 } 21404 }, context.config.delay.show); 21405 } 21406 }, { 21407 key: "_leave", 21408 value: function _leave(event, context) { 21409 var dataKey = this.constructor.DATA_KEY; 21410 context = context || jquery__WEBPACK_IMPORTED_MODULE_1___default()(event.currentTarget).data(dataKey); 21411 if (!context) { 21412 context = new this.constructor(event.currentTarget, this._getDelegateConfig()); 21413 jquery__WEBPACK_IMPORTED_MODULE_1___default()(event.currentTarget).data(dataKey, context); 21414 } 21415 if (event) { 21416 context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false; 21417 } 21418 if (context._isWithActiveTrigger()) { 21419 return; 21420 } 21421 clearTimeout(context._timeout); 21422 context._hoverState = HOVER_STATE_OUT; 21423 if (!context.config.delay || !context.config.delay.hide) { 21424 context.hide(); 21425 return; 21426 } 21427 context._timeout = setTimeout(function () { 21428 if (context._hoverState === HOVER_STATE_OUT) { 21429 context.hide(); 21430 } 21431 }, context.config.delay.hide); 21432 } 21433 }, { 21434 key: "_isWithActiveTrigger", 21435 value: function _isWithActiveTrigger() { 21436 for (var trigger in this._activeTrigger) { 21437 if (this._activeTrigger[trigger]) { 21438 return true; 21439 } 21440 } 21441 return false; 21442 } 21443 }, { 21444 key: "_getConfig", 21445 value: function _getConfig(config) { 21446 var dataAttributes = jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).data(); 21447 Object.keys(dataAttributes).forEach(function (dataAttr) { 21448 if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) { 21449 delete dataAttributes[dataAttr]; 21450 } 21451 }); 21452 config = _objectSpread(_objectSpread(_objectSpread({}, this.constructor.Default), dataAttributes), _typeof(config) === 'object' && config ? config : {}); 21453 if (typeof config.delay === 'number') { 21454 config.delay = { 21455 show: config.delay, 21456 hide: config.delay 21457 }; 21458 } 21459 if (typeof config.title === 'number') { 21460 config.title = config.title.toString(); 21461 } 21462 if (typeof config.content === 'number') { 21463 config.content = config.content.toString(); 21464 } 21465 _util__WEBPACK_IMPORTED_MODULE_3__["default"].typeCheckConfig(NAME, config, this.constructor.DefaultType); 21466 if (config.sanitize) { 21467 config.template = Object(_tools_sanitizer__WEBPACK_IMPORTED_MODULE_0__["sanitizeHtml"])(config.template, config.whiteList, config.sanitizeFn); 21468 } 21469 return config; 21470 } 21471 }, { 21472 key: "_getDelegateConfig", 21473 value: function _getDelegateConfig() { 21474 var config = {}; 21475 if (this.config) { 21476 for (var key in this.config) { 21477 if (this.constructor.Default[key] !== this.config[key]) { 21478 config[key] = this.config[key]; 21479 } 21480 } 21481 } 21482 return config; 21483 } 21484 }, { 21485 key: "_cleanTipClass", 21486 value: function _cleanTipClass() { 21487 var $tip = jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.getTipElement()); 21488 var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX); 21489 if (tabClass !== null && tabClass.length) { 21490 $tip.removeClass(tabClass.join('')); 21491 } 21492 } 21493 }, { 21494 key: "_handlePopperPlacementChange", 21495 value: function _handlePopperPlacementChange(popperData) { 21496 this.tip = popperData.instance.popper; 21497 this._cleanTipClass(); 21498 this.addAttachmentClass(this._getAttachment(popperData.placement)); 21499 } 21500 }, { 21501 key: "_fixTransition", 21502 value: function _fixTransition() { 21503 var tip = this.getTipElement(); 21504 var initConfigAnimation = this.config.animation; 21505 if (tip.getAttribute('x-placement') !== null) { 21506 return; 21507 } 21508 jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).removeClass(CLASS_NAME_FADE); 21509 this.config.animation = false; 21510 this.hide(); 21511 this.show(); 21512 this.config.animation = initConfigAnimation; 21513 } // Static 21514 }], [{ 21515 key: "_jQueryInterface", 21516 value: function _jQueryInterface(config) { 21517 return this.each(function () { 21518 var $element = jquery__WEBPACK_IMPORTED_MODULE_1___default()(this); 21519 var data = $element.data(DATA_KEY); 21520 var _config = _typeof(config) === 'object' && config; 21521 if (!data && /dispose|hide/.test(config)) { 21522 return; 21523 } 21524 if (!data) { 21525 data = new Tooltip(this, _config); 21526 $element.data(DATA_KEY, data); 21527 } 21528 if (typeof config === 'string') { 21529 if (typeof data[config] === 'undefined') { 21530 throw new TypeError("No method named \"".concat(config, "\"")); 21531 } 21532 data[config](); 21533 } 21534 }); 21535 } 21536 }, { 21537 key: "VERSION", 21538 get: function get() { 21539 return VERSION; 21540 } 21541 }, { 21542 key: "Default", 21543 get: function get() { 21544 return Default; 21545 } 21546 }, { 21547 key: "NAME", 21548 get: function get() { 21549 return NAME; 21550 } 21551 }, { 21552 key: "DATA_KEY", 21553 get: function get() { 21554 return DATA_KEY; 21555 } 21556 }, { 21557 key: "Event", 21558 get: function get() { 21559 return Event; 21560 } 21561 }, { 21562 key: "EVENT_KEY", 21563 get: function get() { 21564 return EVENT_KEY; 21565 } 21566 }, { 21567 key: "DefaultType", 21568 get: function get() { 21569 return DefaultType; 21570 } 21571 }]); 21572 return Tooltip; 21573}(); 21574/** 21575 * jQuery 21576 */ 21577jquery__WEBPACK_IMPORTED_MODULE_1___default.a.fn[NAME] = Tooltip._jQueryInterface; 21578jquery__WEBPACK_IMPORTED_MODULE_1___default.a.fn[NAME].Constructor = Tooltip; 21579jquery__WEBPACK_IMPORTED_MODULE_1___default.a.fn[NAME].noConflict = function () { 21580 jquery__WEBPACK_IMPORTED_MODULE_1___default.a.fn[NAME] = JQUERY_NO_CONFLICT; 21581 return Tooltip._jQueryInterface; 21582}; 21583/* harmony default export */ __webpack_exports__["default"] = (Tooltip); 21584 21585/***/ }), 21586
vendor: 6,444 bytes, lines 21587-21763
21587/***/ "./node_modules/bootstrap/js/src/util.js": 21588/*!***********************************************!*\ 21589 !*** ./node_modules/bootstrap/js/src/util.js ***! 21590 \***********************************************/ 21591/*! exports provided: default */ 21592/***/ (function(module, __webpack_exports__, __webpack_require__) { 21593 21594"use strict"; 21595__webpack_require__.r(__webpack_exports__); 21596/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 21597/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 21598/** 21599 * -------------------------------------------------------------------------- 21600 * Bootstrap (v4.6.2): util.js 21601 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 21602 * -------------------------------------------------------------------------- 21603 */ 21604 21605 21606 21607/** 21608 * Private TransitionEnd Helpers 21609 */ 21610 21611var TRANSITION_END = 'transitionend'; 21612var MAX_UID = 1000000; 21613var MILLISECONDS_MULTIPLIER = 1000; 21614 21615// Shoutout AngusCroll (https://goo.gl/pxwQGp) 21616function toType(obj) { 21617 if (obj === null || typeof obj === 'undefined') { 21618 return "".concat(obj); 21619 } 21620 return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase(); 21621} 21622function getSpecialTransitionEndEvent() { 21623 return { 21624 bindType: TRANSITION_END, 21625 delegateType: TRANSITION_END, 21626 handle: function handle(event) { 21627 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).is(this)) { 21628 return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params 21629 } 21630 21631 return undefined; 21632 } 21633 }; 21634} 21635function transitionEndEmulator(duration) { 21636 var _this = this; 21637 var called = false; 21638 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).one(Util.TRANSITION_END, function () { 21639 called = true; 21640 }); 21641 setTimeout(function () { 21642 if (!called) { 21643 Util.triggerTransitionEnd(_this); 21644 } 21645 }, duration); 21646 return this; 21647} 21648function setTransitionEndSupport() { 21649 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn.emulateTransitionEnd = transitionEndEmulator; 21650 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); 21651} 21652 21653/** 21654 * Public Util API 21655 */ 21656 21657var Util = { 21658 TRANSITION_END: 'bsTransitionEnd', 21659 getUID: function getUID(prefix) { 21660 do { 21661 // eslint-disable-next-line no-bitwise 21662 prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here 21663 } while (document.getElementById(prefix)); 21664 return prefix; 21665 }, 21666 getSelectorFromElement: function getSelectorFromElement(element) { 21667 var selector = element.getAttribute('data-target'); 21668 if (!selector || selector === '#') { 21669 var hrefAttr = element.getAttribute('href'); 21670 selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''; 21671 } 21672 try { 21673 return document.querySelector(selector) ? selector : null; 21674 } catch (_) { 21675 return null; 21676 } 21677 }, 21678 getTransitionDurationFromElement: function getTransitionDurationFromElement(element) { 21679 if (!element) { 21680 return 0; 21681 } 21682 21683 // Get transition-duration of the element 21684 var transitionDuration = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).css('transition-duration'); 21685 var transitionDelay = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).css('transition-delay'); 21686 var floatTransitionDuration = parseFloat(transitionDuration); 21687 var floatTransitionDelay = parseFloat(transitionDelay); 21688 21689 // Return 0 if element or transition duration is not found 21690 if (!floatTransitionDuration && !floatTransitionDelay) { 21691 return 0; 21692 } 21693 21694 // If multiple durations are defined, take the first 21695 transitionDuration = transitionDuration.split(',')[0]; 21696 transitionDelay = transitionDelay.split(',')[0]; 21697 return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; 21698 }, 21699 reflow: function reflow(element) { 21700 return element.offsetHeight; 21701 }, 21702 triggerTransitionEnd: function triggerTransitionEnd(element) { 21703 jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).trigger(TRANSITION_END); 21704 }, 21705 supportsTransitionEnd: function supportsTransitionEnd() { 21706 return Boolean(TRANSITION_END); 21707 }, 21708 isElement: function isElement(obj) { 21709 return (obj[0] || obj).nodeType; 21710 }, 21711 typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { 21712 for (var property in configTypes) { 21713 if (Object.prototype.hasOwnProperty.call(configTypes, property)) { 21714 var expectedTypes = configTypes[property]; 21715 var value = config[property]; 21716 var valueType = value && Util.isElement(value) ? 'element' : toType(value); 21717 if (!new RegExp(expectedTypes).test(valueType)) { 21718 throw new Error("".concat(componentName.toUpperCase(), ": ") + "Option \"".concat(property, "\" provided type \"").concat(valueType, "\" ") + "but expected type \"".concat(expectedTypes, "\".")); 21719 } 21720 } 21721 } 21722 }, 21723 findShadowRoot: function findShadowRoot(element) { 21724 if (!document.documentElement.attachShadow) { 21725 return null; 21726 } 21727 21728 // Can find the shadow root otherwise it'll return the document 21729 if (typeof element.getRootNode === 'function') { 21730 var root = element.getRootNode(); 21731 return root instanceof ShadowRoot ? root : null; 21732 } 21733 if (element instanceof ShadowRoot) { 21734 return element; 21735 } 21736 21737 // when we don't find a shadow root 21738 if (!element.parentNode) { 21739 return null; 21740 } 21741 return Util.findShadowRoot(element.parentNode); 21742 }, 21743 jQueryDetection: function jQueryDetection() { 21744 if (typeof jquery__WEBPACK_IMPORTED_MODULE_0___default.a === 'undefined') { 21745 throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.'); 21746 } 21747 var version = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn.jquery.split(' ')[0].split('.'); 21748 var minMajor = 1; 21749 var ltMajor = 2; 21750 var minMinor = 9; 21751 var minPatch = 1; 21752 var maxMajor = 4; 21753 if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) { 21754 throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0'); 21755 } 21756 } 21757}; 21758Util.jQueryDetection(); 21759setTransitionEndSupport(); 21760/* harmony default export */ __webpack_exports__["default"] = (Util); 21761 21762/***/ }), 21763
vendor: 382,368 bytes, lines 21764-22945
21764/***/ "./node_modules/cleave.js/dist/addons/cleave-phone.i18n.js": 21765/*!*****************************************************************!*\ 21766 !*** ./node_modules/cleave.js/dist/addons/cleave-phone.i18n.js ***! 21767 \*****************************************************************/ 21768/*! no static exports found */ 21769/***/ (function(module, exports, __webpack_require__) { 21770 21771/* WEBPACK VAR INJECTION */(function(global) {function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 21772!function () { 21773 function l(l, n) { 21774 var u = l.split("."), 21775 d = Z; 21776 u[0] in d || !d.execScript || d.execScript("var " + u[0]); 21777 for (var $; u.length && ($ = u.shift());) { 21778 u.length || void 0 === n ? d = d[$] ? d[$] : d[$] = {} : d[$] = n; 21779 } 21780 } 21781 function n(l, n) { 21782 function u() {} 21783 u.prototype = n.prototype, l.M = n.prototype, l.prototype = new u(), l.prototype.constructor = l, l.N = function (l, u, d) { 21784 for (var $ = Array(arguments.length - 2), t = 2; t < arguments.length; t++) { 21785 $[t - 2] = arguments[t]; 21786 } 21787 return n.prototype[u].apply(l, $); 21788 }; 21789 } 21790 function u(l, n) { 21791 null != l && this.a.apply(this, arguments); 21792 } 21793 function d(l) { 21794 l.b = ""; 21795 } 21796 function $(l, n) { 21797 l.sort(n || t); 21798 } 21799 function t(l, n) { 21800 return l > n ? 1 : l < n ? -1 : 0; 21801 } 21802 function e(l) { 21803 var n, 21804 u = [], 21805 d = 0; 21806 for (n in l) { 21807 u[d++] = l[n]; 21808 } 21809 return u; 21810 } 21811 function r(l, n) { 21812 this.b = l, this.a = {}; 21813 for (var u = 0; u < n.length; u++) { 21814 var d = n[u]; 21815 this.a[d.b] = d; 21816 } 21817 } 21818 function i(l) { 21819 return l = e(l.a), $(l, function (l, n) { 21820 return l.b - n.b; 21821 }), l; 21822 } 21823 function a(l, n) { 21824 switch (this.b = l, this.g = !!n.v, this.a = n.c, this.i = n.type, this.h = !1, this.a) { 21825 case w: 21826 case x: 21827 case J: 21828 case Q: 21829 case X: 21830 case Y: 21831 case W: 21832 this.h = !0; 21833 } 21834 this.f = n.defaultValue; 21835 } 21836 function o() { 21837 this.a = {}, this.f = this.j().a, this.b = this.g = null; 21838 } 21839 function C(l, n) { 21840 for (var u = i(l.j()), d = 0; d < u.length; d++) { 21841 var $ = u[d], 21842 t = $.b; 21843 if (null != n.a[t]) { 21844 l.b && delete l.b[$.b]; 21845 var e = 11 == $.a || 10 == $.a; 21846 if ($.g) for (var $ = s(n, t) || [], r = 0; r < $.length; r++) { 21847 var a = l, 21848 o = t, 21849 f = e ? $[r].clone() : $[r]; 21850 a.a[o] || (a.a[o] = []), a.a[o].push(f), a.b && delete a.b[o]; 21851 } else $ = s(n, t), e ? (e = s(l, t)) ? C(e, $) : h(l, t, $.clone()) : h(l, t, $); 21852 } 21853 } 21854 } 21855 function s(l, n) { 21856 var u = l.a[n]; 21857 if (null == u) return null; 21858 if (l.g) { 21859 if (!(n in l.b)) { 21860 var d = l.g, 21861 $ = l.f[n]; 21862 if (null != u) if ($.g) { 21863 for (var t = [], e = 0; e < u.length; e++) { 21864 t[e] = d.b($, u[e]); 21865 } 21866 u = t; 21867 } else u = d.b($, u); 21868 return l.b[n] = u; 21869 } 21870 return l.b[n]; 21871 } 21872 return u; 21873 } 21874 function f(l, n, u) { 21875 var d = s(l, n); 21876 return l.f[n].g ? d[u || 0] : d; 21877 } 21878 function p(l, n) { 21879 var u; 21880 if (null != l.a[n]) u = f(l, n, void 0);else l: { 21881 if (u = l.f[n], void 0 === u.f) { 21882 var d = u.i; 21883 if (d === Boolean) u.f = !1;else if (d === Number) u.f = 0;else { 21884 if (d !== String) { 21885 u = new d(); 21886 break l; 21887 } 21888 u.f = u.h ? "0" : ""; 21889 } 21890 } 21891 u = u.f; 21892 } 21893 return u; 21894 } 21895 function c(l, n) { 21896 return l.f[n].g ? null != l.a[n] ? l.a[n].length : 0 : null != l.a[n] ? 1 : 0; 21897 } 21898 function h(l, n, u) { 21899 l.a[n] = u, l.b && (l.b[n] = u); 21900 } 21901 function g(l, n) { 21902 var u, 21903 d = []; 21904 for (u in n) { 21905 0 != u && d.push(new a(u, n[u])); 21906 } 21907 return new r(l, d); 21908 } /* 21909 Protocol Buffer 2 Copyright 2008 Google Inc. 21910 All other code copyright its respective owners. 21911 Copyright (C) 2010 The Libphonenumber Authors 21912 Licensed under the Apache License, Version 2.0 (the "License"); 21913 you may not use this file except in compliance with the License. 21914 You may obtain a copy of the License at 21915 http://www.apache.org/licenses/LICENSE-2.0 21916 Unless required by applicable law or agreed to in writing, software 21917 distributed under the License is distributed on an "AS IS" BASIS, 21918 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 21919 See the License for the specific language governing permissions and 21920 limitations under the License. 21921 */ 21922 function S() { 21923 o.call(this); 21924 } 21925 function M() { 21926 o.call(this); 21927 } 21928 function A() { 21929 o.call(this); 21930 } 21931 function m() {} 21932 function b() {} 21933 function G() {} /* 21934 Copyright (C) 2010 The Libphonenumber Authors. 21935 Licensed under the Apache License, Version 2.0 (the "License"); 21936 you may not use this file except in compliance with the License. 21937 You may obtain a copy of the License at 21938 http://www.apache.org/licenses/LICENSE-2.0 21939 Unless required by applicable law or agreed to in writing, software 21940 distributed under the License is distributed on an "AS IS" BASIS, 21941 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 21942 See the License for the specific language governing permissions and 21943 limitations under the License. 21944 */ 21945 function y() { 21946 this.a = {}; 21947 } 21948 function T(l) { 21949 return 0 == l.length || tl.test(l); 21950 } 21951 function N(l, n) { 21952 if (null == n) return null; 21953 n = n.toUpperCase(); 21954 var u = l.a[n]; 21955 if (null == u) { 21956 if (u = nl[n], null == u) return null; 21957 u = new G().a(A.j(), u), l.a[n] = u; 21958 } 21959 return u; 21960 } 21961 function B(l) { 21962 return l = ll[l], null == l ? "ZZ" : l[0]; 21963 } 21964 function E(l) { 21965 this.H = RegExp("â"), this.C = "", this.m = new u(), this.w = "", this.i = new u(), this.u = new u(), this.l = !0, this.A = this.o = this.F = !1, this.G = y.b(), this.s = 0, this.b = new u(), this.B = !1, this.h = "", this.a = new u(), this.f = [], this.D = l, this.J = this.g = v(this, this.D); 21966 } 21967 function v(l, n) { 21968 var u; 21969 if (null != n && isNaN(n) && n.toUpperCase() in nl) { 21970 if (u = N(l.G, n), null == u) throw Error("Invalid region code: " + n); 21971 u = p(u, 10); 21972 } else u = 0; 21973 return u = N(l.G, B(u)), null != u ? u : el; 21974 } 21975 function R(l) { 21976 for (var n = l.f.length, u = 0; u < n; ++u) { 21977 var $ = l.f[u], 21978 t = p($, 1); 21979 if (l.w == t) return !1; 21980 var e; 21981 e = l; 21982 var r = $, 21983 i = p(r, 1); 21984 if (-1 != i.indexOf("|")) e = !1;else { 21985 i = i.replace(rl, "\\d"), i = i.replace(il, "\\d"), d(e.m); 21986 var a; 21987 a = e; 21988 var r = p(r, 2), 21989 o = "999999999999999".match(i)[0]; 21990 o.length < a.a.b.length ? a = "" : (a = o.replace(new RegExp(i, "g"), r), a = a.replace(RegExp("9", "g"), "â")), 0 < a.length ? (e.m.a(a), e = !0) : e = !1; 21991 } 21992 if (e) return l.w = t, l.B = ol.test(f($, 4)), l.s = 0, !0; 21993 } 21994 return l.l = !1; 21995 } 21996 function I(l, n) { 21997 for (var u = [], d = n.length - 3, $ = l.f.length, t = 0; t < $; ++t) { 21998 var e = l.f[t]; 21999 0 == c(e, 3) ? u.push(l.f[t]) : (e = f(e, 3, Math.min(d, c(e, 3) - 1)), 0 == n.search(e) && u.push(l.f[t])); 22000 } 22001 l.f = u; 22002 } 22003 function K(l, n) { 22004 l.i.a(n); 22005 var u = n; 22006 if ($l.test(u) || 1 == l.i.b.length && dl.test(u)) { 22007 var $, 22008 u = n; 22009 "+" == u ? ($ = u, l.u.a(u)) : ($ = ul[u], l.u.a($), l.a.a($)), n = $; 22010 } else l.l = !1, l.F = !0; 22011 if (!l.l) { 22012 if (!l.F) if (U(l)) { 22013 if (O(l)) return L(l); 22014 } else if (0 < l.h.length && (u = l.a.toString(), d(l.a), l.a.a(l.h), l.a.a(u), u = l.b.toString(), $ = u.lastIndexOf(l.h), d(l.b), l.b.a(u.substring(0, $))), l.h != H(l)) return l.b.a(" "), L(l); 22015 return l.i.toString(); 22016 } 22017 switch (l.u.b.length) { 22018 case 0: 22019 case 1: 22020 case 2: 22021 return l.i.toString(); 22022 case 3: 22023 if (!U(l)) return l.h = H(l), F(l); 22024 l.A = !0; 22025 default: 22026 return l.A ? (O(l) && (l.A = !1), l.b.toString() + l.a.toString()) : 0 < l.f.length ? (u = V(l, n), $ = _(l), 0 < $.length ? $ : (I(l, l.a.toString()), R(l) ? D(l) : l.l ? P(l, u) : l.i.toString())) : F(l); 22027 } 22028 } 22029 function L(l) { 22030 return l.l = !0, l.A = !1, l.f = [], l.s = 0, d(l.m), l.w = "", F(l); 22031 } 22032 function _(l) { 22033 for (var n = l.a.toString(), u = l.f.length, d = 0; d < u; ++d) { 22034 var $ = l.f[d], 22035 t = p($, 1); 22036 if (new RegExp("^(?:" + t + ")$").test(n)) return l.B = ol.test(f($, 4)), n = n.replace(new RegExp(t, "g"), f($, 2)), P(l, n); 22037 } 22038 return ""; 22039 } 22040 function P(l, n) { 22041 var u = l.b.b.length; 22042 return l.B && 0 < u && " " != l.b.toString().charAt(u - 1) ? l.b + " " + n : l.b + n; 22043 } 22044 function F(l) { 22045 var n = l.a.toString(); 22046 if (3 <= n.length) { 22047 for (var u = l.o && 0 == l.h.length && 0 < c(l.g, 20) ? s(l.g, 20) || [] : s(l.g, 19) || [], d = u.length, $ = 0; $ < d; ++$) { 22048 var t = u[$]; 22049 0 < l.h.length && T(p(t, 4)) && !f(t, 6) && null == t.a[5] || (0 != l.h.length || l.o || T(p(t, 4)) || f(t, 6)) && al.test(p(t, 2)) && l.f.push(t); 22050 } 22051 return I(l, n), n = _(l), 0 < n.length ? n : R(l) ? D(l) : l.i.toString(); 22052 } 22053 return P(l, n); 22054 } 22055 function D(l) { 22056 var n = l.a.toString(), 22057 u = n.length; 22058 if (0 < u) { 22059 for (var d = "", $ = 0; $ < u; $++) { 22060 d = V(l, n.charAt($)); 22061 } 22062 return l.l ? P(l, d) : l.i.toString(); 22063 } 22064 return l.b.toString(); 22065 } 22066 function H(l) { 22067 var n, 22068 u = l.a.toString(), 22069 $ = 0; 22070 return 1 != f(l.g, 10) ? n = !1 : (n = l.a.toString(), n = "1" == n.charAt(0) && "0" != n.charAt(1) && "1" != n.charAt(1)), n ? ($ = 1, l.b.a("1").a(" "), l.o = !0) : null != l.g.a[15] && (n = new RegExp("^(?:" + f(l.g, 15) + ")"), n = u.match(n), null != n && null != n[0] && 0 < n[0].length && (l.o = !0, $ = n[0].length, l.b.a(u.substring(0, $)))), d(l.a), l.a.a(u.substring($)), u.substring(0, $); 22071 } 22072 function U(l) { 22073 var n = l.u.toString(), 22074 u = new RegExp("^(?:\\+|" + f(l.g, 11) + ")"), 22075 u = n.match(u); 22076 return null != u && null != u[0] && 0 < u[0].length && (l.o = !0, u = u[0].length, d(l.a), l.a.a(n.substring(u)), d(l.b), l.b.a(n.substring(0, u)), "+" != n.charAt(0) && l.b.a(" "), !0); 22077 } 22078 function O(l) { 22079 if (0 == l.a.b.length) return !1; 22080 var n, 22081 $ = new u(); 22082 l: { 22083 if (n = l.a.toString(), 0 != n.length && "0" != n.charAt(0)) for (var t, e = n.length, r = 1; 3 >= r && r <= e; ++r) { 22084 if (t = parseInt(n.substring(0, r), 10), t in ll) { 22085 $.a(n.substring(r)), n = t; 22086 break l; 22087 } 22088 } 22089 n = 0; 22090 } 22091 return 0 != n && (d(l.a), l.a.a($.toString()), $ = B(n), "001" == $ ? l.g = N(l.G, "" + n) : $ != l.D && (l.g = v(l, $)), l.b.a("" + n).a(" "), l.h = "", !0); 22092 } 22093 function V(l, n) { 22094 var u = l.m.toString(); 22095 if (0 <= u.substring(l.s).search(l.H)) { 22096 var $ = u.search(l.H), 22097 u = u.replace(l.H, n); 22098 return d(l.m), l.m.a(u), l.s = $, u.substring(0, l.s + 1); 22099 } 22100 return 1 == l.f.length && (l.l = !1), l.w = "", l.i.toString(); 22101 } 22102 var Z = this; 22103 u.prototype.b = "", u.prototype.set = function (l) { 22104 this.b = "" + l; 22105 }, u.prototype.a = function (l, n, u) { 22106 if (this.b += String(l), null != n) for (var d = 1; d < arguments.length; d++) { 22107 this.b += arguments[d]; 22108 } 22109 return this; 22110 }, u.prototype.toString = function () { 22111 return this.b; 22112 }; 22113 var W = 1, 22114 Y = 2, 22115 w = 3, 22116 x = 4, 22117 J = 6, 22118 Q = 16, 22119 X = 18; 22120 o.prototype.set = function (l, n) { 22121 h(this, l.b, n); 22122 }, o.prototype.clone = function () { 22123 var l = new this.constructor(); 22124 return l != this && (l.a = {}, l.b && (l.b = {}), C(l, this)), l; 22125 }, n(S, o); 22126 var j = null; 22127 n(M, o); 22128 var q = null; 22129 n(A, o); 22130 var k = null; 22131 S.prototype.j = function () { 22132 var l = j; 22133 return l || (j = l = g(S, { 22134 0: { 22135 name: "NumberFormat", 22136 I: "i18n.phonenumbers.NumberFormat" 22137 }, 22138 1: { 22139 name: "pattern", 22140 required: !0, 22141 c: 9, 22142 type: String 22143 }, 22144 2: { 22145 name: "format", 22146 required: !0, 22147 c: 9, 22148 type: String 22149 }, 22150 3: { 22151 name: "leading_digits_pattern", 22152 v: !0, 22153 c: 9, 22154 type: String 22155 }, 22156 4: { 22157 name: "national_prefix_formatting_rule", 22158 c: 9, 22159 type: String 22160 }, 22161 6: { 22162 name: "national_prefix_optional_when_formatting", 22163 c: 8, 22164 defaultValue: !1, 22165 type: Boolean 22166 }, 22167 5: { 22168 name: "domestic_carrier_code_formatting_rule", 22169 c: 9, 22170 type: String 22171 } 22172 })), l; 22173 }, S.j = S.prototype.j, M.prototype.j = function () { 22174 var l = q; 22175 return l || (q = l = g(M, { 22176 0: { 22177 name: "PhoneNumberDesc", 22178 I: "i18n.phonenumbers.PhoneNumberDesc" 22179 }, 22180 2: { 22181 name: "national_number_pattern", 22182 c: 9, 22183 type: String 22184 }, 22185 9: { 22186 name: "possible_length", 22187 v: !0, 22188 c: 5, 22189 type: Number 22190 }, 22191 10: { 22192 name: "possible_length_local_only", 22193 v: !0, 22194 c: 5, 22195 type: Number 22196 }, 22197 6: { 22198 name: "example_number", 22199 c: 9, 22200 type: String 22201 } 22202 })), l; 22203 }, M.j = M.prototype.j, A.prototype.j = function () { 22204 var l = k; 22205 return l || (k = l = g(A, { 22206 0: { 22207 name: "PhoneMetadata", 22208 I: "i18n.phonenumbers.PhoneMetadata" 22209 }, 22210 1: { 22211 name: "general_desc", 22212 c: 11, 22213 type: M 22214 }, 22215 2: { 22216 name: "fixed_line", 22217 c: 11, 22218 type: M 22219 }, 22220 3: { 22221 name: "mobile", 22222 c: 11, 22223 type: M 22224 }, 22225 4: { 22226 name: "toll_free", 22227 c: 11, 22228 type: M 22229 }, 22230 5: { 22231 name: "premium_rate", 22232 c: 11, 22233 type: M 22234 }, 22235 6: { 22236 name: "shared_cost", 22237 c: 11, 22238 type: M 22239 }, 22240 7: { 22241 name: "personal_number", 22242 c: 11, 22243 type: M 22244 }, 22245 8: { 22246 name: "voip", 22247 c: 11, 22248 type: M 22249 }, 22250 21: { 22251 name: "pager", 22252 c: 11, 22253 type: M 22254 }, 22255 25: { 22256 name: "uan", 22257 c: 11, 22258 type: M 22259 }, 22260 27: { 22261 name: "emergency", 22262 c: 11, 22263 type: M 22264 }, 22265 28: { 22266 name: "voicemail", 22267 c: 11, 22268 type: M 22269 }, 22270 29: { 22271 name: "short_code", 22272 c: 11, 22273 type: M 22274 }, 22275 30: { 22276 name: "standard_rate", 22277 c: 11, 22278 type: M 22279 }, 22280 31: { 22281 name: "carrier_specific", 22282 c: 11, 22283 type: M 22284 }, 22285 33: { 22286 name: "sms_services", 22287 c: 11, 22288 type: M 22289 }, 22290 24: { 22291 name: "no_international_dialling", 22292 c: 11, 22293 type: M 22294 }, 22295 9: { 22296 name: "id", 22297 required: !0, 22298 c: 9, 22299 type: String 22300 }, 22301 10: { 22302 name: "country_code", 22303 c: 5, 22304 type: Number 22305 }, 22306 11: { 22307 name: "international_prefix", 22308 c: 9, 22309 type: String 22310 }, 22311 17: { 22312 name: "preferred_international_prefix", 22313 c: 9, 22314 type: String 22315 }, 22316 12: { 22317 name: "national_prefix", 22318 c: 9, 22319 type: String 22320 }, 22321 13: { 22322 name: "preferred_extn_prefix", 22323 c: 9, 22324 type: String 22325 }, 22326 15: { 22327 name: "national_prefix_for_parsing", 22328 c: 9, 22329 type: String 22330 }, 22331 16: { 22332 name: "national_prefix_transform_rule", 22333 c: 9, 22334 type: String 22335 }, 22336 18: { 22337 name: "same_mobile_and_fixed_line_pattern", 22338 c: 8, 22339 defaultValue: !1, 22340 type: Boolean 22341 }, 22342 19: { 22343 name: "number_format", 22344 v: !0, 22345 c: 11, 22346 type: S 22347 }, 22348 20: { 22349 name: "intl_number_format", 22350 v: !0, 22351 c: 11, 22352 type: S 22353 }, 22354 22: { 22355 name: "main_country_for_code", 22356 c: 8, 22357 defaultValue: !1, 22358 type: Boolean 22359 }, 22360 23: { 22361 name: "leading_digits", 22362 c: 9, 22363 type: String 22364 }, 22365 26: { 22366 name: "leading_zero_possible", 22367 c: 8, 22368 defaultValue: !1, 22369 type: Boolean 22370 } 22371 })), l; 22372 }, A.j = A.prototype.j, m.prototype.a = function (l) { 22373 throw new l.b(), Error("Unimplemented"); 22374 }, m.prototype.b = function (l, n) { 22375 if (11 == l.a || 10 == l.a) return n instanceof o ? n : this.a(l.i.prototype.j(), n); 22376 if (14 == l.a) { 22377 if ("string" == typeof n && z.test(n)) { 22378 var u = Number(n); 22379 if (0 < u) return u; 22380 } 22381 return n; 22382 } 22383 if (!l.h) return n; 22384 if (u = l.i, u === String) { 22385 if ("number" == typeof n) return String(n); 22386 } else if (u === Number && "string" == typeof n && ("Infinity" === n || "-Infinity" === n || "NaN" === n || z.test(n))) return Number(n); 22387 return n; 22388 }; 22389 var z = /^-?[0-9]+$/; 22390 n(b, m), b.prototype.a = function (l, n) { 22391 var u = new l.b(); 22392 return u.g = this, u.a = n, u.b = {}, u; 22393 }, n(G, b), G.prototype.b = function (l, n) { 22394 return 8 == l.a ? !!n : m.prototype.b.apply(this, arguments); 22395 }, G.prototype.a = function (l, n) { 22396 return G.M.a.call(this, l, n); 22397 }; /* 22398 Copyright (C) 2010 The Libphonenumber Authors 22399 Licensed under the Apache License, Version 2.0 (the "License"); 22400 you may not use this file except in compliance with the License. 22401 You may obtain a copy of the License at 22402 http://www.apache.org/licenses/LICENSE-2.0 22403 Unless required by applicable law or agreed to in writing, software 22404 distributed under the License is distributed on an "AS IS" BASIS, 22405 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 22406 See the License for the specific language governing permissions and 22407 limitations under the License. 22408 */ 22409 var ll = { 22410 1: "US AG AI AS BB BM BS CA DM DO GD GU JM KN KY LC MP MS PR SX TC TT VC VG VI".split(" "), 22411 7: ["RU", "KZ"], 22412 20: ["EG"], 22413 27: ["ZA"], 22414 30: ["GR"], 22415 31: ["NL"], 22416 32: ["BE"], 22417 33: ["FR"], 22418 34: ["ES"], 22419 36: ["HU"], 22420 39: ["IT", "VA"], 22421 40: ["RO"], 22422 41: ["CH"], 22423 43: ["AT"], 22424 44: ["GB", "GG", "IM", "JE"], 22425 45: ["DK"], 22426 46: ["SE"], 22427 47: ["NO", "SJ"], 22428 48: ["PL"], 22429 49: ["DE"], 22430 51: ["PE"], 22431 52: ["MX"], 22432 53: ["CU"], 22433 54: ["AR"], 22434 55: ["BR"], 22435 56: ["CL"], 22436 57: ["CO"], 22437 58: ["VE"], 22438 60: ["MY"], 22439 61: ["AU", "CC", "CX"], 22440 62: ["ID"], 22441 63: ["PH"], 22442 64: ["NZ"], 22443 65: ["SG"], 22444 66: ["TH"], 22445 81: ["JP"], 22446 82: ["KR"], 22447 84: ["VN"], 22448 86: ["CN"], 22449 90: ["TR"], 22450 91: ["IN"], 22451 92: ["PK"], 22452 93: ["AF"], 22453 94: ["LK"], 22454 95: ["MM"], 22455 98: ["IR"], 22456 211: ["SS"], 22457 212: ["MA", "EH"], 22458 213: ["DZ"], 22459 216: ["TN"], 22460 218: ["LY"], 22461 220: ["GM"], 22462 221: ["SN"], 22463 222: ["MR"], 22464 223: ["ML"], 22465 224: ["GN"], 22466 225: ["CI"], 22467 226: ["BF"], 22468 227: ["NE"], 22469 228: ["TG"], 22470 229: ["BJ"], 22471 230: ["MU"], 22472 231: ["LR"], 22473 232: ["SL"], 22474 233: ["GH"], 22475 234: ["NG"], 22476 235: ["TD"], 22477 236: ["CF"], 22478 237: ["CM"], 22479 238: ["CV"], 22480 239: ["ST"], 22481 240: ["GQ"], 22482 241: ["GA"], 22483 242: ["CG"], 22484 243: ["CD"], 22485 244: ["AO"], 22486 245: ["GW"], 22487 246: ["IO"], 22488 247: ["AC"], 22489 248: ["SC"], 22490 249: ["SD"], 22491 250: ["RW"], 22492 251: ["ET"], 22493 252: ["SO"], 22494 253: ["DJ"], 22495 254: ["KE"], 22496 255: ["TZ"], 22497 256: ["UG"], 22498 257: ["BI"], 22499 258: ["MZ"], 22500 260: ["ZM"], 22501 261: ["MG"], 22502 262: ["RE", "YT"], 22503 263: ["ZW"], 22504 264: ["NA"], 22505 265: ["MW"], 22506 266: ["LS"], 22507 267: ["BW"], 22508 268: ["SZ"], 22509 269: ["KM"], 22510 290: ["SH", "TA"], 22511 291: ["ER"], 22512 297: ["AW"], 22513 298: ["FO"], 22514 299: ["GL"], 22515 350: ["GI"], 22516 351: ["PT"], 22517 352: ["LU"], 22518 353: ["IE"], 22519 354: ["IS"], 22520 355: ["AL"], 22521 356: ["MT"], 22522 357: ["CY"], 22523 358: ["FI", "AX"], 22524 359: ["BG"], 22525 370: ["LT"], 22526 371: ["LV"], 22527 372: ["EE"], 22528 373: ["MD"], 22529 374: ["AM"], 22530 375: ["BY"], 22531 376: ["AD"], 22532 377: ["MC"], 22533 378: ["SM"], 22534 380: ["UA"], 22535 381: ["RS"], 22536 382: ["ME"], 22537 383: ["XK"], 22538 385: ["HR"], 22539 386: ["SI"], 22540 387: ["BA"], 22541 389: ["MK"], 22542 420: ["CZ"], 22543 421: ["SK"], 22544 423: ["LI"], 22545 500: ["FK"], 22546 501: ["BZ"], 22547 502: ["GT"], 22548 503: ["SV"], 22549 504: ["HN"], 22550 505: ["NI"], 22551 506: ["CR"], 22552 507: ["PA"], 22553 508: ["PM"], 22554 509: ["HT"], 22555 590: ["GP", "BL", "MF"], 22556 591: ["BO"], 22557 592: ["GY"], 22558 593: ["EC"], 22559 594: ["GF"], 22560 595: ["PY"], 22561 596: ["MQ"], 22562 597: ["SR"], 22563 598: ["UY"], 22564 599: ["CW", "BQ"], 22565 670: ["TL"], 22566 672: ["NF"], 22567 673: ["BN"], 22568 674: ["NR"], 22569 675: ["PG"], 22570 676: ["TO"], 22571 677: ["SB"], 22572 678: ["VU"], 22573 679: ["FJ"], 22574 680: ["PW"], 22575 681: ["WF"], 22576 682: ["CK"], 22577 683: ["NU"], 22578 685: ["WS"], 22579 686: ["KI"], 22580 687: ["NC"], 22581 688: ["TV"], 22582 689: ["PF"], 22583 690: ["TK"], 22584 691: ["FM"], 22585 692: ["MH"], 22586 800: ["001"], 22587 808: ["001"], 22588 850: ["KP"], 22589 852: ["HK"], 22590 853: ["MO"], 22591 855: ["KH"], 22592 856: ["LA"], 22593 870: ["001"], 22594 878: ["001"], 22595 880: ["BD"], 22596 881: ["001"], 22597 882: ["001"], 22598 883: ["001"], 22599 886: ["TW"], 22600 888: ["001"], 22601 960: ["MV"], 22602 961: ["LB"], 22603 962: ["JO"], 22604 963: ["SY"], 22605 964: ["IQ"], 22606 965: ["KW"], 22607 966: ["SA"], 22608 967: ["YE"], 22609 968: ["OM"], 22610 970: ["PS"], 22611 971: ["AE"], 22612 972: ["IL"], 22613 973: ["BH"], 22614 974: ["QA"], 22615 975: ["BT"], 22616 976: ["MN"], 22617 977: ["NP"], 22618 979: ["001"], 22619 992: ["TJ"], 22620 993: ["TM"], 22621 994: ["AZ"], 22622 995: ["GE"], 22623 996: ["KG"], 22624 998: ["UZ"] 22625 }, 22626 nl = { 22627 800: [null, [null, null, "\\d{8}", null, null, null, null, null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "\\d{8}", null, null, null, "12345678"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "001", 800, null, null, null, null, null, null, null, 1, [[null, "(\\d{4})(\\d{4})", "$1 $2"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22628 808: [null, [null, null, "\\d{8}", null, null, null, null, null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "\\d{8}", null, null, null, "12345678"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "001", 808, null, null, null, null, null, null, null, 1, [[null, "(\\d{4})(\\d{4})", "$1 $2"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22629 870: [null, [null, null, "[35-7]\\d{8}", null, null, null, null, null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:[356]\\d|7[6-8])\\d{7}", null, null, null, "301234567"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "001", 870, null, null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[35-7]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22630 878: [null, [null, null, "10\\d{10}", null, null, null, null, null, null, [12]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "10\\d{10}", null, null, null, "101234567890"], "001", 878, null, null, null, null, null, null, null, 1, [[null, "(\\d{2})(\\d{5})(\\d{5})", "$1 $2 $3", ["1"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22631 881: [null, [null, null, "[67]\\d{8}", null, null, null, null, null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "[67]\\d{8}", null, null, null, "612345678"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "001", 881, null, null, null, null, null, null, null, null, [[null, "(\\d)(\\d{3})(\\d{5})", "$1 $2 $3", ["[67]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22632 882: [null, [null, null, "[13]\\d{6}(?:\\d{2,5})?|1\\d{7}", null, null, null, null, null, null, [7, 8, 9, 10, 11, 12]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "3(?:(?:(?:2|7\\d{3})\\d|37)\\d\\d|4(?:2|7\\d{3}))\\d{4}", null, null, null, "3421234", null, null, [7, 9, 10, 12]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])|6\\d{1,6})|3(?:45|9\\d{3})\\d{3})\\d{4}", null, null, null, "390123456789"], "001", 882, null, null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{5})", "$1 $2", ["16|342"]], [null, "(\\d{2})(\\d{2})(\\d{4})", "$1 $2 $3", ["1"]], [null, "(\\d{2})(\\d{4})(\\d{3})", "$1 $2 $3", ["3[23]"]], [null, "(\\d{2})(\\d{3,4})(\\d{4})", "$1 $2 $3", ["1"]], [null, "(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["34[57]"]], [null, "(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["34"]], [null, "(\\d{2})(\\d{4,5})(\\d{5})", "$1 $2 $3", ["[13]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "348[57]\\d{7}", null, null, null, "34851234567", null, null, [11]]], 22633 883: [null, [null, null, "51\\d{7}(?:\\d{3})?", null, null, null, null, null, null, [9, 12]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "51[013]0\\d{8}|5100\\d{5}", null, null, null, "510012345"], "001", 883, null, null, null, null, null, null, null, 1, [[null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["510"]], [null, "(\\d{3})(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["510"]], [null, "(\\d{4})(\\d{4})(\\d{4})", "$1 $2 $3", ["5"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22634 888: [null, [null, null, "\\d{11}", null, null, null, null, null, null, [11]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "001", 888, null, null, null, null, null, null, null, 1, [[null, "(\\d{3})(\\d{3})(\\d{5})", "$1 $2 $3"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "\\d{11}", null, null, null, "12345678901"], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22635 979: [null, [null, null, "\\d{9}", null, null, null, null, null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "\\d{9}", null, null, null, "123456789"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "001", 979, null, null, null, null, null, null, null, 1, [[null, "(\\d)(\\d{4})(\\d{4})", "$1 $2 $3"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22636 AC: [null, [null, null, "(?:[01589]\\d|[46])\\d{4}", null, null, null, null, null, null, [5, 6]], [null, null, "6[2-467]\\d{3}", null, null, null, "62889", null, null, [5]], [null, null, "4\\d{4}", null, null, null, "40123", null, null, [5]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "AC", 247, "00", null, null, null, null, null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "[01589]\\d{5}", null, null, null, "542011", null, null, [6]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22637 AD: [null, [null, null, "(?:1|6\\d)\\d{7}|[136-9]\\d{5}", null, null, null, null, null, null, [6, 8, 9]], [null, null, "[78]\\d{5}", null, null, null, "712345", null, null, [6]], [null, null, "690\\d{6}|[36]\\d{5}", null, null, null, "312345", null, null, [6, 9]], [null, null, "180[02]\\d{4}", null, null, null, "18001234", null, null, [8]], [null, null, "[19]\\d{5}", null, null, null, "912345", null, null, [6]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "AD", 376, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{3})", "$1 $2", ["[136-9]"]], [null, "(\\d{4})(\\d{4})", "$1 $2", ["1"]], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["6"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "1800\\d{4}", null, null, null, null, null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22638 AE: [null, [null, null, "(?:[4-7]\\d|9[0-689])\\d{7}|800\\d{2,9}|[2-4679]\\d{7}", null, null, null, null, null, null, [5, 6, 7, 8, 9, 10, 11, 12]], [null, null, "[2-4679][2-8]\\d{6}", null, null, null, "22345678", null, null, [8], [7]], [null, null, "5[024-68]\\d{7}", null, null, null, "501234567", null, null, [9]], [null, null, "400\\d{6}|800\\d{2,9}", null, null, null, "800123456"], [null, null, "900[02]\\d{5}", null, null, null, "900234567", null, null, [9]], [null, null, "700[05]\\d{5}", null, null, null, "700012345", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "AE", 971, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d{2,9})", "$1 $2", ["60|8"]], [null, "(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["[236]|[479][2-8]"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["5"], "0$1"], [null, "(\\d{3})(\\d)(\\d{5})", "$1 $2 $3", ["[479]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "600[25]\\d{5}", null, null, null, "600212345", null, null, [9]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22639 AF: [null, [null, null, "[2-7]\\d{8}", null, null, null, null, null, null, [9], [7]], [null, null, "(?:[25][0-8]|[34][0-4]|6[0-5])[2-9]\\d{6}", null, null, null, "234567890", null, null, null, [7]], [null, null, "7(?:[014-9]\\d|2[89]|3[01])\\d{6}", null, null, null, "701234567"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "AF", 93, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["[2-9]"]], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[2-7]"], "0$1"]], [[null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[2-7]"], "0$1"]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22640 AG: [null, [null, null, "(?:268|[58]\\d\\d|900)\\d{7}", null, null, null, null, null, null, [10], [7]], [null, null, "268(?:4(?:6[0-38]|84)|56[0-2])\\d{4}", null, null, null, "2684601234", null, null, null, [7]], [null, null, "268(?:464|7(?:1[3-9]|2\\d|3[246]|64|[78][0-689]))\\d{4}", null, null, null, "2684641234", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002123456"], [null, null, "900[2-9]\\d{6}", null, null, null, "9002123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, "26848[01]\\d{4}", null, null, null, "2684801234", null, null, null, [7]], "AG", 1, "011", "1", null, null, "1", null, null, null, null, null, [null, null, "26840[69]\\d{4}", null, null, null, "2684061234", null, null, null, [7]], null, "268", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22641 AI: [null, [null, null, "(?:264|[58]\\d\\d|900)\\d{7}", null, null, null, null, null, null, [10], [7]], [null, null, "2644(?:6[12]|9[78])\\d{4}", null, null, null, "2644612345", null, null, null, [7]], [null, null, "264(?:235|476|5(?:3[6-9]|8[1-4])|7(?:29|72))\\d{4}", null, null, null, "2642351234", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002123456"], [null, null, "900[2-9]\\d{6}", null, null, null, "9002123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, null, null, null, null, null, null, null, [-1]], "AI", 1, "011", "1", null, null, "1", null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "264", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22642 AL: [null, [null, null, "(?:(?:[2-58]|6\\d)\\d\\d|700)\\d{5}|(?:8\\d{2,3}|900)\\d{3}", null, null, null, null, null, null, [6, 7, 8, 9], [5]], [null, null, "(?:[2358](?:[16-9]\\d[2-9]|[2-5][2-9]\\d)|4(?:[2-57-9][2-9]|6\\d)\\d)\\d{4}", null, null, null, "22345678", null, null, [8], [5, 6, 7]], [null, null, "6(?:[689][2-9]|7[2-6])\\d{6}", null, null, null, "662123456", null, null, [9]], [null, null, "800\\d{4}", null, null, null, "8001234", null, null, [7]], [null, null, "900[1-9]\\d\\d", null, null, null, "900123", null, null, [6]], [null, null, "808[1-9]\\d\\d", null, null, null, "808123", null, null, [6]], [null, null, "700[2-9]\\d{4}", null, null, null, "70021234", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], "AL", 355, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d{3,4})", "$1 $2", ["80|9"], "0$1"], [null, "(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["4[2-6]"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[2358][2-5]|4"], "0$1"], [null, "(\\d{3})(\\d{5})", "$1 $2", ["[23578]"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["6"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22643 AM: [null, [null, null, "(?:[1-489]\\d|55|60|77)\\d{6}", null, null, null, null, null, null, [8], [5, 6]], [null, null, "(?:(?:1[0-2]|47)\\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2)\\d{5}", null, null, null, "10123456", null, null, null, [5, 6]], [null, null, "(?:4[1349]|55|77|88|9[13-9])\\d{6}", null, null, null, "77123456"], [null, null, "800\\d{5}", null, null, null, "80012345"], [null, null, "90[016]\\d{5}", null, null, null, "90012345"], [null, null, "80[1-4]\\d{5}", null, null, null, "80112345"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "60(?:2[78]|3[5-9]|4[02-9]|5[0-46-9]|[6-8]\\d|90)\\d{4}", null, null, null, "60271234"], "AM", 374, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{6})", "$1 $2", ["1|47"], "(0$1)"], [null, "(\\d{3})(\\d{5})", "$1 $2", ["[23]"], "(0$1)"], [null, "(\\d{2})(\\d{6})", "$1 $2", ["[4-7]|88|9[13-9]"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["[89]"], "0 $1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22644 AO: [null, [null, null, "[29]\\d{8}", null, null, null, null, null, null, [9]], [null, null, "2\\d(?:[0134][25-9]|[25-9]\\d)\\d{5}", null, null, null, "222123456"], [null, null, "9[1-49]\\d{7}", null, null, null, "923123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "AO", 244, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[29]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22645 AR: [null, [null, null, "(?:11|(?:[2368]|9\\d)\\d)\\d{8}", null, null, null, null, null, null, [10, 11], [6, 7, 8]], [null, null, "11\\d{8}|(?:2(?:2(?:[013]\\d|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:[07]\\d|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|6[013-9])|4(?:7[3-8]|9\\d)|6(?:[01346]\\d|2[24-6]|5[15-8])|80\\d|9(?:[012789]\\d|3[1-6]|4[02-9]|5[234]|6[2-46]))|3(?:3(?:2[79]|6\\d|8[2578])|4(?:0[0124-9]|[1-357]\\d|4[24-7]|6[02-9]|8[0-79]|9[1236-8])|5(?:[138]\\d|2[1245]|4[1-9]|6[2-4]|7[1-6])|6[24]\\d|7(?:[069]\\d|1[1568]|2[013-9]|3[145]|4[0-35-9]|5[14-8]|7[2-57]|8[0-24-9])|8(?:[01578]\\d|2[15-7]|3[0-24-9]|4[13-6]|6[1-357-9]|9[124]))|670\\d)\\d{6}", null, null, null, "1123456789", null, null, [10], [6, 7, 8]], [null, null, "675\\d{7}|9(?:11[2-9]\\d{7}|(?:2(?:2[013]|3[067]|49|6[01346]|80|9[147-9])|3(?:36|4[1-358]|5[138]|6[24]|7[069]|8[013578]))[2-9]\\d{6}|(?:2(?:2(?:02|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8])|47[3-578]|6(?:2[24-6]|4[6-8]|5[15-8])|9(?:0[1-3]|2\\d|3[1-6]|4[02568]|5[2-4]|6[2-46]|72|8[23]))|3(?:3(?:2[79]|8[2578])|4(?:0[0-24-9]|4[24-7]|6[02-9]|7[126]|9[1-36-8])|5(?:2[1245]|3[237]|4[1-46-9]|6[2-4]|7[1-6]|8[2-5])|7(?:1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:2[15-7]|3[2578]|4[13-6]|5[4-8]|6[1-357-9]|9[124])))[2-9]\\d{5})", null, null, null, "91123456789", null, null, null, [6, 7, 8]], [null, null, "800\\d{7}", null, null, null, "8001234567", null, null, [10]], [null, null, "60[04579]\\d{7}", null, null, null, "6001234567", null, null, [10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "AR", 54, "00", "0", null, null, "0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))?15)?", "9$1", null, null, [[null, "(\\d{3})(\\d{3})(\\d{4})", "$1-$2-$3", ["[68]"], "0$1"], [null, "(\\d{2})(\\d{4})", "$1-$2", ["[2-9]"], "$1"], [null, "(\\d{3})(\\d{4})", "$1-$2", ["[2-9]"], "$1"], [null, "(\\d{4})(\\d{4})", "$1-$2", ["[2-9]"], "$1"], [null, "(\\d)(\\d{2})(\\d{4})(\\d{4})", "$2 15-$3-$4", ["911"], "0$1"], [null, "(\\d)(\\d{3})(\\d{3})(\\d{4})", "$2 15-$3-$4", ["9(?:2[2-4689]|3[3-8])", "9(?:2(?:2[013]|3[067]|49|6[01346]|8|9[147-9])|3(?:36|4[1-358]|5[138]|6|7[069]|8[013578]))", "9(?:2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3[4-6]|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45])))", "9(?:2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3(?:4|5[014]|6[1-39])|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45])))"], "0$1"], [null, "(\\d)(\\d{4})(\\d{2})(\\d{4})", "$2 15-$3-$4", ["9[23]"], "0$1"], [null, "(\\d{2})(\\d{4})(\\d{4})", "$1 $2-$3", ["11"], "0$1", null, 1], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2-$3", ["2(?:2[013]|3[067]|49|6[01346]|8|9[147-9])|3(?:36|4[1-358]|5[138]|6|7[069]|8[013578])", "2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3[4-6]|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45]))", "2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3(?:4|5[014]|6[1-39])|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45]))"], "0$1", null, 1], [null, "(\\d{4})(\\d{2})(\\d{4})", "$1 $2-$3", ["[23]"], "0$1", null, 1], [null, "(\\d{3})", "$1", ["1[0-2]|911"], "$1"]], [[null, "(\\d{3})(\\d{3})(\\d{4})", "$1-$2-$3", ["[68]"], "0$1"], [null, "(\\d)(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3-$4", ["911"]], [null, "(\\d)(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3-$4", ["9(?:2[2-4689]|3[3-8])", "9(?:2(?:2[013]|3[067]|49|6[01346]|8|9[147-9])|3(?:36|4[1-358]|5[138]|6|7[069]|8[013578]))", "9(?:2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3[4-6]|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45])))", "9(?:2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3(?:4|5[014]|6[1-39])|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45])))"]], [null, "(\\d)(\\d{4})(\\d{2})(\\d{4})", "$1 $2 $3-$4", ["9[23]"]], [null, "(\\d{2})(\\d{4})(\\d{4})", "$1 $2-$3", ["11"], "0$1", null, 1], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2-$3", ["2(?:2[013]|3[067]|49|6[01346]|8|9[147-9])|3(?:36|4[1-358]|5[138]|6|7[069]|8[013578])", "2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3[4-6]|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45]))", "2(?:2(?:0[013-9]|[13])|3(?:0[013-9]|[67])|49|6(?:[0136]|4[0-59])|8|9(?:[19]|44|7[013-9]|8[14]))|3(?:36|4(?:[12]|3(?:4|5[014]|6[1-39])|[58]4)|5(?:1|3[0-24-689]|8[46])|6|7[069]|8(?:[01]|34|[578][45]))"], "0$1", null, 1], [null, "(\\d{4})(\\d{2})(\\d{4})", "$1 $2-$3", ["[23]"], "0$1", null, 1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "810\\d{7}", null, null, null, null, null, null, [10]], [null, null, "810\\d{7}", null, null, null, "8101234567", null, null, [10]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22646 AS: [null, [null, null, "(?:[58]\\d\\d|684|900)\\d{7}", null, null, null, null, null, null, [10], [7]], [null, null, "6846(?:22|33|44|55|77|88|9[19])\\d{4}", null, null, null, "6846221234", null, null, null, [7]], [null, null, "684(?:2(?:5[2468]|72)|7(?:3[13]|70))\\d{4}", null, null, null, "6847331234", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002123456"], [null, null, "900[2-9]\\d{6}", null, null, null, "9002123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, null, null, null, null, null, null, null, [-1]], "AS", 1, "011", "1", null, null, "1", null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "684", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22647 AT: [null, [null, null, "[1-35-9]\\d{8,12}|4(?:[0-24-9]\\d{4,11}|3(?:(?:0\\d|5[02-9])\\d{3,9}|2\\d{4,5}|[3467]\\d{4}|8\\d{4,6}|9\\d{4,7}))|[1-35-8]\\d{7}|[1-35-7]\\d{6}|[135-7]\\d{5}|[15]\\d{4}|1\\d{3}", null, null, null, null, null, null, [4, 5, 6, 7, 8, 9, 10, 11, 12, 13], [3]], [null, null, "(?:1(?:11|[2-9]\\d{2,10})|(?:2(?:1[467]|2[13-8]|5[2357]|6[1-46-8]|7[1-8]|8[124-7]|9[1458])|3(?:1[1-8]|3[23568]|4[5-7]|5[1378]|6[1-38]|8[3-68])|7(?:2[1-8]|3[25]|4[13478]|5[68]|6[16-8]|7[1-6]|9[45]))\\d{3,9}|4(?:(?:2[1-8]|35|7[1368]|8[2457])\\d{3,9}|63\\d{2,9})|5(?:12\\d{2,9}|(?:2[1-8]|3[357]|4[147]|5[12578]|6[37])\\d{3,9})|6(?:(?:13|2[1-47]|4[135-8]|5[468])\\d{3,9}|62\\d{2,9}))\\d|(?:316|732)\\d{3}", null, null, null, "1234567890", null, null, null, [3]], [null, null, "6(?:5[0-3579]|6[013-9]|[7-9]\\d)\\d{4,10}", null, null, null, "664123456", null, null, [7, 8, 9, 10, 11, 12, 13]], [null, null, "800\\d{6,10}", null, null, null, "800123456", null, null, [9, 10, 11, 12, 13]], [null, null, "9(?:0[01]|3[019])\\d{6,10}", null, null, null, "900123456", null, null, [9, 10, 11, 12, 13]], [null, null, "8(?:10|2[018])\\d{6,10}|828\\d{5}", null, null, null, "810123456", null, null, [8, 9, 10, 11, 12, 13]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:0[1-9]|17|[79]\\d)\\d{2,10}|7[28]0\\d{6,10}", null, null, null, "780123456", null, null, [5, 6, 7, 8, 9, 10, 11, 12, 13]], "AT", 43, "00", "0", null, null, "0", null, null, null, [[null, "(\\d)(\\d{3,12})", "$1 $2", ["1(?:11|[2-9])"], "0$1"], [null, "(\\d{3})(\\d{2})", "$1 $2", ["517"], "0$1"], [null, "(\\d{2})(\\d{3,5})", "$1 $2", ["5[079]"], "0$1"], [null, "(\\d{3})(\\d{3,10})", "$1 $2", ["(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]"], "0$1"], [null, "(\\d{4})(\\d{3,9})", "$1 $2", ["[2-467]|5[2-6]"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["5"], "0$1"], [null, "(\\d{2})(\\d{4})(\\d{4,7})", "$1 $2 $3", ["5"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22648 AU: [null, [null, null, "1\\d{4,9}|(?:[2-478]\\d\\d|550)\\d{6}", null, null, null, null, null, null, [5, 6, 7, 8, 9, 10]], [null, null, "(?:[237]\\d{5}|8(?:51(?:0(?:0[03-9]|[1247]\\d|3[2-9]|5[0-8]|6[1-9]|8[0-6])|1(?:1[69]|[23]\\d|4[0-4]))|(?:[6-8]\\d{3}|9(?:[02-9]\\d\\d|1(?:[0-57-9]\\d|6[0135-9])))\\d))\\d{3}", null, null, null, "212345678", null, null, [9], [8]], [null, null, "4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[6-9]|7[02-9]|8[0-2457-9]|9[017-9])\\d{6}", null, null, null, "412345678", null, null, [9]], [null, null, "180(?:0\\d{3}|2)\\d{3}", null, null, null, "1800123456", null, null, [7, 10]], [null, null, "190[0-26]\\d{6}", null, null, null, "1900123456", null, null, [10]], [null, null, "13(?:00\\d{3}|45[0-4])\\d{3}|13\\d{4}", null, null, null, "1300123456", null, null, [6, 8, 10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:14(?:5\\d|71)|550\\d)\\d{5}", null, null, null, "550123456", null, null, [9]], "AU", 61, "001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011", "0", null, null, "0", null, "0011", null, [[null, "(\\d{3})(\\d{3})", "$1 $2", ["19"]], [null, "(\\d{4})(\\d{3,4})", "$1 $2", ["19"]], [null, "(\\d{2})(\\d{3,4})", "$1 $2", ["16"], "0$1"], [null, "(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3", ["13"]], [null, "(\\d{3})(\\d{4})", "$1 $2", ["180", "1802"]], [null, "(\\d{2})(\\d{3})(\\d{2,4})", "$1 $2 $3", ["16"], "0$1"], [null, "(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["[2378]"], "(0$1)"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["14|[45]"], "0$1"], [null, "(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["1(?:30|[89])"]]], [[null, "(\\d{2})(\\d{3,4})", "$1 $2", ["16"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{2,4})", "$1 $2 $3", ["16"], "0$1"], [null, "(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["[2378]"], "(0$1)"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["14|[45]"], "0$1"], [null, "(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["1(?:30|[89])"]]], [null, null, "16\\d{3,7}", null, null, null, "1612345", null, null, [5, 6, 7, 8, 9]], 1, null, [null, null, "1[38]00\\d{6}|1(?:345[0-4]|802)\\d{3}|13\\d{4}", null, null, null, null, null, null, [6, 7, 8, 10]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22649 AW: [null, [null, null, "(?:[25-79]\\d\\d|800)\\d{4}", null, null, null, null, null, null, [7]], [null, null, "5(?:2\\d|8[1-9])\\d{4}", null, null, null, "5212345"], [null, null, "(?:290|5[69]\\d|6(?:[03]0|22|4[0-2]|[69]\\d)|7(?:[34]\\d|7[07])|9(?:6[45]|9[4-8]))\\d{4}", null, null, null, "5601234"], [null, null, "800\\d{4}", null, null, null, "8001234"], [null, null, "900\\d{4}", null, null, null, "9001234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:28\\d|501)\\d{4}", null, null, null, "5011234"], "AW", 297, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["[25-9]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22650 AX: [null, [null, null, "(?:(?:[1247]\\d|3[0-46-9]|[56]0)\\d\\d|800)\\d{4,6}|(?:[1-47]\\d|50)\\d{4,5}|2\\d{4}", null, null, null, null, null, null, [5, 6, 7, 8, 9, 10]], [null, null, "18[1-8]\\d{3,6}", null, null, null, "181234567", null, null, [6, 7, 8, 9]], [null, null, "(?:4[0-8]|50)\\d{4,8}", null, null, null, "412345678", null, null, [6, 7, 8, 9, 10]], [null, null, "800\\d{4,6}", null, null, null, "800123456", null, null, [7, 8, 9]], [null, null, "[67]00\\d{5,6}", null, null, null, "600123456", null, null, [8, 9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "AX", 358, "00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))", "0", null, null, "0", null, "00", null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "18", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:10|[23][09])\\d{4,8}|60(?:[12]\\d{5,6}|6\\d{7})|7(?:(?:1|3\\d)\\d{7}|5[03-9]\\d{3,7})|20[2-59]\\d\\d", null, null, null, "10112345"], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22651 AZ: [null, [null, null, "(?:(?:(?:[12457]\\d|60|88)\\d|365)\\d{3}|900200)\\d{3}", null, null, null, null, null, null, [9], [7]], [null, null, "(?:(?:1[28]\\d|2(?:[045]2|1[24]|2[2-4]|33|6[23]))\\d\\d|365(?:[0-46-9]\\d|5[0-35-9]))\\d{4}", null, null, null, "123123456", null, null, null, [7]], [null, null, "(?:36554|(?:4[04]|5[015]|60|7[07])\\d{3})\\d{4}", null, null, null, "401234567"], [null, null, "88\\d{7}", null, null, null, "881234567"], [null, null, "900200\\d{3}", null, null, null, "900200123"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "AZ", 994, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3"], [null, "(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[12]|365", "[12]|365", "[12]|365(?:[0-46-9]|5[0-35-9])"], "(0$1)"], [null, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["9"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[3-8]"], "0$1"]], [[null, "(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[12]|365", "[12]|365", "[12]|365(?:[0-46-9]|5[0-35-9])"], "(0$1)"], [null, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["9"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[3-8]"], "0$1"]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22652 BA: [null, [null, null, "(?:[3589]\\d|49|6\\d\\d?|70)\\d{6}", null, null, null, null, null, null, [8, 9], [6]], [null, null, "(?:3(?:[05-79][2-9]|1[4579]|[23][24-9]|4[2-4689]|8[2457-9])|49[2-579]|5(?:0[2-49]|[13][2-9]|[268][2-4679]|4[4689]|5[2-79]|7[2-69]|9[2-4689]))\\d{5}", null, null, null, "30212345", null, null, [8], [6]], [null, null, "6(?:0(?:3\\d|40)|[1-356]\\d|44[0-6]|71[137])\\d{5}", null, null, null, "61123456"], [null, null, "8[08]\\d{6}", null, null, null, "80123456", null, null, [8]], [null, null, "9[0246]\\d{6}", null, null, null, "90123456", null, null, [8]], [null, null, "8[12]\\d{6}", null, null, null, "82123456", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "BA", 387, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d{3})", "$1-$2", ["[2-9]"]], [null, "(\\d{2})(\\d{3})(\\d{3})", "$1 $2-$3", ["[3-5]"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["6[1-356]|[7-9]"], "0$1"], [null, "(\\d{2})(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3 $4", ["6"], "0$1"]], [[null, "(\\d{2})(\\d{3})(\\d{3})", "$1 $2-$3", ["[3-5]"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["6[1-356]|[7-9]"], "0$1"], [null, "(\\d{2})(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3 $4", ["6"], "0$1"]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "70(?:3[0146]|[56]0)\\d{4}", null, null, null, "70341234", null, null, [8]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22653 BB: [null, [null, null, "(?:246|[58]\\d\\d|900)\\d{7}", null, null, null, null, null, null, [10], [7]], [null, null, "246(?:2(?:2[78]|7[0-4])|4(?:1[024-6]|2\\d|3[2-9])|5(?:20|[34]\\d|54|7[1-3])|6(?:2\\d|38)|7[35]7|9(?:1[89]|63))\\d{4}", null, null, null, "2464123456", null, null, null, [7]], [null, null, "246(?:2(?:[356]\\d|4[0-57-9]|8[0-79])|45\\d|69[5-7]|8(?:[2-5]\\d|83))\\d{4}", null, null, null, "2462501234", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002123456"], [null, null, "(?:246976|900[2-9]\\d\\d)\\d{4}", null, null, null, "9002123456", null, null, null, [7]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, "24631\\d{5}", null, null, null, "2463101234", null, null, null, [7]], "BB", 1, "011", "1", null, null, "1", null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "246", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "246(?:292|367|4(?:1[7-9]|3[01]|44|67)|7(?:36|53))\\d{4}", null, null, null, "2464301234", null, null, null, [7]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22654 BD: [null, [null, null, "[13469]\\d{9}|8[0-79]\\d{7,8}|[2-7]\\d{8}|[2-9]\\d{7}|[3-689]\\d{6}|[57-9]\\d{5}", null, null, null, null, null, null, [6, 7, 8, 9, 10]], [null, null, "(?:(?:2(?:[45]\\d{3}|7(?:1[0-267]|2[0-289]|3[0-29]|4[01]|5[1-3]|6[013]|7[0178]|91)|8(?:0[125]|[13][1-6]|2[0157-9]|41|6[1-35]|7[1-5]|8[1-8]|9[0-6])|9(?:0[0-2]|1[0-4]|2[568]|3[3-6]|5[5-7]|6[01367]|7[15]|8[0146-9]))|7(?:02|21\\d|[3-589]1|6[12]|72[24])\\d|8(?:(?:[01]|217|3[12])\\d|4[12]|[5-7](?:1\\d|2)))\\d|3(?:(?:0(?:2[348]\\d|3[2-6])|(?:1(?:2[5-7]|[5-7])|3(?:1|24)|[5-7]1)\\d)\\d|2(?:1\\d\\d|2(?:[35]\\d\\d|4))|4(?:1\\d\\d|2(?:[25]\\d\\d|[47]))|8(?:1\\d\\d|2(?:(?:2\\d|4)\\d|3)))|4(?:0(?:2(?:[09]\\d|7)|33\\d\\d)|(?:1\\d|4(?:2[2-46]|5[25])|8(?:23|54))\\d\\d|2(?:1\\d\\d|2(?:[25]|[67]\\d\\d))|3(?:1\\d\\d(?:\\d{2})?|(?:2[236-9]|32)\\d\\d)|525|6(?:(?:[18]|2[3-6]|62)\\d\\d|5(?:[38]|[5-7]\\d\\d))|9(?:(?:[18]|2[2-5])\\d\\d|53\\d\\d?))|5(?:(?:02[03489]|1|22[2457]|32[35-79]|42[46]|[58]26|724)\\d\\d|6(?:(?:[18]|53)\\d\\d|2))|6(?:(?:(?:[04]2[34]|32[3478]|52[47]|[78]2[2-5]|92[2-6])\\d|6(?:[18]\\d|6(?:2(?:2|[34]\\d)|5[245]\\d)))\\d|2(?:(?:2[2-5]|8)\\d\\d|5(?:[3-5]\\d\\d|7)))|9(?:[24]1\\d\\d|[35]1))\\d{3}|(?:3(?:0(?:2[02-9]\\d|3[56])|(?:22[1-5]|32[2-6]|422)\\d|529)|(?:4(?:22[2-8]|32[02-9]|(?:[48][18]|71)\\d|5(?:1\\d|23)|6(?:2[467]|5[3-57]))|5(?:[2-47-9]1\\d|5(?:1\\d|26))|6(?:0(?:1\\d|24)|[3-589]1\\d|665[35])|81|9(?:[024]2|1\\d|81))\\d|732)\\d{3}|(?:4[46]23|5(?:222|32[37]))\\d{3}", null, null, null, "27111234"], [null, null, "(?:1[13-9]\\d|(?:3[78]|44)[02-9]|6(?:44|6[02-9]))\\d{7}", null, null, null, "1812345678", null, null, [10]], [null, null, "80[03]\\d{7}", null, null, null, "8001234567", null, null, [10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "96(?:0[469]|1[0-47]|3[389]|6[69]|7[78])\\d{6}", null, null, null, "9604123456", null, null, [10]], "BD", 880, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{4,6})", "$1-$2", ["31[5-7]|[459]1"], "0$1"], [null, "(\\d{3})(\\d{3,7})", "$1-$2", ["3(?:[2-5]1|[67]|8[013-9])|4(?:[235]1|4[01346-9]|6[168]|7|[89][18])|5(?:[2-578]1|6[128]|9)|6(?:[0389]1|28|4[14]|5|6[01346-9])|7(?:[2-589]|61)|8(?:0[014-9]|[12]|[3-7]1)|9(?:[24]1|[358])"], "0$1"], [null, "(\\d{4})(\\d{3,6})", "$1-$2", ["[13-9]"], "0$1"], [null, "(\\d)(\\d{7,8})", "$1-$2", ["2"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22655 BE: [null, [null, null, "4\\d{8}|[1-9]\\d{7}", null, null, null, null, null, null, [8, 9]], [null, null, "(?:(?:1[0-69]|[23][2-8]|4[23]|5\\d|6[013-57-9]|71|9[2-4])\\d|8(?:0[2-8]|[1-79]\\d))\\d{5}", null, null, null, "12345678", null, null, [8]], [null, null, "4(?:5[56]|6[0135-8]|[79]\\d|8[3-9])\\d{6}", null, null, null, "470123456", null, null, [9]], [null, null, "800[1-9]\\d{4}", null, null, null, "80012345", null, null, [8]], [null, null, "(?:70(?:2[0-57]|3[0457]|44|69|7[0579])|90(?:0[0-35-8]|1[36]|2[0-3568]|3[0135689]|4[2-68]|5[1-68]|6[0-378]|7[23568]|9[34679]))\\d{4}", null, null, null, "90012345", null, null, [8]], [null, null, "7879\\d{4}", null, null, null, "78791234", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "BE", 32, "00", "0", null, null, "0", null, null, null, [[null, "(\\d)(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[23]|4[23]|9[2-4]"], "0$1"], [null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[15-7]|8(?:0[2-8]|[1-79])"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["[89]"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["4"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "78(?:0[57]|1[0458]|2[25]|3[5-8]|48|[56]0|7[078])\\d{4}", null, null, null, "78102345", null, null, [8]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22656 BF: [null, [null, null, "[25-7]\\d{7}", null, null, null, null, null, null, [8]], [null, null, "2(?:0(?:49|5[23]|6[56]|9[016-9])|4(?:4[569]|5[4-6]|6[56]|7[0179])|5(?:[34]\\d|50|6[5-7]))\\d{4}", null, null, null, "20491234"], [null, null, "(?:5[124-8]|[67]\\d)\\d{6}", null, null, null, "70123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "BF", 226, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[25-7]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22657 BG: [null, [null, null, "[2-7]\\d{6,7}|[89]\\d{6,8}|2\\d{5}", null, null, null, null, null, null, [6, 7, 8, 9], [4, 5]], [null, null, "(?:(?:[236]\\d|5[1-9]|8[1-6]|9[1-7])\\d|4(?:[124-7]\\d|3[1-6])|7(?:0[1-9]|[1-9]\\d))\\d{4,5}|2\\d{5}", null, null, null, "2123456", null, null, [6, 7, 8], [4, 5]], [null, null, "(?:4(?:3[07-9]|8\\d)|(?:8[7-9]\\d|9(?:8\\d|9[69]))\\d)\\d{5}", null, null, null, "48123456", null, null, [8, 9]], [null, null, "800\\d{5}", null, null, null, "80012345", null, null, [8]], [null, null, "90\\d{6}", null, null, null, "90123456", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "700\\d{5}", null, null, null, "70012345", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], "BG", 359, "00", "0", null, null, "0", null, null, null, [[null, "(\\d)(\\d)(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["2"], "0$1"], [null, "(\\d{3})(\\d{4})", "$1 $2", ["43[1-6]|70[1-9]"], "0$1"], [null, "(\\d)(\\d{3})(\\d{3,4})", "$1 $2 $3", ["2"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{2,3})", "$1 $2 $3", ["[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{2})", "$1 $2 $3", ["43[1-7]|70[1-9]"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["7|80"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[48]|9[08]"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["9"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22658 BH: [null, [null, null, "[136-9]\\d{7}", null, null, null, null, null, null, [8]], [null, null, "(?:1(?:3[1356]|6[0156]|7\\d)\\d|6(?:1[16]\\d|500|6(?:0\\d|3[12]|44|7[7-9])|9[69][69])|7(?:1(?:11|78)|7\\d\\d))\\d{4}", null, null, null, "17001234"], [null, null, "(?:3(?:[1-4679]\\d|5[013-69]|8[0-47-9])\\d|6(?:3(?:00|33|6[16])|6(?:3[03-9]|[69]\\d|7[0-6])))\\d{4}", null, null, null, "36001234"], [null, null, "80\\d{6}", null, null, null, "80123456"], [null, null, "(?:87|9[014578])\\d{6}", null, null, null, "90123456"], [null, null, "84\\d{6}", null, null, null, "84123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "BH", 973, "00", null, null, null, null, null, null, null, [[null, "(\\d{4})(\\d{4})", "$1 $2", ["[1367]|8[047]|9[014578]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22659 BI: [null, [null, null, "(?:[267]\\d|31)\\d{6}", null, null, null, null, null, null, [8]], [null, null, "22\\d{6}", null, null, null, "22201234"], [null, null, "(?:29|31|6[189]|7[125-9])\\d{6}", null, null, null, "79561234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "BI", 257, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[23]|6[189]|7[125-9]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22660 BJ: [null, [null, null, "[2689]\\d{7}", null, null, null, null, null, null, [8]], [null, null, "2(?:02|1[037]|2[45]|3[68])\\d{5}", null, null, null, "20211234"], [null, null, "(?:6\\d|9[03-9])\\d{6}", null, null, null, "90011234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "857[58]\\d{4}", null, null, null, "85751234"], "BJ", 229, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2689]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "81\\d{6}", null, null, null, "81123456"], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22661 BL: [null, [null, null, "(?:590|69\\d)\\d{6}", null, null, null, null, null, null, [9]], [null, null, "590(?:2[7-9]|5[12]|87)\\d{4}", null, null, null, "590271234"], [null, null, "69(?:0\\d\\d|1(?:2[29]|3[0-5]))\\d{4}", null, null, null, "690001234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "BL", 590, "00", "0", null, null, "0", null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22662 BM: [null, [null, null, "(?:441|[58]\\d\\d|900)\\d{7}", null, null, null, null, null, null, [10], [7]], [null, null, "441(?:2(?:02|23|[3479]\\d|61)|[46]\\d\\d|5(?:4\\d|60|89)|824)\\d{4}", null, null, null, "4412345678", null, null, null, [7]], [null, null, "441(?:[37]\\d|5[0-39])\\d{5}", null, null, null, "4413701234", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002123456"], [null, null, "900[2-9]\\d{6}", null, null, null, "9002123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, null, null, null, null, null, null, null, [-1]], "BM", 1, "011", "1", null, null, "1", null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "441", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22663 BN: [null, [null, null, "[2-578]\\d{6}", null, null, null, null, null, null, [7]], [null, null, "(?:2(?:[013-9]\\d|2[0-7])|[3-5]\\d\\d)\\d{4}", null, null, null, "2345678"], [null, null, "(?:22[89]|[78]\\d\\d)\\d{4}", null, null, null, "7123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "BN", 673, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["[2-578]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22664 BO: [null, [null, null, "(?:[2-467]\\d{3}|80017)\\d{4}", null, null, null, null, null, null, [8, 9], [7]], [null, null, "(?:2(?:2\\d\\d|5(?:11|[258]\\d|9[67])|6(?:12|2\\d|9[34])|8(?:2[34]|39|62))|3(?:3\\d\\d|4(?:6\\d|8[24])|8(?:25|42|5[257]|86|9[25])|9(?:[27]\\d|3[2-4]|4[248]|5[24]|6[2-6]))|4(?:4\\d\\d|6(?:11|[24689]\\d|72)))\\d{4}", null, null, null, "22123456", null, null, [8], [7]], [null, null, "[67]\\d{7}", null, null, null, "71234567", null, null, [8]], [null, null, "80017\\d{4}", null, null, null, "800171234", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "BO", 591, "00(?:1\\d)?", "0", null, null, "0(1\\d)?", null, null, null, [[null, "(\\d)(\\d{7})", "$1 $2", ["[2-4]"], null, "0$CC $1"], [null, "(\\d{8})", "$1", ["[67]"], null, "0$CC $1"], [null, "(\\d{3})(\\d{2})(\\d{4})", "$1 $2 $3", ["8"], null, "0$CC $1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22665 BQ: [null, [null, null, "(?:[34]1|7\\d)\\d{5}", null, null, null, null, null, null, [7]], [null, null, "(?:318[023]|41(?:6[023]|70)|7(?:1[578]|50)\\d)\\d{3}", null, null, null, "7151234"], [null, null, "(?:31(?:8[14-8]|9[14578])|416[14-9]|7(?:0[01]|7[07]|8\\d|9[056])\\d)\\d{3}", null, null, null, "3181234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "BQ", 599, "00", null, null, null, null, null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "[347]", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22666 BR: [null, [null, null, "(?:[1-46-9]\\d\\d|5(?:[0-46-9]\\d|5[0-24679]))\\d{8}|[1-9]\\d{9}|[3589]\\d{8}|[34]\\d{7}", null, null, null, null, null, null, [8, 9, 10, 11]], [null, null, "(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-5]\\d{7}", null, null, null, "1123456789", null, null, [10], [8]], [null, null, "(?:[189][1-9]|2[12478])(?:7|9\\d)\\d{7}|(?:3[1-578]|[46][1-9]|5[13-5]|7[13-579])(?:[6-9]|9\\d)\\d{7}", null, null, null, "11961234567", null, null, [10, 11], [8]], [null, null, "800\\d{6,7}", null, null, null, "800123456", null, null, [9, 10]], [null, null, "(?:300|[59]00\\d?)\\d{6}", null, null, null, "300123456", null, null, [9, 10]], [null, null, "(?:300\\d(?:\\d{2})?|4(?:0(?:0\\d|20)|370))\\d{4}", null, null, null, "40041234", null, null, [8, 10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "BR", 55, "00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)", "0", null, null, "0(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\d{10,11}))?", "$2", null, null, [[null, "(\\d{4})(\\d{4})", "$1-$2", ["300|4(?:0[02]|37)", "300|4(?:0(?:0|20)|370)"]], [null, "(\\d{3})(\\d{2,3})(\\d{4})", "$1 $2 $3", ["[3589]00"], "0$1"], [null, "(\\d{3,5})", "$1", ["1[125689]"]], [null, "(\\d{4})(\\d{4})", "$1-$2", ["[2-9](?:0[1-9]|[1-9])"]], [null, "(\\d{5})(\\d{4})", "$1-$2", ["9(?:0[1-9]|[1-9])"]], [null, "(\\d{2})(\\d{4})(\\d{4})", "$1 $2-$3", ["[1-9][1-9]"], "($1)", "0 $CC ($1)"], [null, "(\\d{2})(\\d{5})(\\d{4})", "$1 $2-$3", ["[1-9][1-9]9"], "($1)", "0 $CC ($1)"]], [[null, "(\\d{4})(\\d{4})", "$1-$2", ["300|4(?:0[02]|37)", "300|4(?:0(?:0|20)|370)"]], [null, "(\\d{3})(\\d{2,3})(\\d{4})", "$1 $2 $3", ["[3589]00"], "0$1"], [null, "(\\d{2})(\\d{4})(\\d{4})", "$1 $2-$3", ["[1-9][1-9]"], "($1)", "0 $CC ($1)"], [null, "(\\d{2})(\\d{5})(\\d{4})", "$1 $2-$3", ["[1-9][1-9]9"], "($1)", "0 $CC ($1)"]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "(?:300\\d|40(?:0\\d|20))\\d{4}", null, null, null, null, null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22667 BS: [null, [null, null, "(?:242|[58]\\d\\d|900)\\d{7}", null, null, null, null, null, null, [10], [7]], [null, null, "242(?:3(?:02|[236][1-9]|4[0-24-9]|5[0-68]|7[347]|8[0-4]|9[2-467])|461|502|6(?:0[1-4]|12|2[013]|[45]0|7[67]|8[78]|9[89])|7(?:02|88))\\d{4}", null, null, null, "2423456789", null, null, null, [7]], [null, null, "242(?:3(?:5[79]|7[56]|95)|4(?:[23][1-9]|4[1-35-9]|5[1-8]|6[2-8]|7\\d|81)|5(?:2[45]|3[35]|44|5[1-46-9]|65|77)|6[34]6|7(?:27|38)|8(?:0[1-9]|1[02-9]|2\\d|[89]9))\\d{4}", null, null, null, "2423591234", null, null, null, [7]], [null, null, "(?:242300|8(?:00|33|44|55|66|77|88)[2-9]\\d\\d)\\d{4}", null, null, null, "8002123456", null, null, null, [7]], [null, null, "900[2-9]\\d{6}", null, null, null, "9002123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, null, null, null, null, null, null, null, [-1]], "BS", 1, "011", "1", null, null, "1", null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "242", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "242225[0-46-9]\\d{3}", null, null, null, "2422250123"], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22668 BT: [null, [null, null, "[17]\\d{7}|[2-8]\\d{6}", null, null, null, null, null, null, [7, 8], [6]], [null, null, "(?:2[3-6]|[34][5-7]|5[236]|6[2-46]|7[246]|8[2-4])\\d{5}", null, null, null, "2345678", null, null, [7], [6]], [null, null, "(?:1[67]|77)\\d{6}", null, null, null, "17123456", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "BT", 975, "00", null, null, null, null, null, null, null, [[null, "(\\d)(\\d{3})(\\d{3})", "$1 $2 $3", ["[23568]|4[5-7]|7[246]"]], [null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["1[67]|7"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22669 BW: [null, [null, null, "(?:(?:[2-6]|7\\d)\\d|90)\\d{5}", null, null, null, null, null, null, [7, 8]], [null, null, "(?:2(?:4[0-48]|6[0-24]|9[0578])|3(?:1[0-35-9]|55|[69]\\d|7[01])|4(?:6[03]|7[1267]|9[0-5])|5(?:3[0389]|4[0489]|7[1-47]|88|9[0-49])|6(?:2[1-35]|5[149]|8[067]))\\d{4}", null, null, null, "2401234", null, null, [7]], [null, null, "7(?:[1-6]\\d{3}|7(?:[014-8]\\d\\d|200))\\d{3}", null, null, null, "71123456", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "90\\d{5}", null, null, null, "9012345", null, null, [7]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "79(?:1(?:[01]\\d|20)|2[0-2]\\d)\\d{3}", null, null, null, "79101234", null, null, [8]], "BW", 267, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["[2-6]"]], [null, "(\\d{2})(\\d{5})", "$1 $2", ["90"]], [null, "(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["7"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22670 BY: [null, [null, null, "(?:(?:[12]|8[0-7]\\d)\\d|33|44|902)\\d{7}|8(?:[05-79]\\d|1[0-489])\\d{7}|8[0-79]\\d{5,7}|8\\d{5}", null, null, null, null, null, null, [6, 7, 8, 9, 10, 11], [5]], [null, null, "(?:1(?:5(?:1[1-5]|[24]\\d|6[2-4]|9[1-7])|6(?:[235]\\d|4[1-7])|7\\d\\d)|2(?:1(?:[246]\\d|3[0-35-9]|5[1-9])|2(?:[235]\\d|4[0-8])|3(?:[26]\\d|3[02-79]|4[024-7]|5[03-7])))\\d{5}", null, null, null, "152450911", null, null, [9], [5, 6, 7]], [null, null, "(?:2(?:5[5-79]|9[1-9])|(?:33|44)\\d)\\d{6}", null, null, null, "294911911", null, null, [9]], [null, null, "8(?:0[013]|20\\d)\\d{7}|800\\d{3,6}", null, null, null, "8011234567"], [null, null, "(?:810|902)\\d{7}", null, null, null, "9021234567", null, null, [10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "249\\d{6}", null, null, null, "249123456", null, null, [9]], "BY", 375, "810", "8", null, null, "0|80?", null, "8~10", null, [[null, "(\\d{3})(\\d{3})", "$1 $2", ["800"], "8 $1"], [null, "(\\d{3})(\\d{2})(\\d{2,4})", "$1 $2 $3", ["800"], "8 $1"], [null, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2-$3-$4", ["1(?:5[24]|6[235]|7[467])|2(?:1[246]|2[25]|3[26])", "1(?:5[24]|6(?:2|3[04-9]|5[0346-9])|7(?:[46]|7[37-9]))|2(?:1[246]|2[25]|3[26])"], "8 0$1"], [null, "(\\d{4})(\\d{2})(\\d{3})", "$1 $2-$3", ["1(?:[56]|7[179])|2[1-3]", "1(?:[56]|7(?:1[3-9]|7|9[2-7]))|2[1-3]"], "8 0$1"], [null, "(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2-$3-$4", ["[1-4]"], "8 0$1"], [null, "(\\d{3})(\\d{3,4})(\\d{4})", "$1 $2 $3", ["[89]"], "8 $1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "(?:8(?:0[013]|10|20\\d)|902)\\d{7}|800\\d{3,6}"], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22671 BZ: [null, [null, null, "(?:0800\\d|[2-8])\\d{6}", null, null, null, null, null, null, [7, 11]], [null, null, "(?:2(?:[02]\\d|36)|[3-58][02]\\d|7(?:[02]\\d|32))\\d{4}", null, null, null, "2221234", null, null, [7]], [null, null, "6[0-35-7]\\d{5}", null, null, null, "6221234", null, null, [7]], [null, null, "0800\\d{7}", null, null, null, "08001234123", null, null, [11]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "BZ", 501, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{4})", "$1-$2", ["[2-8]"]], [null, "(\\d)(\\d{3})(\\d{4})(\\d{3})", "$1-$2-$3-$4", ["0"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22672 CA: [null, [null, null, "(?:[2-8]\\d|90)\\d{8}", null, null, null, null, null, null, [10], [7]], [null, null, "(?:2(?:04|[23]6|[48]9|50)|3(?:06|43|65)|4(?:03|1[68]|3[178]|50)|5(?:06|1[49]|48|79|8[17])|6(?:04|13|39|47)|7(?:0[59]|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\d{6}", null, null, null, "5062345678", null, null, null, [7]], [null, null, "(?:2(?:04|[23]6|[48]9|50)|3(?:06|43|65)|4(?:03|1[68]|3[178]|50)|5(?:06|1[49]|48|79|8[17])|6(?:04|13|39|47)|7(?:0[59]|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\d{6}", null, null, null, "5062345678", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002123456"], [null, null, "900[2-9]\\d{6}", null, null, null, "9002123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:5(?:00|2[12]|33|44|66|77|88)|622)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, "600[2-9]\\d{6}", null, null, null, "6002012345"], "CA", 1, "011", "1", null, null, "1", null, null, 1, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22673 CC: [null, [null, null, "1\\d{5,9}|(?:[48]\\d\\d|550)\\d{6}", null, null, null, null, null, null, [6, 7, 8, 9, 10]], [null, null, "8(?:51(?:0(?:02|31|60)|118)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\d|70[23]|959))\\d{3}", null, null, null, "891621234", null, null, [9], [8]], [null, null, "4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[6-9]|7[02-9]|8[0-2457-9]|9[017-9])\\d{6}", null, null, null, "412345678", null, null, [9]], [null, null, "180(?:0\\d{3}|2)\\d{3}", null, null, null, "1800123456", null, null, [7, 10]], [null, null, "190[0-26]\\d{6}", null, null, null, "1900123456", null, null, [10]], [null, null, "13(?:00\\d{3}|45[0-4])\\d{3}|13\\d{4}", null, null, null, "1300123456", null, null, [6, 8, 10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:14(?:5\\d|71)|550\\d)\\d{5}", null, null, null, "550123456", null, null, [9]], "CC", 61, "001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011", "0", null, null, "0|([59]\\d{7})$", "8$1", "0011", null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22674 CD: [null, [null, null, "[189]\\d{8}|[1-68]\\d{6}", null, null, null, null, null, null, [7, 9]], [null, null, "12\\d{7}|[1-6]\\d{6}", null, null, null, "1234567"], [null, null, "(?:8(?:[0-2459]\\d\\d|8)|9[017-9]\\d\\d)\\d{5}", null, null, null, "991234567"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "CD", 243, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3", ["88"], "0$1"], [null, "(\\d{2})(\\d{5})", "$1 $2", ["[1-6]"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["1"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[89]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22675 CF: [null, [null, null, "(?:[27]\\d{3}|8776)\\d{4}", null, null, null, null, null, null, [8]], [null, null, "2[12]\\d{6}", null, null, null, "21612345"], [null, null, "7[0257]\\d{6}", null, null, null, "70012345"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "8776\\d{4}", null, null, null, "87761234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "CF", 236, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[278]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22676 CG: [null, [null, null, "(?:(?:0\\d|80)\\d|222)\\d{6}", null, null, null, null, null, null, [9]], [null, null, "222[1-589]\\d{5}", null, null, null, "222123456"], [null, null, "0[14-6]\\d{7}", null, null, null, "061234567"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "80(?:0\\d\\d|11[0-4])\\d{4}", null, null, null, "800123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "CG", 242, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["801"]], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[02]"]], [null, "(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["8"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22677 CH: [null, [null, null, "8\\d{11}|[2-9]\\d{8}", null, null, null, null, null, null, [9, 12]], [null, null, "(?:2[12467]|3[1-4]|4[134]|5[256]|6[12]|[7-9]1)\\d{7}", null, null, null, "212345678", null, null, [9]], [null, null, "7[35-9]\\d{7}", null, null, null, "781234567", null, null, [9]], [null, null, "800\\d{6}", null, null, null, "800123456", null, null, [9]], [null, null, "90[016]\\d{6}", null, null, null, "900123456", null, null, [9]], [null, null, "84[0248]\\d{6}", null, null, null, "840123456", null, null, [9]], [null, null, "878\\d{6}", null, null, null, "878123456", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], "CH", 41, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2-7]|[89]1"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["8[047]|9"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4 $5", ["8"], "0$1"]], null, [null, null, "74[0248]\\d{6}", null, null, null, "740123456", null, null, [9]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5[18]\\d{7}", null, null, null, "581234567", null, null, [9]], null, null, [null, null, "860\\d{9}", null, null, null, "860123456789", null, null, [12]]], 22678 CI: [null, [null, null, "[02-8]\\d{7}", null, null, null, null, null, null, [8]], [null, null, "(?:2(?:0[023]|1[02357]|[23][045]|4[03-5])|3(?:0[06]|1[069]|[2-4][07]|5[09]|6[08]))\\d{5}", null, null, null, "21234567"], [null, null, "(?:[07][1-9]|[45]\\d|6[014-9]|8[4-9])\\d{6}", null, null, null, "01234567"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "CI", 225, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[02-8]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22679 CK: [null, [null, null, "[2-8]\\d{4}", null, null, null, null, null, null, [5]], [null, null, "(?:2\\d|3[13-7]|4[1-5])\\d{3}", null, null, null, "21234"], [null, null, "[5-8]\\d{4}", null, null, null, "71234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "CK", 682, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{3})", "$1 $2", ["[2-8]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22680 CL: [null, [null, null, "(?:1230|[2-57-9]\\d|6\\d{1,3})\\d{7}", null, null, null, null, null, null, [9, 10, 11]], [null, null, "(?:2(?:1962|(?:2\\d\\d|32[0-46-8])\\d)|(?:(?:3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|9[2-9])\\d|8(?:0[1-9]|[1-9]\\d))\\d\\d)\\d{4}", null, null, null, "221234567", null, null, [9]], [null, null, "(?:2(?:1962|(?:2\\d\\d|32[0-46-8])\\d)|(?:(?:3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|9[2-9])\\d|8(?:0[1-9]|[1-9]\\d))\\d\\d)\\d{4}", null, null, null, "221234567", null, null, [9]], [null, null, "(?:1230\\d|800)\\d{6}", null, null, null, "800123456", null, null, [9, 11]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "600\\d{7,8}", null, null, null, "6001234567", null, null, [10, 11]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "44\\d{7}", null, null, null, "441234567", null, null, [9]], "CL", 56, "(?:0|1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))0", null, null, null, null, null, null, 1, [[null, "(\\d{4})", "$1", ["1(?:[03-58]|[29]1)"]], [null, "(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["2(?:2|32)", "2(?:2|32[0-46-8])"], "($1)"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])"], "($1)"], [null, "(\\d{5})(\\d{4})", "$1 $2", ["2"], "($1)"], [null, "(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["9[2-9]"]], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["44"]], [null, "(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[68]00"]], [null, "(\\d{3})(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3 $4", ["600"]], [null, "(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["1"]]], [[null, "(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["2(?:2|32)", "2(?:2|32[0-46-8])"], "($1)"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])"], "($1)"], [null, "(\\d{5})(\\d{4})", "$1 $2", ["2"], "($1)"], [null, "(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["9[2-9]"]], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["44"]], [null, "(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[68]00"]], [null, "(\\d{3})(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3 $4", ["600"]], [null, "(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["1"]]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "600\\d{7,8}", null, null, null, null, null, null, [10, 11]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22681 CM: [null, [null, null, "(?:[26]\\d\\d|88)\\d{6}", null, null, null, null, null, null, [8, 9]], [null, null, "2(?:22|33|4[23])\\d{6}", null, null, null, "222123456", null, null, [9]], [null, null, "6[5-9]\\d{7}", null, null, null, "671234567", null, null, [9]], [null, null, "88\\d{6}", null, null, null, "88012345", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "CM", 237, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["88"]], [null, "(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4 $5", ["[26]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22682 CN: [null, [null, null, "(?:(?:(?:1[03-68]|2\\d)\\d\\d|[3-79])\\d|8[0-57-9])\\d{7}|[1-579]\\d{10}|8[0-57-9]\\d{8,9}|[1-79]\\d{9}|[1-9]\\d{7}|[12]\\d{6}", null, null, null, null, null, null, [7, 8, 9, 10, 11, 12], [5, 6]], [null, null, "21(?:100\\d{2}|95\\d{3,4}|\\d{8,10})|(?:10|2[02-57-9]|3(?:11|7[179])|4(?:[15]1|3[1-35])|5(?:1\\d|2[37]|3[12]|51|7[13-79]|9[15])|7(?:31|5[457]|6[09]|91)|8(?:[57]1|98))(?:100\\d{2}|95\\d{3,4}|\\d{8})|(?:3(?:1[02-9]|35|49|5\\d|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|3[3-9]|5[2-9]|6[4789]|7\\d|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[17]\\d|2[248]|3[04-9]|4[3-6]|5[0-4689]|6[2368]|9[02-9])|8(?:078|1[236-8]|2[5-7]|3\\d|5[1-9]|7[02-9]|8[3678]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:100\\d{2}|95\\d{3,4}|\\d{7})", null, null, null, "1012345678", null, null, null, [5, 6]], [null, null, "1(?:[38]\\d{3}|4[57]\\d{2}|5[0-35-9]\\d{2}|6[267]\\d{2}|7(?:[0-35-8]\\d{2}|40[0-5])|9[189]\\d{2})\\d{6}", null, null, null, "13123456789", null, null, [11]], [null, null, "(?:10)?800\\d{7}", null, null, null, "8001234567", null, null, [10, 12]], [null, null, "16[08]\\d{5}", null, null, null, "16812345", null, null, [8]], [null, null, "400\\d{7}|950\\d{7,8}|(?:10|2[0-57-9]|3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[4789]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[3678]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))96\\d{3,4}", null, null, null, "4001234567", null, null, [7, 8, 9, 10, 11], [5, 6]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "CN", 86, "(?:1(?:[12]\\d{3}|79\\d{2}|9[0-7]\\d{2}))?00", "0", null, null, "0|(1(?:[12]\\d{3}|79\\d{2}|9[0-7]\\d{2}))", null, "00", null, [[null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["[48]00"]], [null, "(\\d{5,6})", "$1", ["100|95"]], [null, "(\\d{2})(\\d{5,6})", "$1 $2", ["(?:10|2\\d)[19]", "(?:10|2\\d)(?:10|9[56])", "(?:10|2\\d)(?:100|9[56])"], "0$1", "$CC $1"], [null, "(\\d{3})(\\d{5,6})", "$1 $2", ["[3-9]", "[3-9]\\d\\d[19]", "[3-9]\\d\\d(?:10|9[56])"], "0$1", "$CC $1"], [null, "(\\d{3,4})(\\d{4})", "$1 $2", ["[2-9]"]], [null, "(\\d{2})(\\d{4})(\\d{4,6})", "$1 $2 $3", ["21"], "0$1", "$CC $1", 1], [null, "(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["10[1-9]|2[02-9]", "10[1-9]|2[02-9]", "10(?:[1-79]|8(?:0[1-9]|[1-9]))|2[02-9]"], "0$1", "$CC $1", 1], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["3(?:1[02-9]|35|49|5|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|[35][2-9]|6[47-9]|7|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[04-9]|4[3-6]|6[2368])|8(?:1[236-8]|2[5-7]|3|5[1-9]|7[02-9]|8[36-8]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])"], "0$1", "$CC $1", 1], [null, "(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["3(?:11|7[179])|4(?:[15]1|3[1-35])|5(?:1|2[37]|3[12]|51|7[13-79]|9[15])|7(?:[39]1|5[457]|6[09])|8(?:[57]1|98)"], "0$1", "$CC $1", 1], [null, "(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["807", "8078"], "0$1", "$CC $1", 1], [null, "(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["1(?:[3-57-9]|6[267])"], null, "$CC $1"], [null, "(\\d{5})(\\d{3})(\\d{4})", "$1 $2 $3", ["108", "1080", "10800"]], [null, "(\\d{3})(\\d{7,8})", "$1 $2", ["950"]]], [[null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["[48]00"]], [null, "(\\d{2})(\\d{5,6})", "$1 $2", ["(?:10|2\\d)[19]", "(?:10|2\\d)(?:10|9[56])", "(?:10|2\\d)(?:100|9[56])"], "0$1", "$CC $1"], [null, "(\\d{3})(\\d{5,6})", "$1 $2", ["[3-9]", "[3-9]\\d\\d[19]", "[3-9]\\d\\d(?:10|9[56])"], "0$1", "$CC $1"], [null, "(\\d{2})(\\d{4})(\\d{4,6})", "$1 $2 $3", ["21"], "0$1", "$CC $1", 1], [null, "(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["10[1-9]|2[02-9]", "10[1-9]|2[02-9]", "10(?:[1-79]|8(?:0[1-9]|[1-9]))|2[02-9]"], "0$1", "$CC $1", 1], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["3(?:1[02-9]|35|49|5|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|[35][2-9]|6[47-9]|7|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[04-9]|4[3-6]|6[2368])|8(?:1[236-8]|2[5-7]|3|5[1-9]|7[02-9]|8[36-8]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])"], "0$1", "$CC $1", 1], [null, "(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["3(?:11|7[179])|4(?:[15]1|3[1-35])|5(?:1|2[37]|3[12]|51|7[13-79]|9[15])|7(?:[39]1|5[457]|6[09])|8(?:[57]1|98)"], "0$1", "$CC $1", 1], [null, "(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["807", "8078"], "0$1", "$CC $1", 1], [null, "(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["1(?:[3-57-9]|6[267])"], null, "$CC $1"], [null, "(\\d{5})(\\d{3})(\\d{4})", "$1 $2 $3", ["108", "1080", "10800"]], [null, "(\\d{3})(\\d{7,8})", "$1 $2", ["950"]]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "(?:4|(?:10)?8)00\\d{7}|950\\d{7,8}", null, null, null, null, null, null, [10, 11, 12]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22683 CO: [null, [null, null, "(?:1\\d|3)\\d{9}|[124-8]\\d{7}", null, null, null, null, null, null, [8, 10, 11], [7]], [null, null, "[124-8][2-9]\\d{6}", null, null, null, "12345678", null, null, [8], [7]], [null, null, "3(?:0[0-5]|1\\d|2[0-3]|5[01])\\d{7}", null, null, null, "3211234567", null, null, [10]], [null, null, "1800\\d{7}", null, null, null, "18001234567", null, null, [11]], [null, null, "19(?:0[01]|4[78])\\d{7}", null, null, null, "19001234567", null, null, [11]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "CO", 57, "00(?:4(?:[14]4|56)|[579])", "0", null, null, "0([3579]|4(?:[14]4|56))?", null, null, null, [[null, "(\\d)(\\d{7})", "$1 $2", ["1(?:[2-79]|8[2-9])|[24-8]"], "($1)", "0$CC $1"], [null, "(\\d{3})(\\d{7})", "$1 $2", ["3"], null, "0$CC $1"], [null, "(\\d)(\\d{3})(\\d{7})", "$1-$2-$3", ["1(?:80|9)", "1(?:800|9)"], "0$1"]], [[null, "(\\d)(\\d{7})", "$1 $2", ["1(?:[2-79]|8[2-9])|[24-8]"], "($1)", "0$CC $1"], [null, "(\\d{3})(\\d{7})", "$1 $2", ["3"], null, "0$CC $1"], [null, "(\\d)(\\d{3})(\\d{7})", "$1 $2 $3", ["1(?:80|9)", "1(?:800|9)"]]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22684 CR: [null, [null, null, "(?:8\\d|90)\\d{8}|[24-8]\\d{7}", null, null, null, null, null, null, [8, 10]], [null, null, "2(?:[024-7]\\d\\d|1(?:0[7-9]|[1-9]\\d))\\d{4}", null, null, null, "22123456", null, null, [8]], [null, null, "(?:(?:5(?:0[01]|7[0-3])|(?:7[0-3]|8[3-9])\\d)\\d\\d|6(?:[0-4]\\d{3}|500[01]))\\d{3}", null, null, null, "83123456", null, null, [8]], [null, null, "800\\d{7}", null, null, null, "8001234567", null, null, [10]], [null, null, "90[059]\\d{7}", null, null, null, "9001234567", null, null, [10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:210[0-6]|4\\d{3}|5100)\\d{4}", null, null, null, "40001234", null, null, [8]], "CR", 506, "00", null, null, null, "(19(?:0[0-2468]|1[09]|20|66|77|99))", null, null, null, [[null, "(\\d{4})(\\d{4})", "$1 $2", ["[24-7]|8[3-9]"], null, "$CC $1"], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1-$2-$3", ["[89]"], null, "$CC $1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22685 CU: [null, [null, null, "[2-57]\\d{7}|[2-47]\\d{6}|[34]\\d{5}", null, null, null, null, null, null, [6, 7, 8], [4, 5]], [null, null, "(?:2[1-4]|7\\d)\\d{5,6}|(?:3[1-3]|4[1-35-8])\\d{6}|3[23]\\d{4,5}|4[12578]\\d{5}|4[78]\\d{4}", null, null, null, "71234567", null, null, null, [4, 5]], [null, null, "5\\d{7}", null, null, null, "51234567", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "CU", 53, "119", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{4,6})", "$1 $2", ["[2-4]"], "(0$1)"], [null, "(\\d)(\\d{6,7})", "$1 $2", ["7"], "(0$1)"], [null, "(\\d)(\\d{7})", "$1 $2", ["5"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22686 CV: [null, [null, null, "[2-59]\\d{6}", null, null, null, null, null, null, [7]], [null, null, "2(?:2[1-7]|3[0-8]|4[12]|5[1256]|6\\d|7[1-3]|8[1-5])\\d{4}", null, null, null, "2211234"], [null, null, "(?:[34][36]|5[1-389]|9\\d)\\d{5}", null, null, null, "9911234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "CV", 238, "0", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3", ["[2-59]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22687 CW: [null, [null, null, "(?:[34]1|60|(?:7|9\\d)\\d)\\d{5}", null, null, null, null, null, null, [7, 8]], [null, null, "9(?:(?:[48]\\d|50)\\d|7(?:2[0-24]|[34]\\d|6[35-7]|77|8[7-9]))\\d{4}", null, null, null, "94151234"], [null, null, "9(?:5(?:[12467]\\d|3[01])|6(?:[15-9]\\d|3[01]))\\d{4}", null, null, null, "95181234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "60[0-2]\\d{4}", null, null, null, "6001234", null, null, [7]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "CW", 599, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["[3467]"]], [null, "(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["9[4-8]"]]], null, [null, null, "955\\d{5}", null, null, null, "95581234", null, null, [8]], 1, "[69]", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22688 CX: [null, [null, null, "1\\d{5,9}|(?:[48]\\d\\d|550)\\d{6}", null, null, null, null, null, null, [6, 7, 8, 9, 10]], [null, null, "8(?:51(?:0(?:01|30|59)|117)|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\d|7(?:0[01]|1[0-2])|958))\\d{3}", null, null, null, "891641234", null, null, [9], [8]], [null, null, "4(?:[0-3]\\d|4[047-9]|5[0-25-9]|6[6-9]|7[02-9]|8[0-2457-9]|9[017-9])\\d{6}", null, null, null, "412345678", null, null, [9]], [null, null, "180(?:0\\d{3}|2)\\d{3}", null, null, null, "1800123456", null, null, [7, 10]], [null, null, "190[0-26]\\d{6}", null, null, null, "1900123456", null, null, [10]], [null, null, "13(?:00\\d{3}|45[0-4])\\d{3}|13\\d{4}", null, null, null, "1300123456", null, null, [6, 8, 10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:14(?:5\\d|71)|550\\d)\\d{5}", null, null, null, "550123456", null, null, [9]], "CX", 61, "001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011", "0", null, null, "0|([59]\\d{7})$", "8$1", "0011", null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22689 CY: [null, [null, null, "(?:[279]\\d|[58]0)\\d{6}", null, null, null, null, null, null, [8]], [null, null, "2[2-6]\\d{6}", null, null, null, "22345678"], [null, null, "9[4-79]\\d{6}", null, null, null, "96123456"], [null, null, "800\\d{5}", null, null, null, "80001234"], [null, null, "90[09]\\d{5}", null, null, null, "90012345"], [null, null, "80[1-9]\\d{5}", null, null, null, "80112345"], [null, null, "700\\d{5}", null, null, null, "70012345"], [null, null, null, null, null, null, null, null, null, [-1]], "CY", 357, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{6})", "$1 $2", ["[257-9]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:50|77)\\d{6}", null, null, null, "77123456"], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22690 CZ: [null, [null, null, "(?:[2-578]\\d|60|9\\d{1,4})\\d{7}", null, null, null, null, null, null, [9, 10, 11, 12]], [null, null, "(?:2\\d|3[1257-9]|4[16-9]|5[13-9])\\d{7}", null, null, null, "212345678", null, null, [9]], [null, null, "(?:60[1-8]|7(?:0[2-5]|[2379]\\d))\\d{6}", null, null, null, "601123456", null, null, [9]], [null, null, "800\\d{6}", null, null, null, "800123456", null, null, [9]], [null, null, "9(?:0[05689]|76)\\d{6}", null, null, null, "900123456", null, null, [9]], [null, null, "8[134]\\d{7}", null, null, null, "811234567", null, null, [9]], [null, null, "70[01]\\d{6}", null, null, null, "700123456", null, null, [9]], [null, null, "9[17]0\\d{6}", null, null, null, "910123456", null, null, [9]], "CZ", 420, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[2-8]|9[015-7]"]], [null, "(\\d{2})(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["9[36]"]], [null, "(\\d{3})(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["96"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "9(?:5\\d|7[2-4])\\d{6}", null, null, null, "972123456", null, null, [9]], null, null, [null, null, "9(?:3\\d{9}|6\\d{7,10})", null, null, null, "93123456789"]], 22691 DE: [null, [null, null, "(?:1|[235-9]\\d{11}|4(?:[0-8]\\d{2,10}|9(?:[05]\\d{7}|[46][1-8]\\d{2,6})))\\d{3}|[1-35-9]\\d{6,13}|49(?:(?:[0-25]\\d|3[1-689])\\d{4,8}|4[1-8]\\d{4}|6[0-8]\\d{3,4}|7[1-7]\\d{5,8})|497[0-7]\\d{4}|49(?:[0-2579]\\d|[34][1-9])\\d{3}|[1-9]\\d{5}|[13468]\\d{4}", null, null, null, null, null, null, [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [3]], [null, null, "(?:2(?:0[1-689]|[1-3569]\\d|4[0-8]|7[1-7]|8[0-7])|5(?:0[2-8]|[124-6]\\d|[38][0-8]|[79][0-7])|6(?:0[02-9]|[1-3589]\\d|[47][0-8]|6[1-9])|7(?:0[2-8]|1[1-9]|[27][0-7]|3\\d|[4-6][0-8]|8[0-5]|9[013-7])|8(?:0[2-9]|1[0-79]|[29]\\d|3[0-46-9]|4[0-6]|5[013-9]|6[1-8]|7[0-8]|8[0-24-6])|9(?:0[6-9]|[1-4]\\d|[589][0-7]|6[0-8]|7[0-467]))\\d{4,12}|3(?:(?:[03569]\\d|4[0-79]|7[1-7]|8[1-8])\\d{4,12}|2\\d{9})|4(?:(?:[02-48]\\d|1[02-9]|5[0-6]|6[0-8]|7[0-79])\\d{4,12}|9(?:[0-37]\\d{4,9}|[4-6]\\d{4,10}))|(?:2(?:0[1-389]|1[124]|2[18]|3[14]|[4-9]1)|3(?:0\\d?|[35-9][15]|4[015])|4(?:0\\d?|[2-9]1)|[57][1-9]1|[68](?:[1-8]1|9\\d?)|9(?:06|[1-9]1))\\d{3}", null, null, null, "30123456", null, null, [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [3, 4]], [null, null, "1(?:5[0-25-9]\\d{8}|(?:6[023]|7\\d)\\d{7,8})", null, null, null, "15123456789", null, null, [10, 11]], [null, null, "800\\d{7,12}", null, null, null, "8001234567890", null, null, [10, 11, 12, 13, 14, 15]], [null, null, "(?:137[7-9]|900(?:[135]|9\\d))\\d{6}", null, null, null, "9001234567", null, null, [10, 11]], [null, null, "1(?:3(?:7[1-6]\\d\\d|8)|80\\d{1,7})\\d{4}", null, null, null, "18012345", null, null, [7, 8, 9, 10, 11, 12, 13, 14]], [null, null, "700\\d{8}", null, null, null, "70012345678", null, null, [11]], [null, null, null, null, null, null, null, null, null, [-1]], "DE", 49, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{3,13})", "$1 $2", ["3[02]|40|[68]9"], "0$1"], [null, "(\\d{3})(\\d{3,12})", "$1 $2", ["2(?:0[1-389]|1[124]|2[18]|3[14]|[4-9]1)|3(?:[35-9][15]|4[015])|(?:4[2-9]|[57][1-9]|[68][1-8])1|9(?:06|[1-9]1)", "2(?:0[1-389]|1(?:[14]|2[0-8])|2[18]|3[14]|[4-9]1)|3(?:[35-9][15]|4[015])|(?:4[2-9]|[57][1-9]|[68][1-8])1|9(?:06|[1-9]1)"], "0$1"], [null, "(\\d{3})(\\d{4})", "$1 $2", ["138"], "0$1"], [null, "(\\d{4})(\\d{3,11})", "$1 $2", ["[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|7(?:0[2-8]|[1-9])|8(?:0[2-9]|[1-8])|9(?:0[7-9]|[1-9])", "[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|[46][1246]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|3[1357]|4[13578]|6[1246]|7[1356]|9[1346])|5(?:0[14]|2[1-3589]|3[1357]|[49][1246]|6[1-4]|7[13468]|8[13568])|6(?:0[1356]|2[1-489]|3[124-6]|4[1347]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|3[1357]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|4[1347]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|3[1357]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|7(?:0[2-8]|[1-9])|8(?:0[2-9]|[1-8])|9(?:0[7-9]|[1-9])"], "0$1"], [null, "(\\d{3})(\\d{5,11})", "$1 $2", ["181"], "0$1"], [null, "(\\d{3})(\\d)(\\d{4,10})", "$1 $2 $3", ["1(?:3|80)|9"], "0$1"], [null, "(\\d{5})(\\d{3,10})", "$1 $2", ["3"], "0$1"], [null, "(\\d{3})(\\d{7,8})", "$1 $2", ["1(?:6[02-489]|7)"], "0$1"], [null, "(\\d{3})(\\d{7,12})", "$1 $2", ["8"], "0$1"], [null, "(\\d{4})(\\d{7})", "$1 $2", ["15[1279]"], "0$1"], [null, "(\\d{5})(\\d{6})", "$1 $2", ["15[0568]"], "0$1"], [null, "(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["7"], "0$1"], [null, "(\\d{3})(\\d{8})", "$1 $2", ["18[2-579]", "18[2-579]", "18(?:[2-479]|5(?:0[1-9]|[1-9]))"], "0$1"], [null, "(\\d{4})(\\d{7})", "$1 $2", ["18[68]"], "0$1"], [null, "(\\d{5})(\\d{6})", "$1 $2", ["18"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{7,8})", "$1 $2 $3", ["1(?:6[023]|7)"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{8})", "$1 $2 $3", ["15[013-68]"], "0$1"], [null, "(\\d{4})(\\d{2})(\\d{7})", "$1 $2 $3", ["15"], "0$1"]], null, [null, null, "16(?:4\\d{1,10}|[89]\\d{1,11})", null, null, null, "16412345", null, null, [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "18(?:1\\d{5,11}|[2-9]\\d{8})", null, null, null, "18500123456", null, null, [8, 9, 10, 11, 12, 13, 14]], null, null, [null, null, "1(?:5(?:(?:[03-68]00|113)\\d|2\\d55|7\\d99|9\\d33)|(?:6(?:013|255|399)|7(?:(?:[015]1|[69]3)3|[2-4]55|[78]99))\\d?)\\d{7}", null, null, null, "177991234567", null, null, [12, 13]]], 22692 DJ: [null, [null, null, "(?:2\\d|77)\\d{6}", null, null, null, null, null, null, [8]], [null, null, "2(?:1[2-5]|7[45])\\d{5}", null, null, null, "21360003"], [null, null, "77\\d{6}", null, null, null, "77831001"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "DJ", 253, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[27]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22693 DK: [null, [null, null, "[2-9]\\d{7}", null, null, null, null, null, null, [8]], [null, null, "(?:[2-7]\\d|8[126-9]|9[1-36-9])\\d{6}", null, null, null, "32123456"], [null, null, "(?:[2-7]\\d|8[126-9]|9[1-36-9])\\d{6}", null, null, null, "32123456"], [null, null, "80\\d{6}", null, null, null, "80123456"], [null, null, "90\\d{6}", null, null, null, "90123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "DK", 45, "00", null, null, null, null, null, null, 1, [[null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2-9]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22694 DM: [null, [null, null, "(?:[58]\\d\\d|767|900)\\d{7}", null, null, null, null, null, null, [10], [7]], [null, null, "767(?:2(?:55|66)|4(?:2[01]|4[0-25-9])|50[0-4]|70[1-3])\\d{4}", null, null, null, "7674201234", null, null, null, [7]], [null, null, "767(?:2(?:[2-4689]5|7[5-7])|31[5-7]|61[1-7])\\d{4}", null, null, null, "7672251234", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002123456"], [null, null, "900[2-9]\\d{6}", null, null, null, "9002123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, null, null, null, null, null, null, null, [-1]], "DM", 1, "011", "1", null, null, "1", null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "767", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22695 DO: [null, [null, null, "(?:[58]\\d\\d|900)\\d{7}", null, null, null, null, null, null, [10], [7]], [null, null, "8(?:[04]9[2-9]\\d\\d|29(?:2(?:[0-59]\\d|6[04-9]|7[0-27]|8[0237-9])|3(?:[0-35-9]\\d|4[7-9])|[45]\\d\\d|6(?:[0-27-9]\\d|[3-5][1-9]|6[0135-8])|7(?:0[013-9]|[1-37]\\d|4[1-35689]|5[1-4689]|6[1-57-9]|8[1-79]|9[1-8])|8(?:0[146-9]|1[0-48]|[248]\\d|3[1-79]|5[01589]|6[013-68]|7[124-8]|9[0-8])|9(?:[0-24]\\d|3[02-46-9]|5[0-79]|60|7[0169]|8[57-9]|9[02-9])))\\d{4}", null, null, null, "8092345678", null, null, null, [7]], [null, null, "8[024]9[2-9]\\d{6}", null, null, null, "8092345678", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002123456"], [null, null, "900[2-9]\\d{6}", null, null, null, "9002123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, null, null, null, null, null, null, null, [-1]], "DO", 1, "011", "1", null, null, "1", null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "8[024]9", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22696 DZ: [null, [null, null, "(?:[1-4]|[5-79]\\d|80)\\d{7}", null, null, null, null, null, null, [8, 9]], [null, null, "(?:(?:1\\d|2[013-79]|3[0-8]|4[0135689])\\d|9619)\\d{5}", null, null, null, "12345678"], [null, null, "(?:(?:5[4-6]|7[7-9])\\d|6(?:[569]\\d|7[0-6]))\\d{6}", null, null, null, "551234567", null, null, [9]], [null, null, "800\\d{6}", null, null, null, "800123456", null, null, [9]], [null, null, "80[3-689]1\\d{5}", null, null, null, "808123456", null, null, [9]], [null, null, "80[12]1\\d{5}", null, null, null, "801123456", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "98[23]\\d{6}", null, null, null, "983123456", null, null, [9]], "DZ", 213, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[1-4]"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[5-8]"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["9"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22697 EC: [null, [null, null, "1800\\d{6,7}|(?:[2-7]|9\\d)\\d{7}", null, null, null, null, null, null, [8, 9, 10, 11], [7]], [null, null, "[2-7][2-7]\\d{6}", null, null, null, "22123456", null, null, [8], [7]], [null, null, "9(?:(?:39|[57][89]|[89]\\d)\\d|6(?:[0-27-9]\\d|30))\\d{5}", null, null, null, "991234567", null, null, [9]], [null, null, "1800\\d{6,7}", null, null, null, "18001234567", null, null, [10, 11]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "[2-7]890\\d{4}", null, null, null, "28901234", null, null, [8]], "EC", 593, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d{4})", "$1-$2", ["[2-7]"]], [null, "(\\d)(\\d{3})(\\d{4})", "$1 $2-$3", ["[2-7]"], "(0$1)"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["9"], "0$1"], [null, "(\\d{4})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["1"]]], [[null, "(\\d)(\\d{3})(\\d{4})", "$1-$2-$3", ["[2-7]"]], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["9"], "0$1"], [null, "(\\d{4})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["1"]]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22698 EE: [null, [null, null, "8\\d{9}|[4578]\\d{7}|(?:[3-8]\\d\\d|900)\\d{4}", null, null, null, null, null, null, [7, 8, 10]], [null, null, "(?:3[23589]|4[3-8]|6\\d|7[1-9]|88)\\d{5}", null, null, null, "3212345", null, null, [7]], [null, null, "(?:5\\d|8[1-4])\\d{6}|5(?:(?:[02]\\d|5[0-478])\\d|1(?:[0-8]\\d|95)|6(?:4[0-4]|5[1-589]))\\d{3}", null, null, null, "51234567", null, null, [7, 8]], [null, null, "800(?:(?:0\\d\\d|1)\\d|[2-9])\\d{3}", null, null, null, "80012345"], [null, null, "(?:40\\d\\d|900)\\d{4}", null, null, null, "9001234", null, null, [7, 8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "70[0-2]\\d{5}", null, null, null, "70012345", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], "EE", 372, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]", "[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]"]], [null, "(\\d{4})(\\d{3,4})", "$1 $2", ["[45]|8(?:00|[1-4])", "[45]|8(?:00[1-9]|[1-4])"]], [null, "(\\d{2})(\\d{2})(\\d{4})", "$1 $2 $3", ["7"]], [null, "(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["80"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "800[2-9]\\d{3}", null, null, null, null, null, null, [7]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22699 EG: [null, [null, null, "(?:[189]\\d?|[24-6])\\d{8}|[13]\\d{7}", null, null, null, null, null, null, [8, 9, 10], [6, 7]], [null, null, "(?:1(?:3[23]|5\\d?)|(?:2[2-4]|3)\\d|4(?:0[2-5]|[578][23]|64)|5(?:0[2-7]|5\\d|7[23])|6[24-689]3|8(?:2[2-57]|4[26]|6[237]|8[2-4])|9(?:2[27]|3[24]|52|6[2356]|7[2-4]))\\d{6}", null, null, null, "234567890", null, null, [8, 9], [6, 7]], [null, null, "1[0-25]\\d{8}", null, null, null, "1001234567", null, null, [10]], [null, null, "800\\d{7}", null, null, null, "8001234567", null, null, [10]], [null, null, "900\\d{7}", null, null, null, "9001234567", null, null, [10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "EG", 20, "00", "0", null, null, "0", null, null, null, [[null, "(\\d)(\\d{7,8})", "$1 $2", ["[23]"], "0$1"], [null, "(\\d{2})(\\d{6,7})", "$1 $2", ["1[35]|[4-6]|8[2468]|9[235-7]"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["[189]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22700 EH: [null, [null, null, "[5-8]\\d{8}", null, null, null, null, null, null, [9]], [null, null, "528[89]\\d{5}", null, null, null, "528812345"], [null, null, "(?:6(?:[0-79]\\d|8[0-247-9])|7(?:0[067]|6[1267]|7[017]))\\d{6}", null, null, null, "650123456"], [null, null, "80\\d{7}", null, null, null, "801234567"], [null, null, "89\\d{7}", null, null, null, "891234567"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5924[01]\\d{4}", null, null, null, "592401234"], "EH", 212, "00", "0", null, null, "0", null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "528[89]", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22701 ER: [null, [null, null, "[178]\\d{6}", null, null, null, null, null, null, [7], [6]], [null, null, "(?:1(?:1[12568]|[24]0|55|6[146])|8\\d\\d)\\d{4}", null, null, null, "8370362", null, null, null, [6]], [null, null, "(?:17[1-3]|7\\d\\d)\\d{4}", null, null, null, "7123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "ER", 291, "00", "0", null, null, "0", null, null, null, [[null, "(\\d)(\\d{3})(\\d{3})", "$1 $2 $3", ["[178]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22702 ES: [null, [null, null, "(?:51|[6-9]\\d)\\d{7}", null, null, null, null, null, null, [9]], [null, null, "(?:8(?:[1356]\\d|[28][0-8]|[47][1-9])\\d{4}|9(?:(?:(?:[135]\\d|[28][0-8]|4[1-9])\\d\\d|7(?:[124-9]\\d\\d|3(?:[0-8]\\d|9[1-9])))\\d\\d|6(?:[0-8]\\d{4}|9(?:0(?:[0-57-9]\\d\\d|6(?:0[0-8]|1[1-9]|[2-9]\\d))|[1-9]\\d{3}))))\\d\\d", null, null, null, "810123456"], [null, null, "(?:(?:6\\d|7[1-48])\\d{5}|9(?:6906(?:09|10)|7390\\d\\d))\\d\\d", null, null, null, "612345678"], [null, null, "[89]00\\d{6}", null, null, null, "800123456"], [null, null, "80[367]\\d{6}", null, null, null, "803123456"], [null, null, "90[12]\\d{6}", null, null, null, "901123456"], [null, null, "70\\d{7}", null, null, null, "701234567"], [null, null, null, null, null, null, null, null, null, [-1]], "ES", 34, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[89]00"]], [null, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[568]|7[0-48]|9(?:0[12]|[1-8])"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "51\\d{7}", null, null, null, "511234567"], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22703 ET: [null, [null, null, "(?:11|[2-59]\\d)\\d{7}", null, null, null, null, null, null, [9], [7]], [null, null, "(?:11(?:1(?:1[124]|2[2-57]|3[1-5]|5[5-8]|8[6-8])|2(?:13|3[6-8]|5[89]|7[05-9]|8[2-6])|3(?:2[01]|3[0-289]|4[1289]|7[1-4]|87)|4(?:1[69]|3[2-49]|4[0-3]|6[5-8])|5(?:1[578]|44|5[0-4])|6(?:18|2[69]|39|4[5-7]|5[1-5]|6[0-59]|8[015-8]))|2(?:2(?:11[1-9]|22[0-7]|33\\d|44[1467]|66[1-68])|5(?:11[124-6]|33[2-8]|44[1467]|55[14]|66[1-3679]|77[124-79]|880))|3(?:3(?:11[0-46-8]|(?:22|55)[0-6]|33[0134689]|44[04]|66[01467])|4(?:44[0-8]|55[0-69]|66[0-3]|77[1-5]))|4(?:6(?:22[0-24-7]|33[1-5]|44[13-69]|55[14-689]|660|88[1-4])|7(?:(?:11|22)[1-9]|33[13-7]|44[13-6]|55[1-689]))|5(?:7(?:227|55[05]|(?:66|77)[14-8])|8(?:11[149]|22[013-79]|33[0-68]|44[013-8]|550|66[1-5]|77\\d)))\\d{4}", null, null, null, "111112345", null, null, null, [7]], [null, null, "9\\d{8}", null, null, null, "911234567"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "ET", 251, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[1-59]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22704 FI: [null, [null, null, "(?:[124-7]\\d|3[0-46-9])\\d{8}|[1-9]\\d{5,8}|[1-35689]\\d{4}", null, null, null, null, null, null, [5, 6, 7, 8, 9, 10]], [null, null, "(?:1[3-79][1-8]|[235689][1-8]\\d)\\d{2,6}", null, null, null, "131234567", null, null, [5, 6, 7, 8, 9]], [null, null, "(?:4[0-8]|50)\\d{4,8}", null, null, null, "412345678", null, null, [6, 7, 8, 9, 10]], [null, null, "800\\d{4,6}", null, null, null, "800123456", null, null, [7, 8, 9]], [null, null, "[67]00\\d{5,6}", null, null, null, "600123456", null, null, [8, 9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "FI", 358, "00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))", "0", null, null, "0", null, "00", null, [[null, "(\\d{5})", "$1", ["7"], "0$1"], [null, "(\\d)(\\d{4,9})", "$1 $2", ["[2568][1-8]|3(?:0[1-9]|[1-9])|9"], "0$1"], [null, "(\\d{2})(\\d{4,8})", "$1 $2", ["1(?:0[1-9]|[3-79][1-8]|8)|2(?:0[1-9]|9)|[45]|7[135]"], "0$1"], [null, "(\\d{3})(\\d{3,7})", "$1 $2", ["(?:1|20)0|[36-8]"], "0$1"]], [[null, "(\\d)(\\d{4,9})", "$1 $2", ["[2568][1-8]|3(?:0[1-9]|[1-9])|9"], "0$1"], [null, "(\\d{2})(\\d{4,8})", "$1 $2", ["1(?:0[1-9]|[3-79][1-8]|8)|2(?:0[1-9]|9)|[45]|7[135]"], "0$1"], [null, "(\\d{3})(\\d{3,7})", "$1 $2", ["(?:1|20)0|[36-8]"], "0$1"]], [null, null, null, null, null, null, null, null, null, [-1]], 1, "1[03-79]|[2-9]", [null, null, "[13]00\\d{3,7}|20(?:0\\d{3,7}|(?:2[023]|9[89])\\d{1,6})|60(?:[12]\\d{5,6}|6\\d{7})|7(?:(?:1|3\\d)\\d{7}|5[03-9]\\d{3,7})"], [null, null, "(?:10|[23][09])\\d{4,8}|60(?:[12]\\d{5,6}|6\\d{7})|7(?:(?:1|3\\d)\\d{7}|5[03-9]\\d{3,7})|20[2-59]\\d\\d", null, null, null, "10112345"], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22705 FJ: [null, [null, null, "(?:(?:0800\\d|[235-9])\\d|45)\\d{5}", null, null, null, null, null, null, [7, 11]], [null, null, "(?:(?:3[0-5]|8[58])\\d|6(?:03|[25-7]\\d))\\d{4}", null, null, null, "3212345", null, null, [7]], [null, null, "(?:[279]\\d|45|5[01568]|8[034679])\\d{5}", null, null, null, "7012345", null, null, [7]], [null, null, "0800\\d{7}", null, null, null, "08001234567", null, null, [11]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "FJ", 679, "0(?:0|52)", null, null, null, null, null, "00", null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["[235-9]|45"]], [null, "(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["0"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22706 FK: [null, [null, null, "[2-7]\\d{4}", null, null, null, null, null, null, [5]], [null, null, "[2-47]\\d{4}", null, null, null, "31234"], [null, null, "[56]\\d{4}", null, null, null, "51234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "FK", 500, "00", null, null, null, null, null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22707 FM: [null, [null, null, "[39]\\d{6}", null, null, null, null, null, null, [7]], [null, null, "(?:3[2357]0[1-9]|9[2-6]\\d\\d)\\d{3}", null, null, null, "3201234"], [null, null, "(?:3[2357]0[1-9]|9[2-7]\\d\\d)\\d{3}", null, null, null, "3501234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "FM", 691, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["3(?:20|[357])|9", "3(?:20[1-9]|[357])|9"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22708 FO: [null, [null, null, "(?:[2-8]\\d|90)\\d{4}", null, null, null, null, null, null, [6]], [null, null, "(?:20|[34]\\d|8[19])\\d{4}", null, null, null, "201234"], [null, null, "(?:[27][1-9]|5\\d)\\d{4}", null, null, null, "211234"], [null, null, "80[257-9]\\d{3}", null, null, null, "802123"], [null, null, "90(?:[13-5][15-7]|2[125-7]|99)\\d\\d", null, null, null, "901123"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:6[0-36]|88)\\d{4}", null, null, null, "601234"], "FO", 298, "00", null, null, null, "(10(?:01|[12]0|88))", null, null, null, [[null, "(\\d{6})", "$1", ["[2-9]"], null, "$CC $1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22709 FR: [null, [null, null, "[1-9]\\d{8}", null, null, null, null, null, null, [9]], [null, null, "[1-5]\\d{8}", null, null, null, "123456789"], [null, null, "(?:6\\d\\d|7(?:00|[3-9]\\d))\\d{6}", null, null, null, "612345678"], [null, null, "80[0-5]\\d{6}", null, null, null, "801234567"], [null, null, "8[129]\\d{7}", null, null, null, "891123456"], [null, null, "884\\d{6}", null, null, null, "884012345"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "9\\d{8}", null, null, null, "912345678"], "FR", 33, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d{3})", "$1 $2", ["11"]], [null, "(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4 $5", ["[1-79]"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["8"], "0 $1"]], [[null, "(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4 $5", ["[1-79]"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["8"], "0 $1"]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "80[6-9]\\d{6}", null, null, null, "806123456"], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22710 GA: [null, [null, null, "(?:0\\d|[2-7])\\d{6}", null, null, null, null, null, null, [7, 8]], [null, null, "01\\d{6}", null, null, null, "01441234", null, null, [8]], [null, null, "(?:0[2-7]|[2-7])\\d{6}", null, null, null, "06031234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "GA", 241, "00", null, null, null, null, null, null, null, [[null, "(\\d)(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2-7]"], "0$1"], [null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["0"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22711 GB: [null, [null, null, "[1-357-9]\\d{9}|[18]\\d{8}|8\\d{6}", null, null, null, null, null, null, [7, 9, 10], [4, 5, 6, 8]], [null, null, "(?:1(?:1(?:3[0-58]|4[0-5]|5[0-26-9]|6[0-4]|[78][0-49])|2(?:0[024-9]|1[0-7]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\d)|3(?:0\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))|2(?:0[01378]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\d)\\d{6}|1(?:(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\d)|76\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\d|7[4-79])|295[5-7]|35[34]\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|8(?:27[56]\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\d|7(?:(?:26(?:6[13-9]|7[0-7])|442\\d|50(?:2[0-3]|[3-68]2|76))\\d|6888[2-46-8]))\\d\\d", null, null, null, "1212345678", null, null, [9, 10], [4, 5, 6, 7, 8]], [null, null, "7(?:(?:[1-3]\\d\\d|5(?:0[0-8]|[13-9]\\d|2[0-35-9])|8(?:[014-9]\\d|[23][0-8]))\\d|4(?:[0-46-9]\\d\\d|5(?:[0-689]\\d|7[0-57-9]))|7(?:0(?:0[01]|[1-9]\\d)|(?:[1-7]\\d|8[02-9]|9[0-689])\\d)|9(?:(?:[024-9]\\d|3[0-689])\\d|1(?:[02-9]\\d|1[028])))\\d{5}", null, null, null, "7400123456", null, null, [10]], [null, null, "80[08]\\d{7}|800\\d{6}|8001111", null, null, null, "8001234567"], [null, null, "(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[2-49]))\\d{7}|845464\\d", null, null, null, "9012345678", null, null, [7, 10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "70\\d{8}", null, null, null, "7012345678", null, null, [10]], [null, null, "56\\d{8}", null, null, null, "5612345678", null, null, [10]], "GB", 44, "00", "0", " x", null, "0", null, null, null, [[null, "(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3", ["845", "8454", "84546", "845464"], "0$1"], [null, "(\\d{3})(\\d{4})", "$1 $2", ["800", "8001", "80011", "800111", "8001111"], "0$1"], [null, "(\\d{3})(\\d{6})", "$1 $2", ["800"], "0$1"], [null, "(\\d{4})(\\d{5,6})", "$1 $2", ["1(?:[2-79][02-9]|8)", "1(?:[24][02-9]|3(?:[02-79]|8[0-46-9])|5(?:[04-9]|2[024-9]|3[014-689])|6(?:[02-8]|9[0-24578])|7(?:[02-57-9]|6[013-9])|8|9(?:[0235-9]|4[2-9]))", "1(?:[24][02-9]|3(?:[02-79]|8(?:[0-4689]|7[0-24-9]))|5(?:[04-9]|2(?:[025-9]|4[013-9])|3(?:[014-68]|9[0-37-9]))|6(?:[02-8]|9(?:[0-2458]|7[0-25689]))|7(?:[02-57-9]|6(?:[013-79]|8[0-25689]))|8|9(?:[0235-9]|4(?:[2-57-9]|6[0-689])))"], "0$1"], [null, "(\\d{5})(\\d{4,5})", "$1 $2", ["1(?:38|5[23]|69|7|94)"], "0$1"], [null, "(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["[25]|7(?:0|6[024-9])", "[25]|7(?:0|6(?:[04-9]|2[356]))"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["[1389]"], "0$1"], [null, "(\\d{4})(\\d{6})", "$1 $2", ["7"], "0$1"]], null, [null, null, "76(?:0[0-2]|2[356]|4[0134]|5[49]|6[0-369]|77|81|9[39])\\d{6}", null, null, null, "7640123456", null, null, [10]], 1, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:3[0347]|55)\\d{8}", null, null, null, "5512345678", null, null, [10]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22712 GD: [null, [null, null, "(?:473|[58]\\d\\d|900)\\d{7}", null, null, null, null, null, null, [10], [7]], [null, null, "473(?:2(?:3[0-2]|69)|3(?:2[89]|86)|4(?:[06]8|3[5-9]|4[0-49]|5[5-79]|73|90)|63[68]|7(?:58|84)|800|938)\\d{4}", null, null, null, "4732691234", null, null, null, [7]], [null, null, "473(?:4(?:0[2-79]|1[04-9]|2[0-5]|58)|5(?:2[01]|3[3-8])|901)\\d{4}", null, null, null, "4734031234", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002123456"], [null, null, "900[2-9]\\d{6}", null, null, null, "9002123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, null, null, null, null, null, null, null, [-1]], "GD", 1, "011", "1", null, null, "1", null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "473", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22713 GE: [null, [null, null, "(?:[3-57]\\d\\d|800)\\d{6}", null, null, null, null, null, null, [9], [6]], [null, null, "(?:3(?:[256]\\d|4[124-9]|7[0-4])|4(?:1\\d|2[2-7]|3[1-79]|4[2-8]|7[239]|9[1-7]))\\d{6}", null, null, null, "322123456", null, null, null, [6]], [null, null, "(?:5(?:[14]4|5[0157-9]|68|7[0147-9]|9[1-35-9])|790)\\d{6}", null, null, null, "555123456"], [null, null, "800\\d{6}", null, null, null, "800123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "706\\d{6}", null, null, null, "706123456"], "GE", 995, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[348]"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["5|79"]], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["7"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "706\\d{6}"], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22714 GF: [null, [null, null, "[56]94\\d{6}", null, null, null, null, null, null, [9]], [null, null, "594(?:[023]\\d|1[01]|4[03-9]|5[6-9]|6[0-3]|80|9[014])\\d{4}", null, null, null, "594101234"], [null, null, "694(?:[0-249]\\d|3[0-48])\\d{4}", null, null, null, "694201234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "GF", 594, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[56]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22715 GG: [null, [null, null, "(?:1481|[357-9]\\d{3})\\d{6}|8\\d{6}(?:\\d{2})?", null, null, null, null, null, null, [7, 9, 10], [6]], [null, null, "1481[25-9]\\d{5}", null, null, null, "1481256789", null, null, [10], [6]], [null, null, "7(?:(?:781|839)\\d|911[17])\\d{5}", null, null, null, "7781123456", null, null, [10]], [null, null, "80[08]\\d{7}|800\\d{6}|8001111", null, null, null, "8001234567"], [null, null, "(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[0-3]))\\d{7}|845464\\d", null, null, null, "9012345678", null, null, [7, 10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "70\\d{8}", null, null, null, "7012345678", null, null, [10]], [null, null, "56\\d{8}", null, null, null, "5612345678", null, null, [10]], "GG", 44, "00", "0", null, null, "0|([25-9]\\d{5})$", "1481$1", null, null, null, null, [null, null, "76(?:0[0-2]|2[356]|4[0134]|5[49]|6[0-369]|77|81|9[39])\\d{6}", null, null, null, "7640123456", null, null, [10]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:3[0347]|55)\\d{8}", null, null, null, "5512345678", null, null, [10]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22716 GH: [null, [null, null, "(?:[235]\\d{3}|800)\\d{5}", null, null, null, null, null, null, [8, 9], [7]], [null, null, "3(?:0(?:[237]\\d|80)|[167](?:2[0-6]|7\\d|80)|2(?:2[0-5]|7\\d|80)|3(?:2[0-3]|7\\d|80)|4(?:2[013-9]|3[01]|7\\d|80)|5(?:2[0-7]|7\\d|80)|8(?:2[0-2]|7\\d|80)|9(?:[28]0|7\\d))\\d{5}", null, null, null, "302345678", null, null, [9], [7]], [null, null, "(?:2[0346-8]\\d|5(?:[0457]\\d|6[01]))\\d{6}", null, null, null, "231234567", null, null, [9]], [null, null, "800\\d{5}", null, null, null, "80012345", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "GH", 233, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["[237]|80"]], [null, "(\\d{3})(\\d{5})", "$1 $2", ["8"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[235]"], "0$1"]], [[null, "(\\d{3})(\\d{5})", "$1 $2", ["8"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[235]"], "0$1"]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "800\\d{5}", null, null, null, null, null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22717 GI: [null, [null, null, "(?:[25]\\d\\d|629)\\d{5}", null, null, null, null, null, null, [8]], [null, null, "2(?:(?:00\\d|2(?:2[2457]|50))\\d|1(?:6[24-7]\\d|90[0-2]))\\d{3}", null, null, null, "20012345"], [null, null, "(?:5[46-8]\\d|629)\\d{5}", null, null, null, "57123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "GI", 350, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{5})", "$1 $2", ["2"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22718 GL: [null, [null, null, "(?:19|[2-689]\\d)\\d{4}", null, null, null, null, null, null, [6]], [null, null, "(?:19|3[1-7]|6[14689]|8[14-79]|9\\d)\\d{4}", null, null, null, "321000"], [null, null, "(?:[25][1-9]|4[2-9])\\d{4}", null, null, null, "221234"], [null, null, "80\\d{4}", null, null, null, "801234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "3[89]\\d{4}", null, null, null, "381234"], "GL", 299, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3", ["19|[2-689]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22719 GM: [null, [null, null, "[2-9]\\d{6}", null, null, null, null, null, null, [7]], [null, null, "(?:4(?:[23]\\d\\d|4(?:1[024679]|[6-9]\\d))|5(?:54[0-7]|6[67]\\d|7(?:1[04]|2[035]|3[58]|48))|8\\d{3})\\d{3}", null, null, null, "5661234"], [null, null, "[23679]\\d{6}", null, null, null, "3012345"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "GM", 220, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["[2-9]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22720 GN: [null, [null, null, "(?:30|6\\d\\d|722)\\d{6}", null, null, null, null, null, null, [8, 9]], [null, null, "30(?:24|3[12]|4[1-35-7]|5[13]|6[189]|[78]1|9[1478])\\d{4}", null, null, null, "30241234", null, null, [8]], [null, null, "6[02356]\\d{7}", null, null, null, "601123456", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "722\\d{6}", null, null, null, "722123456", null, null, [9]], "GN", 224, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["3"]], [null, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[67]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22721 GP: [null, [null, null, "(?:590|69\\d)\\d{6}", null, null, null, null, null, null, [9]], [null, null, "590(?:0[1-68]|1[0-2]|2[0-68]|3[1289]|4[0-24-9]|5[3-579]|6[0189]|7[08]|8[0-689]|9\\d)\\d{4}", null, null, null, "590201234"], [null, null, "69(?:0\\d\\d|1(?:2[29]|3[0-5]))\\d{4}", null, null, null, "690001234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "GP", 590, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[56]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], 1, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22722 GQ: [null, [null, null, "(?:222|(?:3\\d|55|[89]0)\\d)\\d{6}", null, null, null, null, null, null, [9]], [null, null, "3(?:3(?:[0-24-9]\\d[46]|3\\d[7-9])|5\\d\\d[7-9])\\d{4}", null, null, null, "333091234"], [null, null, "(?:222|55[015])\\d{6}", null, null, null, "222123456"], [null, null, "80\\d[1-9]\\d{5}", null, null, null, "800123456"], [null, null, "90\\d[1-9]\\d{5}", null, null, null, "900123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "GQ", 240, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[235]"]], [null, "(\\d{3})(\\d{6})", "$1 $2", ["[89]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22723 GR: [null, [null, null, "(?:[268]\\d|[79]0)\\d{8}", null, null, null, null, null, null, [10]], [null, null, "2(?:1\\d\\d|2(?:2[1-46-9]|[36][1-8]|4[1-7]|5[1-4]|7[1-5]|[89][1-9])|3(?:1\\d|2[1-57]|[35][1-3]|4[13]|7[1-7]|8[124-6]|9[1-79])|4(?:1\\d|2[1-8]|3[1-4]|4[13-5]|6[1-578]|9[1-5])|5(?:1\\d|[29][1-4]|3[1-5]|4[124]|5[1-6])|6(?:1\\d|[269][1-6]|3[1245]|4[1-7]|5[13-9]|7[14]|8[1-5])|7(?:1\\d|2[1-5]|3[1-6]|4[1-7]|5[1-57]|6[135]|9[125-7])|8(?:1\\d|2[1-5]|[34][1-4]|9[1-57]))\\d{6}", null, null, null, "2123456789"], [null, null, "6(?:8[57-9]|9\\d)\\d{7}", null, null, null, "6912345678"], [null, null, "800\\d{7}", null, null, null, "8001234567"], [null, null, "90[19]\\d{7}", null, null, null, "9091234567"], [null, null, "8(?:0[16]|12|25)\\d{7}", null, null, null, "8011234567"], [null, null, "70\\d{8}", null, null, null, "7012345678"], [null, null, null, null, null, null, null, null, null, [-1]], "GR", 30, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["21|7"]], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["2[3-8]1|[689]"]], [null, "(\\d{4})(\\d{6})", "$1 $2", ["2"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22724 GT: [null, [null, null, "(?:1\\d{3}|[2-7])\\d{7}", null, null, null, null, null, null, [8, 11]], [null, null, "[267][2-9]\\d{6}", null, null, null, "22456789", null, null, [8]], [null, null, "[3-5]\\d{7}", null, null, null, "51234567", null, null, [8]], [null, null, "18[01]\\d{8}", null, null, null, "18001112222", null, null, [11]], [null, null, "19\\d{9}", null, null, null, "19001112222", null, null, [11]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "GT", 502, "00", null, null, null, null, null, null, null, [[null, "(\\d{4})(\\d{4})", "$1 $2", ["[2-7]"]], [null, "(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["1"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22725 GU: [null, [null, null, "(?:[58]\\d\\d|671|900)\\d{7}", null, null, null, null, null, null, [10], [7]], [null, null, "671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[48])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\d{4}", null, null, null, "6713001234", null, null, null, [7]], [null, null, "671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[48])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\d{4}", null, null, null, "6713001234", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002123456"], [null, null, "900[2-9]\\d{6}", null, null, null, "9002123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, null, null, null, null, null, null, null, [-1]], "GU", 1, "011", "1", null, null, "1", null, null, 1, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "671", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22726 GW: [null, [null, null, "[49]\\d{8}|4\\d{6}", null, null, null, null, null, null, [7, 9]], [null, null, "443\\d{6}", null, null, null, "443201234", null, null, [9]], [null, null, "9(?:5\\d|6[569]|77)\\d{6}", null, null, null, "955012345", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "40\\d{5}", null, null, null, "4012345", null, null, [7]], "GW", 245, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["40"]], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[49]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22727 GY: [null, [null, null, "(?:(?:(?:[2-46]\\d|77)\\d|862)\\d|9008)\\d{3}", null, null, null, null, null, null, [7]], [null, null, "(?:2(?:1[6-9]|2[0-35-9]|3[1-4]|5[3-9]|6\\d|7[0-24-79])|3(?:2[25-9]|3\\d)|4(?:4[0-24]|5[56])|77[1-57])\\d{4}", null, null, null, "2201234"], [null, null, "6\\d{6}", null, null, null, "6091234"], [null, null, "(?:289|862)\\d{4}", null, null, null, "2891234"], [null, null, "9008\\d{3}", null, null, null, "9008123"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "GY", 592, "001", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["[2-46-9]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22728 HK: [null, [null, null, "8[0-46-9]\\d{6,7}|9\\d{4}(?:\\d(?:\\d(?:\\d{4})?)?)?|(?:[235-79]\\d|46)\\d{6}", null, null, null, null, null, null, [5, 6, 7, 8, 9, 11]], [null, null, "(?:2(?:[13-8]\\d|2[013-9]|9[0-24-9])\\d|3(?:(?:[1569][0-24-9]|4[0-246-9]|7[0-24-69])\\d|8(?:4[04]|9\\d))|58(?:0[1-8]|1[2-9]))\\d{4}", null, null, null, "21234567", null, null, [8]], [null, null, "(?:46(?:0[0-6]|10|4[0-57-9])|5(?:(?:[1-59][0-46-9]|6[0-4689])\\d|7(?:[0-2469]\\d|30))|6(?:(?:0[1-9]|[13-59]\\d|[68][0-57-9]|7[0-79])\\d|2(?:[0-57-9]\\d|6[01]))|707[1-5]|8480|9(?:(?:0[1-9]|1[02-9]|[358][0-8]|[467]\\d)\\d|2(?:[0-8]\\d|9[03-9])))\\d{4}", null, null, null, "51234567", null, null, [8]], [null, null, "800\\d{6}", null, null, null, "800123456", null, null, [9]], [null, null, "900(?:[0-24-9]\\d{7}|3\\d{1,4})", null, null, null, "90012345678", null, null, [5, 6, 7, 8, 11]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "8(?:1[0-4679]\\d|2(?:[0-36]\\d|7[0-4])|3(?:[034]\\d|2[09]|70))\\d{4}", null, null, null, "81123456", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], "HK", 852, "00(?:30|5[09]|[126-9]?)", null, null, null, null, null, "00", null, [[null, "(\\d{3})(\\d{2,5})", "$1 $2", ["900", "9003"]], [null, "(\\d{4})(\\d{4})", "$1 $2", ["[2-7]|8[1-4]|9(?:0[1-9]|[1-8])"]], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["8"]], [null, "(\\d{3})(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["9"]]], null, [null, null, "7(?:1(?:0[0-38]|1[0-3679]|3[013]|69|9[136])|2(?:[02389]\\d|1[18]|7[27-9])|3(?:[0-38]\\d|7[0-369]|9[2357-9])|47\\d|5(?:[178]\\d|5[0-5])|6(?:0[0-7]|2[236-9]|[35]\\d)|7(?:[27]\\d|8[7-9])|8(?:[23689]\\d|7[1-9])|9(?:[025]\\d|6[0-246-8]|7[0-36-9]|8[238]))\\d{4}", null, null, null, "71123456", null, null, [8]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "30(?:0[1-9]|[15-7]\\d|2[047]|89)\\d{4}", null, null, null, "30161234", null, null, [8]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22729 HN: [null, [null, null, "[237-9]\\d{7}", null, null, null, null, null, null, [8]], [null, null, "2(?:2(?:0[019]|1[1-36]|[23]\\d|4[04-6]|5[57]|64|7[0135689]|8[01346-9]|9[0-2])|4(?:07|2[3-59]|3[13-689]|4[0-68]|5[1-35])|5(?:08|16|4[03-5]|5\\d|6[4-6]|74|80)|6(?:[056]\\d|17|3[04]|4[0-378]|[78][0-8]|9[01])|7(?:6[46-9]|7[02-9]|8[034])|8(?:79|8[0-357-9]|9[1-57-9]))\\d{4}", null, null, null, "22123456"], [null, null, "[37-9]\\d{7}", null, null, null, "91234567"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "HN", 504, "00", null, null, null, null, null, null, null, [[null, "(\\d{4})(\\d{4})", "$1-$2", ["[237-9]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22730 HR: [null, [null, null, "(?:[24-69]\\d|3[0-79])\\d{7}|80\\d{5,7}|[1-79]\\d{7}|6\\d{5,6}", null, null, null, null, null, null, [6, 7, 8, 9]], [null, null, "1\\d{7}|(?:2[0-3]|3[1-5]|4[02-47-9]|5[1-3])\\d{6,7}", null, null, null, "12345678", null, null, [8, 9], [6, 7]], [null, null, "9(?:(?:01|[12589]\\d)\\d|7(?:[0679]\\d|51))\\d{5}|98\\d{6}", null, null, null, "921234567", null, null, [8, 9]], [null, null, "80[01]\\d{4,6}", null, null, null, "800123456", null, null, [7, 8, 9]], [null, null, "6[01459]\\d{6}|6[01]\\d{4,5}", null, null, null, "611234", null, null, [6, 7, 8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "7[45]\\d{6}", null, null, null, "74123456", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], "HR", 385, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{2,3})", "$1 $2 $3", ["6[01]"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{2,3})", "$1 $2 $3", ["8"], "0$1"], [null, "(\\d)(\\d{4})(\\d{3})", "$1 $2 $3", ["1"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[2-5]"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[67]"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["9"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["8"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:62\\d?|72)\\d{6}", null, null, null, "62123456", null, null, [8, 9]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22731 HT: [null, [null, null, "[2-489]\\d{7}", null, null, null, null, null, null, [8]], [null, null, "2(?:2\\d|5[1-5]|81|9[149])\\d{5}", null, null, null, "22453300"], [null, null, "[34]\\d{7}", null, null, null, "34101234"], [null, null, "8\\d{7}", null, null, null, "80012345"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "9(?:[67][0-4]|8[0-3589]|9\\d)\\d{5}", null, null, null, "98901234"], "HT", 509, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{4})", "$1 $2 $3", ["[2-489]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22732 HU: [null, [null, null, "[2357]\\d{8}|[1-9]\\d{7}", null, null, null, null, null, null, [8, 9], [6, 7]], [null, null, "(?:1\\d|[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6[23689]|8[2-57-9]|9[2-69])\\d{6}", null, null, null, "12345678", null, null, [8], [6, 7]], [null, null, "(?:[257]0|3[01])\\d{7}", null, null, null, "201234567", null, null, [9]], [null, null, "[48]0\\d{6}", null, null, null, "80123456", null, null, [8]], [null, null, "9[01]\\d{6}", null, null, null, "90123456", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "21\\d{7}", null, null, null, "211234567", null, null, [9]], "HU", 36, "00", "06", null, null, "06", null, null, null, [[null, "(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["1"], "($1)"], [null, "(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[2-9]"], "($1)"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "[48]0\\d{6}", null, null, null, null, null, null, [8]], [null, null, "38\\d{7}", null, null, null, "381234567", null, null, [9]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22733 ID: [null, [null, null, "(?:[1-36]|8\\d{5})\\d{6}|[1-9]\\d{8,10}|[2-9]\\d{7}", null, null, null, null, null, null, [7, 8, 9, 10, 11, 12], [5, 6]], [null, null, "2(?:[124]\\d{7,8}|(?:[35][1-4]|6[0-8]|7[1-6]|8\\d|9[1-8])\\d{5,8})|(?:3(?:1|[25][1-8]|3[1-68]|4[1-3]|6[1-3568]|7[0-469]|8\\d)|4(?:0[1-589]|1[01347-9]|2[0-36-8]|3[0-24-68]|43|5[1-378]|6[1-5]|7[134]|8[1245])|5(?:1[1-35-9]|2[25-8]|3[124-9]|4[1-3589]|5[1-46]|6[1-8])|7(?:02|[125][1-9]|[36]\\d|4[1-8]|7[0-36-9])|9(?:0[12]|1[013-8]|2[0-479]|5[125-8]|6[23679]|7[159]|8[01346]))\\d{5,8}|6(?:1(?:[0-8]\\d{4,7}|9\\d{4,8})|(?:[25]\\d|3[1-69]|4[1-6])\\d{5,8})|2(?:1(?:14|500)|2\\d{3})\\d{3}", null, null, null, "218350123", null, null, [7, 8, 9, 10, 11], [5, 6]], [null, null, "8[1-35-9]\\d{7,10}", null, null, null, "812345678", null, null, [9, 10, 11, 12]], [null, null, "(?:177\\d|800)\\d{5,7}", null, null, null, "8001234567", null, null, [8, 9, 10, 11]], [null, null, "809\\d{7}", null, null, null, "8091234567", null, null, [10]], [null, null, "804\\d{7}", null, null, null, "8041234567", null, null, [10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "ID", 62, "0(?:0[17-9]|10(?:00|1[67]))", "0", null, null, "0", null, null, null, [[null, "(\\d)(\\d{3})(\\d{3})", "$1 $2 $3", ["15"]], [null, "(\\d{2})(\\d{5,9})", "$1 $2", ["2[124]|[36]1"], "(0$1)"], [null, "(\\d{3})(\\d{5,7})", "$1 $2", ["800"], "0$1"], [null, "(\\d{3})(\\d{5,8})", "$1 $2", ["[2-79]"], "(0$1)"], [null, "(\\d{3})(\\d{3,4})(\\d{3})", "$1-$2-$3", ["8[1-35-9]"], "0$1"], [null, "(\\d{3})(\\d{6,8})", "$1 $2", ["1"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["804"], "0$1"], [null, "(\\d{3})(\\d)(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["80"], "0$1"], [null, "(\\d{3})(\\d{4})(\\d{4,5})", "$1-$2-$3", ["8"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "8071\\d{6}", null, null, null, null, null, null, [10]], [null, null, "(?:1500|8071\\d{3})\\d{3}", null, null, null, "8071123456", null, null, [7, 10]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22734 IE: [null, [null, null, "[148]\\d{9}|[124-9]\\d{8}|[124-69]\\d{7}|[24-69]\\d{6}", null, null, null, null, null, null, [7, 8, 9, 10], [5, 6]], [null, null, "(?:1\\d{2,3}|2(?:[13]\\d\\d|[24-9])|4(?:0[24]|(?:(?:[1-469]|8[0-46-9])\\d|5)\\d|7)|5(?:0[45]|(?:1|[23679]\\d)\\d|8)|6(?:[237-9]|[4-6]\\d\\d)|7[14]\\d\\d|9(?:[04]\\d\\d|[35-9]))\\d{5}|[269]1\\d{6}", null, null, null, "2212345", null, null, null, [5, 6]], [null, null, "8(?:22|[35-9]\\d)\\d{6}", null, null, null, "850123456", null, null, [9]], [null, null, "1800\\d{6}", null, null, null, "1800123456", null, null, [10]], [null, null, "15(?:1[2-8]|[2-8]0|9[089])\\d{6}", null, null, null, "1520123456", null, null, [10]], [null, null, "18[59]0\\d{6}", null, null, null, "1850123456", null, null, [10]], [null, null, "700\\d{6}", null, null, null, "700123456", null, null, [9]], [null, null, "76\\d{7}", null, null, null, "761234567", null, null, [9]], "IE", 353, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{5})", "$1 $2", ["2[24-9]|47|58|6[237-9]|9[35-9]"], "(0$1)"], [null, "(\\d{3})(\\d{5})", "$1 $2", ["[45]0"], "(0$1)"], [null, "(\\d)(\\d{3,4})(\\d{4})", "$1 $2 $3", ["1"], "(0$1)"], [null, "(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[2569]|4[1-69]|7[14]"], "(0$1)"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["76|8[235-9]"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["7"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["81"], "(0$1)"], [null, "(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["4"], "(0$1)"], [null, "(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["1"]], [null, "(\\d{2})(\\d)(\\d{3})(\\d{4})", "$1 $2 $3 $4", ["8"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "18[59]0\\d{6}", null, null, null, null, null, null, [10]], [null, null, "818\\d{6}", null, null, null, "818123456", null, null, [9]], null, null, [null, null, "8[35-9]5\\d{7}", null, null, null, "8551234567", null, null, [10]]], 22735 IL: [null, [null, null, "1\\d{6}(?:\\d{3,5})?|[57]\\d{8}|[1-489]\\d{7}", null, null, null, null, null, null, [7, 8, 9, 10, 11, 12]], [null, null, "(?:153\\d\\d?|[2-489])\\d{7}", null, null, null, "21234567", null, null, [8, 11, 12], [7]], [null, null, "5(?:(?:[0-489][2-9]|6\\d)\\d|5(?:01|2[2-5]|3[23]|4[45]|5[05689]|6[6-8]|7[0-267]|8[7-9]|9[1-9]))\\d{5}", null, null, null, "502345678", null, null, [9]], [null, null, "1(?:255|80[019]\\d{3})\\d{3}", null, null, null, "1800123456", null, null, [7, 10]], [null, null, "1(?:2(?:00\\d\\d|12)|9(?:0[01]|19)\\d\\d)\\d{4}", null, null, null, "1919123456", null, null, [8, 10]], [null, null, "1700\\d{6}", null, null, null, "1700123456", null, null, [10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "7(?:(?:18|2[23]|3[237]|47|6[58]|7\\d|9[2357-9])\\d|8(?:2\\d|33|55|77|81))\\d{5}", null, null, null, "771234567", null, null, [9]], "IL", 972, "0(?:0|1[2-9])", "0", null, null, "0", null, null, null, [[null, "(\\d{4})(\\d{3})", "$1-$2", ["125"]], [null, "(\\d)(\\d{3})(\\d{4})", "$1-$2-$3", ["[2-489]"], "0$1"], [null, "(\\d{4})(\\d{2})(\\d{2})", "$1-$2-$3", ["121"]], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1-$2-$3", ["[57]"], "0$1"], [null, "(\\d{4})(\\d{3})(\\d{3})", "$1-$2-$3", ["12"]], [null, "(\\d{4})(\\d{6})", "$1-$2", ["159"]], [null, "(\\d)(\\d{3})(\\d{3})(\\d{3})", "$1-$2-$3-$4", ["1[7-9]"]], [null, "(\\d{3})(\\d{1,2})(\\d{3})(\\d{4})", "$1-$2 $3-$4", ["1"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "1700\\d{6}", null, null, null, null, null, null, [10]], [null, null, "1599\\d{6}", null, null, null, "1599123456", null, null, [10]], null, null, [null, null, "151\\d{8,9}", null, null, null, "15112340000", null, null, [11, 12]]], 22736 IM: [null, [null, null, "(?:1624|(?:[3578]\\d|90)\\d\\d)\\d{6}", null, null, null, null, null, null, [10], [6]], [null, null, "1624[5-8]\\d{5}", null, null, null, "1624756789", null, null, null, [6]], [null, null, "7(?:4576|[59]24\\d|624[0-4689])\\d{5}", null, null, null, "7924123456"], [null, null, "808162\\d{4}", null, null, null, "8081624567"], [null, null, "(?:8(?:4(?:40[49]06|5624\\d)|7(?:0624|2299)\\d)|90[0167]624\\d)\\d{3}", null, null, null, "9016247890"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "70\\d{8}", null, null, null, "7012345678"], [null, null, "56\\d{8}", null, null, null, "5612345678"], "IM", 44, "00", "0", null, null, "0|([5-8]\\d{5})$", "1624$1", null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:3(?:(?:08162|3\\d{4}|7(?:0624|2299))\\d|4(?:40[49]06|5624\\d))|55\\d{5})\\d{3}", null, null, null, "5512345678"], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22737 IN: [null, [null, null, "(?:00800|1\\d{0,5}|[2-9]\\d\\d)\\d{7}", null, null, null, null, null, null, [8, 9, 10, 11, 12, 13], [6, 7]], [null, null, "(?:1(?:1[2-7]\\d\\d|2(?:[0-249][2-7]\\d|[35-8]\\d[2-7])|3(?:[0-25][2-7]\\d|[346-9]\\d[2-7])|4(?:[145][2-7]\\d|[236-9]\\d[2-7])|[59](?:[0235-9]\\d[2-7]|[14][2-7]\\d)|6(?:[014][2-7]\\d|[235-9]\\d[2-7])|7(?:(?:0[24]|[1257][2-7])\\d|[34689]\\d[2-7])|8(?:[01346][2-7]\\d|[257-9]\\d[2-7]))|2(?:[02][2-7]\\d\\d|1(?:[134689]\\d[2-7]|[257][2-7]\\d)|3(?:[013][2-7]\\d|[24-8]\\d[2-7])|4(?:[01][2-7]\\d|[2-8]\\d[2-7])|5(?:[0137][2-7]\\d|[25689]\\d[2-7])|6(?:[0158][2-7]\\d|[2-4679]\\d[2-7])|7(?:[13-79]\\d[2-7]|8[2-7]\\d)|8(?:(?:0[13468]|[1568][2-7])\\d|[2-479]\\d[2-7])|9(?:(?:0\\d|[14][2-7])\\d|[235-9]\\d[2-7]))|3(?:(?:01|1[79])\\d[2-7]|2(?:[1-5]\\d[2-7]|6[2-7]\\d)|3[2-7]\\d\\d|4(?:[13][2-7]\\d|2(?:[0189][2-7]|[2-7]\\d)|[5-8]\\d[2-7])|5(?:[125689]\\d[2-7]|[34][2-7]\\d)|6(?:[01489][2-7]\\d|[235-7]\\d[2-7])|7(?:[02-46][2-7]\\d|[157-9]\\d[2-7])|8(?:(?:0\\d|[159][2-7])\\d|[2-46-8]\\d[2-7]))|4(?:[04][2-7]\\d\\d|1(?:[14578]\\d[2-7]|[36][2-7]\\d)|2(?:(?:0[24]|[1-47][2-7])\\d|[5689]\\d[2-7])|3(?:[15][2-7]\\d|[2-467]\\d[2-7])|5(?:[12][2-7]\\d|[4-7]\\d[2-7])|6(?:[0-26-9][2-7]\\d|[35]\\d[2-7])|7(?:(?:[014-9][2-7]|2[2-8])\\d|3\\d[2-7])|8(?:[013-57][2-7]\\d|[2689]\\d[2-7])|9(?:[014-7][2-7]\\d|[2389]\\d[2-7]))|5(?:1(?:[025][2-7]\\d|[146-9]\\d[2-7])|2(?:[14-8]\\d[2-7]|2[2-7]\\d)|3(?:[1346]\\d[2-7]|[25][2-7]\\d)|4(?:[14-69]\\d[2-7]|[28][2-7]\\d)|5(?:(?:1[2-7]|2[1-7])\\d|[46]\\d[2-7])|6(?:[146-9]\\d[2-7]|[25][2-7]\\d)|7(?:1[2-7]\\d|[2-4]\\d[2-7])|8(?:1[2-7]\\d|[2-8]\\d[2-7])|9(?:[15][2-7]\\d|[246]\\d[2-7]))|6(?:1(?:[1358]\\d[2-7]|2[2-7]\\d)|2(?:1[2-7]\\d|[2457]\\d[2-7])|3(?:1[2-7]\\d|[2-4]\\d[2-7])|4(?:1[2-7]\\d|[235-7]\\d[2-7])|5(?:[17][2-7]\\d|[2-689]\\d[2-7])|6(?:[13][2-7]\\d|[24578]\\d[2-7])|7(?:1[2-7]\\d|[235689]\\d[2-7]|4(?:[0189][2-7]|[2-7]\\d))|8(?:0[2-7]\\d|[1-6]\\d[2-7]))|7(?:1(?:[013-9]\\d[2-7]|2[2-7]\\d)|2(?:[0235-9]\\d[2-7]|[14][2-7]\\d)|3(?:[134][2-7]\\d|[2679]\\d[2-7])|4(?:[1-35689]\\d[2-7]|[47][2-7]\\d)|5(?:[15][2-7]\\d|[2-46-9]\\d[2-7])|[67](?:[02-9]\\d[2-7]|1[2-7]\\d)|8(?:(?:[013-7]\\d|2[0-6])[2-7]|8(?:[0189][2-7]|[2-7]\\d))|9(?:[0189]\\d[2-7]|[2-7]\\d\\d))|8(?:0[2-7]\\d\\d|1(?:[1357-9]\\d[2-7]|6[2-7]\\d)|2(?:[014][2-7]\\d|[235-8]\\d[2-7])|3(?:[03-57-9]\\d[2-7]|[126][2-7]\\d)|(?:4[0-24-9]|5\\d)\\d[2-7]|6(?:[136][2-7]\\d|[2457-9]\\d[2-7])|7(?:[078][2-7]\\d|[1-6]\\d[2-7])|8(?:[1256]\\d[2-7]|[34][2-7]\\d)|9(?:1[2-7]\\d|[2-4]\\d[2-7])))\\d{5}", null, null, null, "7410410123", null, null, [10], [6, 7, 8]], [null, null, "(?:6(?:(?:0(?:0[0-3569]|26|33)|2(?:[06]\\d|3[02589]|8[0-479]|9[0-79])|9(?:0[019]|13))\\d|1279|3(?:(?:0[0-79]|6[0-4679]|7[0-24-9]|[89]\\d)\\d|5(?:0[0-6]|[1-9]\\d)))|7(?:(?:0\\d\\d|19[0-5])\\d|2(?:(?:[0235-79]\\d|[14][017-9])\\d|8(?:[0-59]\\d|[6-8][089]))|3(?:(?:[05-8]\\d|3[017-9])\\d|1(?:[089]\\d|11|7[02-8])|2(?:[0-49][089]|[5-8]\\d)|4(?:[07-9]\\d|11)|9(?:[016-9]\\d|[2-5][089]))|4(?:0\\d\\d|1(?:[015-9]\\d|[2-4][089])|[29](?:[0-7][089]|[89]\\d)|3(?:[0-8][089]|9\\d)|[47](?:[089]\\d|11|7[02-8])|[56]\\d[089]|8(?:[0-24-7][089]|[389]\\d))|5(?:(?:[0346-8]\\d|5[017-9])\\d|1(?:[07-9]\\d|11)|2(?:[04-9]\\d|[1-3][089])|9(?:[0-6][089]|[7-9]\\d))|6(?:0(?:[0-47]\\d|[5689][089])|(?:1[0-257-9]|[6-9]\\d)\\d|2(?:[0-4]\\d|[5-9][089])|3(?:[02-8][089]|[19]\\d)|4\\d[089]|5(?:[0-367][089]|[4589]\\d))|7(?:0(?:0[02-9]|[13-7][089]|[289]\\d)|[1-9]\\d\\d)|8(?:[0-79]\\d\\d|8(?:[089]\\d|11|7[02-9]))|9(?:[089]\\d\\d|313|7(?:[02-8]\\d|9[07-9])))|8(?:0(?:(?:[01589]\\d|6[67])\\d|7(?:[02-8]\\d|9[04-9]))|1(?:[0-57-9]\\d\\d|6(?:[089]\\d|7[02-8]))|2(?:[014](?:[089]\\d|7[02-8])|[235-9]\\d\\d)|3(?:[03-57-9]\\d\\d|[126](?:[089]\\d|7[02-8]))|[45]\\d{3}|6(?:[02457-9]\\d\\d|[136](?:[089]\\d|7[02-8]))|7(?:(?:0[07-9]|[1-69]\\d)\\d|[78](?:[089]\\d|7[02-8]))|8(?:[0-25-9]\\d\\d|3(?:[089]\\d|7[02-8])|4(?:[0489]\\d|7[02-8]))|9(?:[02-9]\\d\\d|1(?:[0289]\\d|7[02-8])))|9\\d{4})\\d{5}", null, null, null, "8123456789", null, null, [10]], [null, null, "(?:00800\\d|1(?:600|80[03]\\d{3}))\\d{6}|1800\\d{4,8}", null, null, null, "1800123456"], [null, null, "186[12]\\d{9}", null, null, null, "1861123456789", null, null, [13]], [null, null, "1860\\d{7}", null, null, null, "18603451234", null, null, [11]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "IN", 91, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{8})", "$1", ["5[0236-8]"], null, null, 1], [null, "(\\d{4})(\\d{4,5})", "$1 $2", ["180", "1800"], null, null, 1], [null, "(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["11|2[02]|33|4[04]|79[1-7]|80[2-46]", "11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])", "11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])"], "0$1", null, 1], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["1(?:2[0-249]|3[0-25]|4[145]|[59][14]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1|9[15])|6(?:12|[2-4]1|5[17]|6[13]|7[14]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)", "1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6(?:0[2-7]|[1-9])|7[1257]|8(?:[06][2-7]|[1-57-9]))|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5(?:1|2[2-7])|[78]1|9[15])|6(?:12[2-7]|[2-4]1|5[17]|6[13]|7[14]|80)|7(?:12|(?:2[14]|5[15])[2-6]|3(?:1[2-7]|[34][2-6])|4[47][2-7]|61[346]|88[0-8])|8(?:(?:16|2[014]|3[126]|6[136])[2-7]|7(?:0[2-6]|[78][2-7])|8(?:3[2-7]|4[235-7])|91[3-7])", "1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6(?:0[2-7]|[1-9])|7[1257]|8(?:[06][2-7]|[1-57-9]))|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5(?:1|2[2-7])|[78]1|9[15])|6(?:12(?:[2-6]|7[0-8])|[2-4]1|5[17]|6[13]|7[14]|80)|7(?:12|(?:2[14]|5[15])[2-6]|3(?:1(?:[2-6]|71)|[34][2-6])|4[47](?:[2-6]|7[19])|61[346]|88(?:[01][2-7]|[2-7]|82))|8(?:(?:16|2[014]|3[126]|6[136])(?:[2-6]|7[19])|7(?:0[2-6]|[78](?:[2-6]|7[19]))|8(?:3(?:[2-6]|7[19])|4(?:[2356]|7[19]))|91(?:[3-6]|7[19]))"], "0$1", null, 1], [null, "(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["1(?:[23579]|4[236-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|[4-8])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807", "1(?:[23579]|4[236-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|[4-8])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]", "1(?:[23579]|4[236-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|[4-8])|7(?:1(?:[013-8]|9[6-9])|(?:28[6-8]|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7])[2-7]|3(?:179|(?:2[0-49]|9[2-57])[2-7]))|807(?:1|9[1-3])"], "0$1", null, 1], [null, "(\\d{5})(\\d{5})", "$1 $2", ["[6-9]"], "0$1", null, 1], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["14"], null, null, 1], [null, "(\\d{4})(\\d{2,4})(\\d{4})", "$1 $2 $3", ["1(?:6|8[06])", "1(?:6|8[06]0)"], null, null, 1], [null, "(\\d{2})(\\d{3})(\\d{4})(\\d{3})", "$1 $2 $3 $4", ["0"], "0$1", null, 1], [null, "(\\d{4})(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["1"], null, null, 1]], [[null, "(\\d{8})", "$1", ["5[0236-8]"], null, null, 1], [null, "(\\d{4})(\\d{4,5})", "$1 $2", ["180", "1800"], null, null, 1], [null, "(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["11|2[02]|33|4[04]|79[1-7]|80[2-46]", "11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])", "11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])"], "0$1", null, 1], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["1(?:2[0-249]|3[0-25]|4[145]|[59][14]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1|9[15])|6(?:12|[2-4]1|5[17]|6[13]|7[14]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)", "1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6(?:0[2-7]|[1-9])|7[1257]|8(?:[06][2-7]|[1-57-9]))|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5(?:1|2[2-7])|[78]1|9[15])|6(?:12[2-7]|[2-4]1|5[17]|6[13]|7[14]|80)|7(?:12|(?:2[14]|5[15])[2-6]|3(?:1[2-7]|[34][2-6])|4[47][2-7]|61[346]|88[0-8])|8(?:(?:16|2[014]|3[126]|6[136])[2-7]|7(?:0[2-6]|[78][2-7])|8(?:3[2-7]|4[235-7])|91[3-7])", "1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6(?:0[2-7]|[1-9])|7[1257]|8(?:[06][2-7]|[1-57-9]))|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5(?:1|2[2-7])|[78]1|9[15])|6(?:12(?:[2-6]|7[0-8])|[2-4]1|5[17]|6[13]|7[14]|80)|7(?:12|(?:2[14]|5[15])[2-6]|3(?:1(?:[2-6]|71)|[34][2-6])|4[47](?:[2-6]|7[19])|61[346]|88(?:[01][2-7]|[2-7]|82))|8(?:(?:16|2[014]|3[126]|6[136])(?:[2-6]|7[19])|7(?:0[2-6]|[78](?:[2-6]|7[19]))|8(?:3(?:[2-6]|7[19])|4(?:[2356]|7[19]))|91(?:[3-6]|7[19]))"], "0$1", null, 1], [null, "(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["1(?:[23579]|4[236-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|[4-8])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807", "1(?:[23579]|4[236-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|[4-8])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]", "1(?:[23579]|4[236-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|[4-8])|7(?:1(?:[013-8]|9[6-9])|(?:28[6-8]|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7])[2-7]|3(?:179|(?:2[0-49]|9[2-57])[2-7]))|807(?:1|9[1-3])"], "0$1", null, 1], [null, "(\\d{5})(\\d{5})", "$1 $2", ["[6-9]"], "0$1", null, 1], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["14"], null, null, 1], [null, "(\\d{4})(\\d{2,4})(\\d{4})", "$1 $2 $3", ["1(?:6|8[06])", "1(?:6|8[06]0)"], null, null, 1], [null, "(\\d{4})(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["1"], null, null, 1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "(?:00800\\d|1(?:600|8(?:0[03]\\d\\d|6(?:0|[12]\\d\\d))\\d))\\d{6}|1800\\d{4,8}"], [null, null, "140\\d{7}", null, null, null, "1409305260", null, null, [10]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22738 IO: [null, [null, null, "3\\d{6}", null, null, null, null, null, null, [7]], [null, null, "37\\d{5}", null, null, null, "3709100"], [null, null, "38\\d{5}", null, null, null, "3801234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "IO", 246, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["3"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22739 IQ: [null, [null, null, "(?:1|[2-6]\\d?|7\\d\\d)\\d{7}", null, null, null, null, null, null, [8, 9, 10], [6, 7]], [null, null, "1\\d{7}|(?:2[13-5]|3[02367]|4[023]|5[03]|6[026])\\d{6,7}", null, null, null, "12345678", null, null, [8, 9], [6, 7]], [null, null, "7[3-9]\\d{8}", null, null, null, "7912345678", null, null, [10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "IQ", 964, "00", "0", null, null, "0", null, null, null, [[null, "(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["1"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[2-6]"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["7"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22740 IR: [null, [null, null, "[1-9]\\d{9}|(?:[1-8]\\d\\d|9)\\d{3,4}", null, null, null, null, null, null, [4, 5, 6, 7, 10], [8]], [null, null, "(?:(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])\\d{4}|94(?:(?:000|(?:11|2\\d)\\d|30[01])\\d|4(?:111|40\\d)))\\d{4}|(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])(?:[16]|[289]\\d?)\\d{3}", null, null, null, "2123456789", null, null, [6, 7, 10], [4, 5, 8]], [null, null, "9(?:(?:0(?:[1-35]\\d|44)|(?:[13]\\d|2[0-2])\\d)\\d|9(?:(?:[01]\\d|44)\\d|510|8(?:1[01]|88)|9(?:0[013]|1[0134]|21|77|9[6-9])))\\d{5}", null, null, null, "9123456789", null, null, [10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "993\\d{7}", null, null, null, "9932123456", null, null, [10]], "IR", 98, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{4,5})", "$1", ["96"], "0$1"], [null, "(\\d{2})(\\d{4,5})", "$1 $2", ["(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["9"], "0$1"], [null, "(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["[1-8]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "9(?:4(?:11[1-7]|440)\\d{5}|6(?:0[12]|2[16-8]|3(?:08|[14]5|[23]|66)|4(?:0|80)|5[01]|6[89]|86|9[19]))", null, null, null, null, null, null, [4, 5, 10]], [null, null, "96(?:0[12]|2[16-8]|3(?:08|[14]5|[23]|66)|4(?:0|80)|5[01]|6[89]|86|9[19])", null, null, null, "9601", null, null, [4, 5]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22741 IS: [null, [null, null, "(?:38\\d|[4-9])\\d{6}", null, null, null, null, null, null, [7, 9]], [null, null, "(?:4(?:1[0-24-69]|2[0-7]|[37][0-8]|4[0-245]|5[0-68]|6\\d|8[0-36-8])|5(?:05|[156]\\d|2[02578]|3[0-579]|4[03-7]|7[0-2578]|8[0-35-9]|9[013-689])|87[23])\\d{4}", null, null, null, "4101234", null, null, [7]], [null, null, "(?:38[589]\\d\\d|6(?:1[1-8]|2[0-6]|3[027-9]|4[014679]|5[0159]|6[0-69]|70|8[06-8]|9\\d)|7(?:5[057]|[6-8]\\d|9[0-3])|8(?:2[0-59]|[3469]\\d|5[1-9]|8[28]))\\d{4}", null, null, null, "6111234"], [null, null, "800\\d{4}", null, null, null, "8001234", null, null, [7]], [null, null, "90\\d{5}", null, null, null, "9011234", null, null, [7]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "49\\d{5}", null, null, null, "4921234", null, null, [7]], "IS", 354, "00|1(?:0(?:01|[12]0)|100)", null, null, null, null, null, "00", null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["[4-9]"]], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["3"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "809\\d{4}", null, null, null, "8091234", null, null, [7]], null, null, [null, null, "(?:689|8(?:7[0189]|80)|95[48])\\d{4}", null, null, null, "6891234", null, null, [7]]], 22742 IT: [null, [null, null, "0\\d{6}(?:\\d{4})?|3[0-8]\\d{9}|(?:[0138]\\d?|55)\\d{8}|[08]\\d{5}(?:\\d{2})?", null, null, null, null, null, null, [6, 7, 8, 9, 10, 11]], [null, null, "0(?:(?:1(?:[0159]\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\d\\d|3(?:[0159]\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|7(?:[0159]\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\d|6(?:[0-57-9]\\d\\d|6(?:[0-8]\\d|9[0-79])))\\d{1,6}", null, null, null, "0212345678"], [null, null, "33\\d{9}|3[1-9]\\d{8}|3[2-9]\\d{7}", null, null, null, "3123456789", null, null, [9, 10, 11]], [null, null, "80(?:0\\d{3}|3)\\d{3}", null, null, null, "800123456", null, null, [6, 9]], [null, null, "(?:(?:0878|1(?:44|6[346])\\d)\\d\\d|89(?:2|(?:4[5-9]|(?:5[5-9]|9)\\d\\d)\\d))\\d{3}|89[45][0-4]\\d\\d", null, null, null, "899123456", null, null, [6, 8, 9, 10]], [null, null, "84(?:[08]\\d{3}|[17])\\d{3}", null, null, null, "848123456", null, null, [6, 9]], [null, null, "1(?:78\\d|99)\\d{6}", null, null, null, "1781234567", null, null, [9, 10]], [null, null, "55\\d{8}", null, null, null, "5512345678", null, null, [10]], "IT", 39, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{4,6})", "$1 $2", ["0[26]"]], [null, "(\\d{3})(\\d{3,6})", "$1 $2", ["0[13-57-9][0159]|8(?:03|4[17]|9[245])", "0[13-57-9][0159]|8(?:03|4[17]|9(?:2|[45][0-4]))"]], [null, "(\\d{4})(\\d{2,6})", "$1 $2", ["0(?:[13-579][2-46-8]|8[236-8])"]], [null, "(\\d{4})(\\d{4})", "$1 $2", ["894"]], [null, "(\\d{2})(\\d{3,4})(\\d{4})", "$1 $2 $3", ["0[26]|5"]], [null, "(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["1(?:44|[67]|99)|[38]"]], [null, "(\\d{3})(\\d{3,4})(\\d{4})", "$1 $2 $3", ["0[13-57-9][0159]"]], [null, "(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["3"]], [null, "(\\d{2})(\\d{4})(\\d{5})", "$1 $2 $3", ["0[26]"]], [null, "(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["0"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], 1, null, [null, null, "848\\d{6}", null, null, null, null, null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22743 JE: [null, [null, null, "(?:1534|(?:[3578]\\d|90)\\d\\d)\\d{6}", null, null, null, null, null, null, [10], [6]], [null, null, "1534[0-24-8]\\d{5}", null, null, null, "1534456789", null, null, null, [6]], [null, null, "7(?:(?:(?:50|82)9|937)\\d|7(?:00[378]|97[7-9]))\\d{5}", null, null, null, "7797712345"], [null, null, "80(?:07(?:35|81)|8901)\\d{4}", null, null, null, "8007354567"], [null, null, "(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\d{4}", null, null, null, "9018105678"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "701511\\d{4}", null, null, null, "7015115678"], [null, null, "56\\d{8}", null, null, null, "5612345678"], "JE", 44, "00", "0", null, null, "0|([0-24-8]\\d{5})$", "1534$1", null, null, null, null, [null, null, "76(?:0[0-2]|2[356]|4[0134]|5[49]|6[0-369]|77|81|9[39])\\d{6}", null, null, null, "7640123456"], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:3(?:0(?:07(?:35|81)|8901)|3\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\d{4})\\d{4}", null, null, null, "5512345678"], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22744 JM: [null, [null, null, "(?:[58]\\d\\d|658|900)\\d{7}", null, null, null, null, null, null, [10], [7]], [null, null, "(?:658[2-9]\\d\\d|876(?:5(?:0[12]|1[0-468]|2[35]|63)|6(?:0[1-3579]|1[0237-9]|[23]\\d|40|5[06]|6[2-589]|7[05]|8[04]|9[4-9])|7(?:0[2-689]|[1-6]\\d|8[056]|9[45])|9(?:0[1-8]|1[02378]|[2-8]\\d|9[2-468])))\\d{4}", null, null, null, "8765230123", null, null, null, [7]], [null, null, "876(?:(?:2[14-9]|[348]\\d)\\d|5(?:0[3-9]|[2-57-9]\\d|6[0-24-9])|7(?:0[07]|7\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579]))\\d{4}", null, null, null, "8762101234", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002123456"], [null, null, "900[2-9]\\d{6}", null, null, null, "9002123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, null, null, null, null, null, null, null, [-1]], "JM", 1, "011", "1", null, null, "1", null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "658|876", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22745 JO: [null, [null, null, "(?:(?:(?:[268]|7\\d)\\d|32|53)\\d|900)\\d{5}", null, null, null, null, null, null, [8, 9]], [null, null, "(?:2(?:6(?:2[0-35-9]|3[0-578]|4[24-7]|5[0-24-8]|[6-8][023]|9[0-3])|7(?:0[1-79]|10|2[014-7]|3[0-689]|4[019]|5[0-3578]))|32(?:0[1-69]|1[1-35-7]|2[024-7]|3\\d|4[0-3]|[57][023]|6[03])|53(?:0[0-3]|[13][023]|2[0-59]|49|5[0-35-9]|6[15]|7[45]|8[1-6]|9[0-36-9])|6(?:2[05]0|3(?:00|33)|4(?:0[0-25]|1[2-7]|2[0569]|[38][07-9]|4[025689]|6[0-589]|7\\d|9[0-2])|5(?:[01][056]|2[034]|3[0-57-9]|4[178]|5[0-69]|6[0-35-9]|7[1-379]|8[0-68]|9[0239]))|87(?:[029]0|7[08]))\\d{4}", null, null, null, "62001234", null, null, [8]], [null, null, "7(?:55[0-49]|(?:7[025-9]|[89][0-25-9])\\d)\\d{5}", null, null, null, "790123456", null, null, [9]], [null, null, "80\\d{6}", null, null, null, "80012345", null, null, [8]], [null, null, "900\\d{5}", null, null, null, "90012345", null, null, [8]], [null, null, "85\\d{6}", null, null, null, "85012345", null, null, [8]], [null, null, "70\\d{7}", null, null, null, "700123456", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], "JO", 962, "00", "0", null, null, "0", null, null, null, [[null, "(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["[2356]|87"], "(0$1)"], [null, "(\\d{3})(\\d{5,6})", "$1 $2", ["[89]"], "0$1"], [null, "(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["7[457-9]"], "0$1"], [null, "(\\d{2})(\\d{7})", "$1 $2", ["7"], "0$1"]], null, [null, null, "74(?:66|77)\\d{5}", null, null, null, "746612345", null, null, [9]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "8(?:10|8\\d)\\d{5}", null, null, null, "88101234", null, null, [8]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22746 JP: [null, [null, null, "00[1-9]\\d{6,14}|[257-9]\\d{9}|(?:00|[1-9]\\d\\d)\\d{6}", null, null, null, null, null, null, [8, 9, 10, 11, 12, 13, 14, 15, 16, 17]], [null, null, "(?:1(?:1[235-8]|2[3-6]|3[3-9]|4[2-6]|[58][2-8]|6[2-7]|7[2-9]|9[1-9])|(?:2[2-9]|[36][1-9])\\d|4(?:[2-578]\\d|6[02-8]|9[2-59])|5(?:[2-589]\\d|6[1-9]|7[2-8])|7(?:[25-9]\\d|3[4-9]|4[02-9])|8(?:[2679]\\d|3[2-9]|4[5-9]|5[1-9]|8[03-9])|9(?:[2-58]\\d|[679][1-9]))\\d{6}", null, null, null, "312345678", null, null, [9]], [null, null, "[7-9]0[1-9]\\d{7}", null, null, null, "9012345678", null, null, [10]], [null, null, "(?:00(?:(?:37|66)\\d{4,11}|777(?:[01]|(?:5|8\\d)\\d)|882[1245]\\d\\d)|(?:120|800\\d)\\d{4})\\d\\d", null, null, null, "120123456"], [null, null, "990\\d{6}", null, null, null, "990123456", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "60\\d{7}", null, null, null, "601234567", null, null, [9]], [null, null, "50[1-9]\\d{7}", null, null, null, "5012345678", null, null, [10]], "JP", 81, "010", "0", null, null, "0", null, null, null, [[null, "(\\d{4})(\\d{4})", "$1-$2", ["007", "0077", "00777", "00777[01]"]], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1-$2-$3", ["(?:12|57|99)0"], "0$1"], [null, "(\\d{4})(\\d)(\\d{4})", "$1-$2-$3", ["1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:49|80|9[16])", "1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[78]|96)|477|51[24]|636)|9(?:496|802|9(?:1[23]|69))", "1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[78]|96[2457-9])|477|51[24]|636[2-57-9])|9(?:496|802|9(?:1[23]|69))"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{4})", "$1-$2-$3", ["1(?:[2-46]|5[2-8]|7[2-689]|8[2-7]|9[1-578])|2(?:2[03-689]|3[3-58]|4[0-468]|5[04-8]|6[013-8]|7[06-9]|8[02-57-9]|9[13])|4(?:2[28]|3[689]|6[035-7]|7[05689]|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|[67]|8[14-7]|9[4-9])|7(?:2[15]|3[5-9]|4|6[135-8]|7[0-4689]|9[014-9])|8(?:2[49]|3[3-8]|4[5-8]|5[2-9]|6[35-9]|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9[3-7])", "1(?:[2-46]|5(?:[236-8]|[45][2-69])|7[2-689]|8[2-7]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:[0468][2-9]|5[78]|7[2-4])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|[67]|8[14-7]|9(?:[4-7]|[89][2-8]))|7(?:2[15]|3[5-9]|4|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9[2-8])|3(?:[3-6][2-9]|7[2-6]|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5[4-7]|6[2-9]|8[2-8]|9[236-9])|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3[34]|4[2-69]|[5-7]))", "1(?:[2-46]|5(?:[236-8]|[45][2-69])|7[2-689]|8[2-7]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:[0468][2-9]|5[78]|7[2-4])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|[67]|8[14-7]|9(?:[4-7]|[89][2-8]))|7(?:2[15]|3[5-9]|4|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9(?:20|[3578]|4[04-9]|6[56]))|3(?:[3-6][2-9]|7(?:[2-5]|6[0-59])|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5(?:[467]|5[014-9])|6(?:[2-8]|9[02-69])|8[2-8]|9(?:[236-8]|9[23]))|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3(?:3[02-9]|4[0-24689])|4[2-69]|[5-7]))", "1(?:[2-46]|5(?:[236-8]|[45][2-69])|7[2-689]|8[2-7]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:[0468][2-9]|5[78]|7[2-4])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|[67]|8[14-7]|9(?:[4-7]|[89][2-8]))|7(?:2[15]|3[5-9]|4|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9(?:20|[3578]|4[04-9]|6(?:5[25]|60)))|3(?:[3-6][2-9]|7(?:[2-5]|6[0-59])|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5(?:[467]|5[014-9])|6(?:[2-8]|9[02-69])|8[2-8]|9(?:[236-8]|9[23]))|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3(?:3[02-9]|4[0-24689])|4[2-69]|[5-7]))"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1-$2-$3", ["1|2(?:2[37]|5[5-9]|64|78|8[39]|91)|4(?:2[2689]|64|7[347])|5[2-589]|60|8(?:2[124589]|3[279]|[46-9])|9(?:[235-8]|93)", "1|2(?:2[37]|5(?:[57]|[68]0|9[19])|64|78|8[39]|917)|4(?:2(?:20|[68]|9[178])|64|7[347])|5[2-589]|60|8(?:2[124589]|3[279]|[46-9])|9(?:[235-8]|93[34])", "1|2(?:2[37]|5(?:[57]|[68]0|9(?:17|99))|64|78|8[39]|917)|4(?:2(?:20|[68]|9[178])|64|7[347])|5[2-589]|60|8(?:2[124589]|3[279]|[46-9])|9(?:[235-8]|93[34])"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{4})", "$1-$2-$3", ["2(?:[34]7|[56]9|74|9[14-79])|82|993"], "0$1"], [null, "(\\d)(\\d{4})(\\d{4})", "$1-$2-$3", ["[36]|4(?:2[09]|7[01])"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1-$2-$3", ["2[2-9]|4|7[235-9]|9[49]"], "0$1"], [null, "(\\d{4})(\\d{2})(\\d{3,4})", "$1-$2-$3", ["007"]], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1-$2-$3", ["800"], "0$1"], [null, "(\\d{4})(\\d{2})(\\d{4})", "$1-$2-$3", ["008"]], [null, "(\\d{2})(\\d{4})(\\d{4})", "$1-$2-$3", ["[2579]|80"], "0$1"], [null, "(\\d{4})(\\d{3})(\\d{3,4})", "$1-$2-$3", ["0"]], [null, "(\\d{4})(\\d{4})(\\d{4,5})", "$1-$2-$3", ["0"]], [null, "(\\d{4})(\\d{5})(\\d{5,6})", "$1-$2-$3", ["0"]], [null, "(\\d{4})(\\d{6})(\\d{6,7})", "$1-$2-$3", ["0"]]], [[null, "(\\d{3})(\\d{3})(\\d{3})", "$1-$2-$3", ["(?:12|57|99)0"], "0$1"], [null, "(\\d{4})(\\d)(\\d{4})", "$1-$2-$3", ["1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:49|80|9[16])", "1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[78]|96)|477|51[24]|636)|9(?:496|802|9(?:1[23]|69))", "1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[78]|96[2457-9])|477|51[24]|636[2-57-9])|9(?:496|802|9(?:1[23]|69))"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{4})", "$1-$2-$3", ["1(?:[2-46]|5[2-8]|7[2-689]|8[2-7]|9[1-578])|2(?:2[03-689]|3[3-58]|4[0-468]|5[04-8]|6[013-8]|7[06-9]|8[02-57-9]|9[13])|4(?:2[28]|3[689]|6[035-7]|7[05689]|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|[67]|8[14-7]|9[4-9])|7(?:2[15]|3[5-9]|4|6[135-8]|7[0-4689]|9[014-9])|8(?:2[49]|3[3-8]|4[5-8]|5[2-9]|6[35-9]|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9[3-7])", "1(?:[2-46]|5(?:[236-8]|[45][2-69])|7[2-689]|8[2-7]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:[0468][2-9]|5[78]|7[2-4])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|[67]|8[14-7]|9(?:[4-7]|[89][2-8]))|7(?:2[15]|3[5-9]|4|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9[2-8])|3(?:[3-6][2-9]|7[2-6]|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5[4-7]|6[2-9]|8[2-8]|9[236-9])|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3[34]|4[2-69]|[5-7]))", "1(?:[2-46]|5(?:[236-8]|[45][2-69])|7[2-689]|8[2-7]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:[0468][2-9]|5[78]|7[2-4])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|[67]|8[14-7]|9(?:[4-7]|[89][2-8]))|7(?:2[15]|3[5-9]|4|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9(?:20|[3578]|4[04-9]|6[56]))|3(?:[3-6][2-9]|7(?:[2-5]|6[0-59])|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5(?:[467]|5[014-9])|6(?:[2-8]|9[02-69])|8[2-8]|9(?:[236-8]|9[23]))|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3(?:3[02-9]|4[0-24689])|4[2-69]|[5-7]))", "1(?:[2-46]|5(?:[236-8]|[45][2-69])|7[2-689]|8[2-7]|9[1-578])|2(?:2(?:[04-689]|3[23])|3[3-58]|4[0-468]|5(?:[0468][2-9]|5[78]|7[2-4])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|[67]|8[14-7]|9(?:[4-7]|[89][2-8]))|7(?:2[15]|3[5-9]|4|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9(?:20|[3578]|4[04-9]|6(?:5[25]|60)))|3(?:[3-6][2-9]|7(?:[2-5]|6[0-59])|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5(?:[467]|5[014-9])|6(?:[2-8]|9[02-69])|8[2-8]|9(?:[236-8]|9[23]))|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3(?:3[02-9]|4[0-24689])|4[2-69]|[5-7]))"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1-$2-$3", ["1|2(?:2[37]|5[5-9]|64|78|8[39]|91)|4(?:2[2689]|64|7[347])|5[2-589]|60|8(?:2[124589]|3[279]|[46-9])|9(?:[235-8]|93)", "1|2(?:2[37]|5(?:[57]|[68]0|9[19])|64|78|8[39]|917)|4(?:2(?:20|[68]|9[178])|64|7[347])|5[2-589]|60|8(?:2[124589]|3[279]|[46-9])|9(?:[235-8]|93[34])", "1|2(?:2[37]|5(?:[57]|[68]0|9(?:17|99))|64|78|8[39]|917)|4(?:2(?:20|[68]|9[178])|64|7[347])|5[2-589]|60|8(?:2[124589]|3[279]|[46-9])|9(?:[235-8]|93[34])"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{4})", "$1-$2-$3", ["2(?:[34]7|[56]9|74|9[14-79])|82|993"], "0$1"], [null, "(\\d)(\\d{4})(\\d{4})", "$1-$2-$3", ["[36]|4(?:2[09]|7[01])"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1-$2-$3", ["2[2-9]|4|7[235-9]|9[49]"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1-$2-$3", ["800"], "0$1"], [null, "(\\d{2})(\\d{4})(\\d{4})", "$1-$2-$3", ["[2579]|80"], "0$1"]], [null, null, "20\\d{8}", null, null, null, "2012345678", null, null, [10]], null, null, [null, null, "00(?:(?:37|66)\\d{4,11}|777(?:[01]|(?:5|8\\d)\\d)|882[1245]\\d\\d)\\d\\d"], [null, null, "570\\d{6}", null, null, null, "570123456", null, null, [9]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22747 KE: [null, [null, null, "(?:(?:2|80)0\\d?|[4-7]\\d\\d|900)\\d{6}|[4-6]\\d{6,7}", null, null, null, null, null, null, [7, 8, 9, 10]], [null, null, "20\\d{6,7}|(?:4[0-6]|5\\d|6[0-24-9])\\d{7}|(?:4[0245]|6[014-9])\\d{6}|5[1-79]\\d{5,6}|(?:4[245]|6[01457-9])\\d{5}", null, null, null, "202012345", null, null, [7, 8, 9]], [null, null, "7\\d{8}", null, null, null, "712123456", null, null, [9]], [null, null, "800[24-8]\\d{5,6}", null, null, null, "800223456", null, null, [9, 10]], [null, null, "900[02-9]\\d{5}", null, null, null, "900223456", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "KE", 254, "000", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{5,7})", "$1 $2", ["[24-6]"], "0$1"], [null, "(\\d{3})(\\d{6})", "$1 $2", ["7"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[89]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22748 KG: [null, [null, null, "(?:[235-7]\\d|99)\\d{7}|800\\d{6,7}", null, null, null, null, null, null, [9, 10], [5, 6]], [null, null, "(?:3(?:1(?:[256]\\d|3[1-9]|47)|2(?:22|3[0-479]|6[0-7])|4(?:22|5[6-9]|6\\d)|5(?:22|3[4-7]|59|6\\d)|6(?:22|5[35-7]|6\\d)|7(?:22|3[468]|4[1-9]|59|[67]\\d)|9(?:22|4[1-8]|6\\d))|6(?:09|12|2[2-4])\\d)\\d{5}", null, null, null, "312123456", null, null, [9], [5, 6]], [null, null, "(?:2(?:0[0-35]|2\\d)|5[0-24-7]\\d|7(?:[07]\\d|55)|99[69])\\d{6}", null, null, null, "700123456", null, null, [9]], [null, null, "800\\d{6,7}", null, null, null, "800123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "KG", 996, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[25-79]|31[25]"], "0$1"], [null, "(\\d{4})(\\d{5})", "$1 $2", ["3"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d)(\\d{2,3})", "$1 $2 $3 $4", ["8"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22749 KH: [null, [null, null, "1\\d{9}|[1-9]\\d{7,8}", null, null, null, null, null, null, [8, 9, 10], [6, 7]], [null, null, "(?:2(?:3(?:4(?:[2-4]|[56]\\d)|[568]\\d\\d)|[4-6](?:4[56]|[56]\\d)\\d)|(?:3[2-6]|4[2-4]|[5-7][2-5])(?:4[56]|[56]\\d)\\d)\\d{4}|(?:2[3-6]|3[2-6]|4[2-4]|[5-7][2-5])[236-9]\\d{5}", null, null, null, "23756789", null, null, [8, 9], [6, 7]], [null, null, "(?:(?:(?:1[28]|9[67])\\d|8(?:[013-79]|8\\d))\\d|(?:2[3-6]|4[2-4]|[56][2-5])48|3(?:[18]\\d\\d|[2-6]48)|7(?:(?:[07-9]|[16]\\d)\\d|[2-5]48))\\d{5}|(?:1\\d|6[016-9]|9[0-57-9])\\d{6}", null, null, null, "91234567", null, null, [8, 9]], [null, null, "1800(?:1\\d|2[019])\\d{4}", null, null, null, "1800123456", null, null, [10]], [null, null, "1900(?:1\\d|2[09])\\d{4}", null, null, null, "1900123456", null, null, [10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "KH", 855, "00[14-9]", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[1-9]"], "0$1"], [null, "(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["1"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22750 KI: [null, [null, null, "(?:[37]\\d|6[0-79])\\d{6}|(?:[2-48]\\d|50)\\d{3}", null, null, null, null, null, null, [5, 8]], [null, null, "(?:[24]\\d|3[1-9]|50|65(?:02[12]|12[56]|22[89]|[3-5]00)|7(?:27\\d\\d|3100|5(?:02[12]|12[56]|22[89]|[34](?:00|81)|500))|8[0-5])\\d{3}", null, null, null, "31234"], [null, null, "(?:6(?:200[01]|30[01]\\d)|7(?:200[01]|3(?:0[0-5]\\d|140)))\\d{3}", null, null, null, "72001234", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "30(?:0[01]\\d\\d|12(?:11|20))\\d\\d", null, null, null, "30010000", null, null, [8]], "KI", 686, "00", "0", null, null, "0", null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22751 KM: [null, [null, null, "[3478]\\d{6}", null, null, null, null, null, null, [7]], [null, null, "7[4-7]\\d{5}", null, null, null, "7712345"], [null, null, "[34]\\d{6}", null, null, null, "3212345"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "8\\d{6}", null, null, null, "8001234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "KM", 269, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3", ["[3478]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22752 KN: [null, [null, null, "(?:[58]\\d\\d|900)\\d{7}", null, null, null, null, null, null, [10], [7]], [null, null, "869(?:2(?:29|36)|302|4(?:6[015-9]|70))\\d{4}", null, null, null, "8692361234", null, null, null, [7]], [null, null, "869(?:5(?:5[6-8]|6[5-7])|66\\d|76[02-7])\\d{4}", null, null, null, "8697652917", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002123456"], [null, null, "900[2-9]\\d{6}", null, null, null, "9002123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, null, null, null, null, null, null, null, [-1]], "KN", 1, "011", "1", null, null, "1", null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "869", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22753 KP: [null, [null, null, "(?:(?:19\\d|2)\\d|85)\\d{6}", null, null, null, null, null, null, [8, 10], [6, 7]], [null, null, "(?:2\\d|85)\\d{6}", null, null, null, "21234567", null, null, [8], [6, 7]], [null, null, "19[1-3]\\d{7}", null, null, null, "1921234567", null, null, [10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "KP", 850, "00|99", "0", null, null, "0", null, null, null, [[null, "(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["2"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["8"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["1"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "2(?:[0-24-9]\\d\\d|3(?:[0-79]\\d|8[02-9]))\\d{4}", null, null, null, null, null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22754 KR: [null, [null, null, "(?:00[1-9]\\d{2,4}|[12]|5\\d{3})\\d{7}|(?:(?:00|[13-6])\\d|70)\\d{8}|(?:[1-6]\\d|80)\\d{7}|[3-6]\\d{4,5}", null, null, null, null, null, null, [5, 6, 8, 9, 10, 11, 12, 13, 14], [3, 7]], [null, null, "2[1-9]\\d{6,7}|(?:3[1-3]|[46][1-4]|5[1-5])(?:1\\d{2,3}|[1-9]\\d{6,7})", null, null, null, "22123456", null, null, [5, 6, 8, 9, 10], [3, 7]], [null, null, "1[0-26-9]\\d{7,8}", null, null, null, "1000000000", null, null, [9, 10]], [null, null, "(?:00(?:3(?:08|68\\d)|798\\d{1,3})|80\\d)\\d{6}", null, null, null, "801234567", null, null, [9, 11, 12, 13, 14]], [null, null, "60[2-9]\\d{6}", null, null, null, "602345678", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "50\\d{8,9}", null, null, null, "5012345678", null, null, [10, 11]], [null, null, "70\\d{8}", null, null, null, "7012345678", null, null, [10]], "KR", 82, "00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))", "0", null, null, "0(8[1-46-8]|85\\d{2})?", null, null, null, [[null, "(\\d{2})(\\d{3,4})", "$1-$2", ["(?:3[1-3]|[46][1-4]|5[1-5])1"], "0$1", "0$CC-$1"], [null, "(\\d{4})(\\d{4})", "$1-$2", ["1(?:5[246-9]|6[046-8]|8[03579])", "1(?:5(?:22|44|66|77|88|99)|6(?:[07]0|44|6[16]|88)|8(?:00|33|55|77|99))"], "$1", "0$CC-$1"], [null, "(\\d{5})", "$1", ["1[016-9]1", "1[016-9]11", "1[016-9]114"], "0$1", "0$CC-$1"], [null, "(\\d)(\\d{3,4})(\\d{4})", "$1-$2-$3", ["2[1-9]"], "0$1", "0$CC-$1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1-$2-$3", ["60[2-9]|80"], "0$1", "0$CC-$1"], [null, "(\\d{2})(\\d{3,4})(\\d{4})", "$1-$2-$3", ["1[0-25-9]|(?:3[1-3]|[46][1-4]|5[1-5])[1-9]"], "0$1", "0$CC-$1"], [null, "(\\d{2})(\\d{4})(\\d{4})", "$1-$2-$3", ["[57]0"], "0$1", "0$CC-$1"], [null, "(\\d{2})(\\d{5})(\\d{4})", "$1-$2-$3", ["50"], "0$1", "0$CC-$1"], [null, "(\\d{5})(\\d{3})(\\d{3})", "$1 $2 $3", ["003", "0030", "00308"], "$1", "0$CC-$1"], [null, "(\\d{5})(\\d{3,4})(\\d{4})", "$1 $2 $3", ["00[37]", "00(?:36|79)", "00(?:36|79)8"], "$1", "0$CC-$1"], [null, "(\\d{5})(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3 $4", ["007", "0079", "00798"], "$1", "0$CC-$1"]], [[null, "(\\d{2})(\\d{3,4})", "$1-$2", ["(?:3[1-3]|[46][1-4]|5[1-5])1"], "0$1", "0$CC-$1"], [null, "(\\d{4})(\\d{4})", "$1-$2", ["1(?:5[246-9]|6[046-8]|8[03579])", "1(?:5(?:22|44|66|77|88|99)|6(?:[07]0|44|6[16]|88)|8(?:00|33|55|77|99))"], "$1", "0$CC-$1"], [null, "(\\d{5})", "$1", ["1[016-9]1", "1[016-9]11", "1[016-9]114"], "0$1", "0$CC-$1"], [null, "(\\d)(\\d{3,4})(\\d{4})", "$1-$2-$3", ["2[1-9]"], "0$1", "0$CC-$1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1-$2-$3", ["60[2-9]|80"], "0$1", "0$CC-$1"], [null, "(\\d{2})(\\d{3,4})(\\d{4})", "$1-$2-$3", ["1[0-25-9]|(?:3[1-3]|[46][1-4]|5[1-5])[1-9]"], "0$1", "0$CC-$1"], [null, "(\\d{2})(\\d{4})(\\d{4})", "$1-$2-$3", ["[57]0"], "0$1", "0$CC-$1"], [null, "(\\d{2})(\\d{5})(\\d{4})", "$1-$2-$3", ["50"], "0$1", "0$CC-$1"]], [null, null, "15\\d{7,8}", null, null, null, "1523456789", null, null, [9, 10]], null, null, [null, null, "00(?:3(?:08|68\\d)|798\\d{1,3})\\d{6}", null, null, null, null, null, null, [11, 12, 13, 14]], [null, null, "1(?:5(?:22|44|66|77|88|99)|6(?:00|44|6[16]|70|88)|8(?:00|33|55|77|99))\\d{4}", null, null, null, "15441234", null, null, [8]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22755 KW: [null, [null, null, "(?:18|[2569]\\d\\d)\\d{5}", null, null, null, null, null, null, [7, 8]], [null, null, "2(?:[23]\\d\\d|4(?:[1-35-9]\\d|44)|5(?:0[034]|[2-46]\\d|5[1-3]|7[1-7]))\\d{4}", null, null, null, "22345678", null, null, [8]], [null, null, "(?:5(?:(?:[05]\\d|1[0-7]|6[56])\\d|2(?:22|5[25]))|6(?:(?:0[034679]|5[015-9]|6\\d)\\d|222|7(?:0[013-9]|[67]\\d)|9(?:[069]\\d|3[039]))|9(?:(?:0[09]|22|4[01479]|55|6[0679]|8[057-9]|9\\d)\\d|11[01]|7(?:02|[1-9]\\d)))\\d{4}", null, null, null, "50012345", null, null, [8]], [null, null, "18\\d{5}", null, null, null, "1801234", null, null, [7]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "KW", 965, "00", null, null, null, null, null, null, null, [[null, "(\\d{4})(\\d{3,4})", "$1 $2", ["[169]|2(?:[235]|4[1-35-9])|52"]], [null, "(\\d{3})(\\d{5})", "$1 $2", ["[25]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22756 KY: [null, [null, null, "(?:345|[58]\\d\\d|900)\\d{7}", null, null, null, null, null, null, [10], [7]], [null, null, "345(?:2(?:22|44)|444|6(?:23|38|40)|7(?:4[35-79]|6[6-9]|77)|8(?:00|1[45]|25|[48]8)|9(?:14|4[035-9]))\\d{4}", null, null, null, "3452221234", null, null, null, [7]], [null, null, "345(?:32[1-9]|5(?:1[67]|2[5-79]|4[6-9]|50|76)|649|9(?:1[67]|2[2-9]|3[689]))\\d{4}", null, null, null, "3453231234", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002345678"], [null, null, "(?:345976|900[2-9]\\d\\d)\\d{4}", null, null, null, "9002345678"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, null, null, null, null, null, null, null, [-1]], "KY", 1, "011", "1", null, null, "1", null, null, null, null, null, [null, null, "345849\\d{4}", null, null, null, "3458491234"], null, "345", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22757 KZ: [null, [null, null, "(?:33622|(?:7\\d|80)\\d{3})\\d{5}", null, null, null, null, null, null, [10]], [null, null, "(?:33622|7(?:1(?:0(?:[23]\\d|4[0-3]|59|63)|1(?:[23]\\d|4[0-79]|59)|2(?:[23]\\d|59)|3(?:2\\d|3[0-79]|4[0-35-9]|59)|4(?:[24]\\d|3[013-9]|5[1-9])|5(?:2\\d|3[1-9]|4[0-7]|59)|6(?:[2-4]\\d|5[19]|61)|72\\d|8(?:[27]\\d|3[1-46-9]|4[0-5]))|2(?:1(?:[23]\\d|4[46-9]|5[3469])|2(?:2\\d|3[0679]|46|5[12679])|3(?:[2-4]\\d|5[139])|4(?:2\\d|3[1-35-9]|59)|5(?:[23]\\d|4[0-246-8]|59|61)|6(?:2\\d|3[1-9]|4[0-4]|59)|7(?:[2379]\\d|40|5[279])|8(?:[23]\\d|4[0-3]|59)|9(?:2\\d|3[124578]|59))))\\d{5}", null, null, null, "7123456789"], [null, null, "7(?:0[0-2578]|47|6[02-4]|7[15-8]|85)\\d{7}", null, null, null, "7710009998"], [null, null, "800\\d{7}", null, null, null, "8001234567"], [null, null, "809\\d{7}", null, null, null, "8091234567"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "808\\d{7}", null, null, null, "8081234567"], [null, null, "751\\d{7}", null, null, null, "7511234567"], "KZ", 7, "810", "8", null, null, "8", null, "8~10", null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "33|7", [null, null, "751\\d{7}"], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22758 LA: [null, [null, null, "(?:2\\d|3)\\d{8}|(?:[235-8]\\d|41)\\d{6}", null, null, null, null, null, null, [8, 9, 10], [6]], [null, null, "(?:2[13]|[35-7][14]|41|8[1468])\\d{6}", null, null, null, "21212862", null, null, [8], [6]], [null, null, "20(?:2[2389]|5[24-689]|7[6-8]|9[1-35-9])\\d{6}", null, null, null, "2023123456", null, null, [10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "LA", 856, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["2[13]|3[14]|[4-8]"], "0$1"], [null, "(\\d{2})(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3 $4", ["3"], "0$1"], [null, "(\\d{2})(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["2"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "30\\d{7}", null, null, null, "301234567", null, null, [9]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22759 LB: [null, [null, null, "[7-9]\\d{7}|[13-9]\\d{6}", null, null, null, null, null, null, [7, 8]], [null, null, "(?:(?:[14-69]\\d|8[02-9])\\d|7(?:[2-57]\\d|62|8[0-7]|9[04-9]))\\d{4}", null, null, null, "1123456", null, null, [7]], [null, null, "(?:(?:3|81)\\d|7(?:[01]\\d|6[013-9]|8[89]|9[1-3]))\\d{5}", null, null, null, "71123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "9[01]\\d{6}", null, null, null, "90123456", null, null, [8]], [null, null, "80\\d{6}", null, null, null, "80123456", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "LB", 961, "00", "0", null, null, "0", null, null, null, [[null, "(\\d)(\\d{3})(\\d{3})", "$1 $2 $3", ["[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[7-9]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22760 LC: [null, [null, null, "(?:[58]\\d\\d|758|900)\\d{7}", null, null, null, null, null, null, [10], [7]], [null, null, "758(?:4(?:30|5\\d|6[2-9]|8[0-2])|57[0-2]|638)\\d{4}", null, null, null, "7584305678", null, null, null, [7]], [null, null, "758(?:28[4-7]|384|4(?:6[01]|8[4-9])|5(?:1[89]|20|84)|7(?:1[2-9]|2\\d|3[01]))\\d{4}", null, null, null, "7582845678", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002123456"], [null, null, "900[2-9]\\d{6}", null, null, null, "9002123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, null, null, null, null, null, null, null, [-1]], "LC", 1, "011", "1", null, null, "1", null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "758", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22761 LI: [null, [null, null, "(?:(?:[2378]|6\\d\\d)\\d|90)\\d{5}", null, null, null, null, null, null, [7, 9]], [null, null, "(?:2(?:01|1[27]|3\\d|6[02-578]|96)|3(?:7[0135-7]|8[048]|9[0269]))\\d{4}", null, null, null, "2345678", null, null, [7]], [null, null, "(?:6(?:5(?:09|1\\d|20)|6(?:0[0-6]|10|2[06-9]|39))\\d|7(?:[37-9]\\d|42|56))\\d{4}", null, null, null, "660234567"], [null, null, "80(?:02[28]|9\\d\\d)\\d\\d", null, null, null, "8002222", null, null, [7]], [null, null, "90(?:02[258]|1(?:23|3[14])|66[136])\\d\\d", null, null, null, "9002222", null, null, [7]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "LI", 423, "00", "0", null, null, "0|(10(?:01|20|66))", null, null, null, [[null, "(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3", ["[237-9]"], null, "$CC $1"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["6[56]"], null, "$CC $1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["6"], null, "$CC $1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "870(?:28|87)\\d\\d", null, null, null, "8702812", null, null, [7]], null, null, [null, null, "697(?:42|56|[78]\\d)\\d{4}", null, null, null, "697861234", null, null, [9]]], 22762 LK: [null, [null, null, "(?:[1-7]\\d|[89]1)\\d{7}", null, null, null, null, null, null, [9], [7]], [null, null, "(?:[189]1|2[13-7]|3[1-8]|4[157]|5[12457]|6[35-7])[2-57]\\d{6}", null, null, null, "112345678", null, null, null, [7]], [null, null, "7[0-25-8]\\d{7}", null, null, null, "712345678"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "LK", 94, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[1-689]"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["7"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "1973\\d{5}", null, null, null, "197312345"], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22763 LR: [null, [null, null, "(?:[25]\\d|33|77|88)\\d{7}|(?:2\\d|[45])\\d{6}", null, null, null, null, null, null, [7, 8, 9]], [null, null, "(?:2\\d{3}|33333)\\d{4}", null, null, null, "21234567", null, null, [8, 9]], [null, null, "(?:(?:(?:20|77|88)\\d|330|555)\\d|4[67])\\d{5}|5\\d{6}", null, null, null, "770123456", null, null, [7, 9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "332(?:02|[34]\\d)\\d{4}", null, null, null, "332021234", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "LR", 231, "00", "0", null, null, "0", null, null, null, [[null, "(\\d)(\\d{3})(\\d{3})", "$1 $2 $3", ["[45]"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["2"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[23578]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22764 LS: [null, [null, null, "(?:[256]\\d\\d|800)\\d{5}", null, null, null, null, null, null, [8]], [null, null, "2\\d{7}", null, null, null, "22123456"], [null, null, "[56]\\d{7}", null, null, null, "50123456"], [null, null, "800[256]\\d{4}", null, null, null, "80021234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "LS", 266, "00", null, null, null, null, null, null, null, [[null, "(\\d{4})(\\d{4})", "$1 $2", ["[2568]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22765 LT: [null, [null, null, "(?:[3469]\\d|52|[78]0)\\d{6}", null, null, null, null, null, null, [8]], [null, null, "(?:3[1478]|4[124-6]|52)\\d{6}", null, null, null, "31234567"], [null, null, "6\\d{7}", null, null, null, "61234567"], [null, null, "800\\d{5}", null, null, null, "80012345"], [null, null, "9(?:0[0239]|10)\\d{5}", null, null, null, "90012345"], [null, null, "808\\d{5}", null, null, null, "80812345"], [null, null, "700\\d{5}", null, null, null, "70012345"], [null, null, null, null, null, null, null, null, null, [-1]], "LT", 370, "00", "8", null, null, "[08]", null, null, null, [[null, "(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["52[0-79]"], "(8-$1)", null, 1], [null, "(\\d{2})(\\d{6})", "$1 $2", ["37|4(?:[15]|6[1-8])"], "(8-$1)", null, 1], [null, "(\\d{3})(\\d{5})", "$1 $2", ["[3-6]"], "(8-$1)", null, 1], [null, "(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["[7-9]"], "8 $1", null, 1]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "70[67]\\d{5}", null, null, null, "70712345"], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22766 LU: [null, [null, null, "[2457-9]\\d{3,10}|3(?:[0-46-9]\\d{2,9}|5(?:[013-9]\\d{1,8}|2\\d{1,3}))|6\\d{8}", null, null, null, null, null, null, [4, 5, 6, 7, 8, 9, 10, 11]], [null, null, "(?:(?:2[2-9]|[457]\\d)\\d|3(?:[0-46-9]\\d|5[013-9])|8(?:0[2-9]|[13-9]\\d)|9(?:0[89]|[2-579]\\d))\\d{1,8}", null, null, null, "27123456"], [null, null, "6(?:[269][18]|5[158]|7[189]|81)\\d{6}", null, null, null, "628123456", null, null, [9]], [null, null, "800\\d{5}", null, null, null, "80012345", null, null, [8]], [null, null, "90[015]\\d{5}", null, null, null, "90012345", null, null, [8]], [null, null, "801\\d{5}", null, null, null, "80112345", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "20(?:1\\d{5}|[2-689]\\d{1,7})", null, null, null, "20201234", null, null, [4, 5, 6, 7, 8, 9, 10]], "LU", 352, "00", null, null, null, "(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\d)", null, null, null, [[null, "(\\d{2})(\\d{3})", "$1 $2", ["2(?:0[2-689]|[2-9])|3(?:[0-46-9]|5[013-9])|[457]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"], null, "$CC $1"], [null, "(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3", ["2(?:0[2-689]|[2-9])|3(?:[0-46-9]|5[013-9])|[457]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"], null, "$CC $1"], [null, "(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3", ["20[2-689]"], null, "$CC $1"], [null, "(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})", "$1 $2 $3 $4", ["2(?:0[1-689]|[367]|4[3-8])"], null, "$CC $1"], [null, "(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["80[01]|90[015]"], null, "$CC $1"], [null, "(\\d{2})(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3 $4", ["20[2-689]"], null, "$CC $1"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["6"], null, "$CC $1"], [null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})", "$1 $2 $3 $4 $5", ["2(?:0[2-689]|[367]|4[3-8])"], null, "$CC $1"], [null, "(\\d{2})(\\d{2})(\\d{2})(\\d{1,5})", "$1 $2 $3 $4", ["2[2-9]|3(?:[0-46-9]|5[013-9])|[457]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"], null, "$CC $1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22767 LV: [null, [null, null, "(?:[268]\\d|90)\\d{6}", null, null, null, null, null, null, [8]], [null, null, "6\\d{7}", null, null, null, "63123456"], [null, null, "2\\d{7}", null, null, null, "21234567"], [null, null, "80\\d{6}", null, null, null, "80123456"], [null, null, "90\\d{6}", null, null, null, "90123456"], [null, null, "81\\d{6}", null, null, null, "81123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "LV", 371, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[269]|8[01]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22768 LY: [null, [null, null, "(?:[2569]\\d|71)\\d{7}", null, null, null, null, null, null, [9], [7]], [null, null, "(?:2[13-5]|5[1347]|6[1-479]|71)\\d{7}", null, null, null, "212345678", null, null, null, [7]], [null, null, "9[1-6]\\d{7}", null, null, null, "912345678"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "LY", 218, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{7})", "$1-$2", ["[25-79]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22769 MA: [null, [null, null, "[5-8]\\d{8}", null, null, null, null, null, null, [9]], [null, null, "5(?:2(?:[015-79]\\d|2[02-9]|3[2-57]|4[2-8]|8[235-7])|3(?:[0-48]\\d|[57][2-9]|6[2-8]|9[3-9])|(?:4[067]|5[03])\\d)\\d{5}", null, null, null, "520123456"], [null, null, "(?:6(?:[0-79]\\d|8[0-247-9])|7(?:0[067]|6[1267]|7[017]))\\d{6}", null, null, null, "650123456"], [null, null, "80\\d{7}", null, null, null, "801234567"], [null, null, "89\\d{7}", null, null, null, "891234567"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5924[01]\\d{4}", null, null, null, "592401234"], "MA", 212, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d{6})", "$1-$2", ["5(?:2[015-7]|3[0-4])|[67]"], "0$1"], [null, "(\\d{4})(\\d{5})", "$1-$2", ["5(?:2[2-489]|3[5-9]|9)|892", "5(?:2(?:[2-48]|9[0-7])|3(?:[5-79]|8[0-7])|9)|892"], "0$1"], [null, "(\\d{5})(\\d{4})", "$1-$2", ["5[23]"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["5"], "0$1"], [null, "(\\d{2})(\\d{7})", "$1-$2", ["8"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], 1, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22770 MC: [null, [null, null, "(?:(?:[349]|6\\d)\\d\\d|870)\\d{5}", null, null, null, null, null, null, [8, 9]], [null, null, "(?:870|9[2-47-9]\\d)\\d{5}", null, null, null, "99123456", null, null, [8]], [null, null, "(?:(?:3|6\\d)\\d\\d|4(?:4\\d|5[1-9]))\\d{5}", null, null, null, "612345678"], [null, null, "90\\d{6}", null, null, null, "90123456", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "MC", 377, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d{3})(\\d{2})", "$1 $2 $3", ["8"]], [null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[39]"]], [null, "(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["4"], "0$1"], [null, "(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4 $5", ["6"], "0$1"]], [[null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[39]"]], [null, "(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["4"], "0$1"], [null, "(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4 $5", ["6"], "0$1"]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "870\\d{5}", null, null, null, null, null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22771 MD: [null, [null, null, "(?:[235-7]\\d|[89]0)\\d{6}", null, null, null, null, null, null, [8]], [null, null, "(?:(?:2[1-9]|3[1-79])\\d|5(?:33|5[257]))\\d{5}", null, null, null, "22212345"], [null, null, "(?:562|6\\d\\d|7(?:[189]\\d|6[07]|7[457-9]))\\d{5}", null, null, null, "62112345"], [null, null, "800\\d{5}", null, null, null, "80012345"], [null, null, "90[056]\\d{5}", null, null, null, "90012345"], [null, null, "808\\d{5}", null, null, null, "80812345"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "3[08]\\d{6}", null, null, null, "30123456"], "MD", 373, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["22|3"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["[25-7]"], "0$1"], [null, "(\\d{3})(\\d{5})", "$1 $2", ["[89]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "803\\d{5}", null, null, null, "80312345"], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22772 ME: [null, [null, null, "(?:20|[3-79]\\d|80\\d?)\\d{6}", null, null, null, null, null, null, [8, 9], [6]], [null, null, "(?:20[2-8]|3(?:[0-2][2-7]|3[24-7])|4(?:0[2-467]|1[2467])|5(?:[01][2467]|2[2-467]))\\d{5}", null, null, null, "30234567", null, null, [8], [6]], [null, null, "6(?:00|3[024]|6[0-25]|[7-9]\\d)\\d{5}", null, null, null, "67622901", null, null, [8]], [null, null, "80(?:[0-2578]|9\\d)\\d{5}", null, null, null, "80080002"], [null, null, "9(?:4[1568]|5[178])\\d{5}", null, null, null, "94515151", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "78[1-49]\\d{5}", null, null, null, "78108780", null, null, [8]], "ME", 382, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[2-9]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "77[1-9]\\d{5}", null, null, null, "77273012", null, null, [8]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22773 MF: [null, [null, null, "(?:590|69\\d)\\d{6}", null, null, null, null, null, null, [9]], [null, null, "590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\d{4}", null, null, null, "590271234"], [null, null, "69(?:0\\d\\d|1(?:2[29]|3[0-5]))\\d{4}", null, null, null, "690001234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "MF", 590, "00", "0", null, null, "0", null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22774 MG: [null, [null, null, "[23]\\d{8}", null, null, null, null, null, null, [9], [7]], [null, null, "20(?:(?:2\\d|4[47]|5[3467]|6[279]|8[268]|9[245])\\d|7(?:2[29]|[35]\\d))\\d{4}", null, null, null, "202123456", null, null, null, [7]], [null, null, "3[2-49]\\d{7}", null, null, null, "321234567"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "22\\d{7}", null, null, null, "221234567"], "MG", 261, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{3})(\\d{2})", "$1 $2 $3 $4", ["[23]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22775 MH: [null, [null, null, "(?:(?:[256]\\d|45)\\d|329)\\d{4}", null, null, null, null, null, null, [7]], [null, null, "(?:247|528|625)\\d{4}", null, null, null, "2471234"], [null, null, "(?:(?:23|54)5|329|45[56])\\d{4}", null, null, null, "2351234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "635\\d{4}", null, null, null, "6351234"], "MH", 692, "011", "1", null, null, "1", null, null, null, [[null, "(\\d{3})(\\d{4})", "$1-$2", ["[2-6]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22776 MK: [null, [null, null, "[2-578]\\d{7}", null, null, null, null, null, null, [8], [6, 7]], [null, null, "(?:2(?:[23]\\d|5[0-24578]|6[01]|82)|3(?:1[3-68]|[23][2-68]|4[23568])|4(?:[23][2-68]|4[3-68]|5[2568]|6[25-8]|7[24-68]|8[4-68]))\\d{5}", null, null, null, "22012345", null, null, null, [6, 7]], [null, null, "7(?:(?:[0-25-8]\\d|3[2-4]|9[23])\\d|421)\\d{4}", null, null, null, "72345678"], [null, null, "800\\d{5}", null, null, null, "80012345"], [null, null, "5[02-9]\\d{6}", null, null, null, "50012345"], [null, null, "8(?:0[1-9]|[1-9]\\d)\\d{5}", null, null, null, "80123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "MK", 389, "00", "0", null, null, "0", null, null, null, [[null, "(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["2"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[347]"], "0$1"], [null, "(\\d{3})(\\d)(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[58]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22777 ML: [null, [null, null, "(?:[246-9]\\d|50)\\d{6}", null, null, null, null, null, null, [8]], [null, null, "(?:2(?:0(?:2\\d|7[0-8])|1(?:2[67]|[4-689]\\d))|4(?:0[0-4]|4[1-39])\\d)\\d{4}", null, null, null, "20212345"], [null, null, "(?:2(?:079|17\\d)|(?:50|[679]\\d|8[239])\\d\\d)\\d{4}", null, null, null, "65012345"], [null, null, "80\\d{6}", null, null, null, "80012345"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "ML", 223, "00", null, null, null, null, null, null, null, [[null, "(\\d{4})", "$1", ["67[057-9]|74[045]", "67(?:0[09]|[59]9|77|8[89])|74(?:0[02]|44|55)"]], [null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[24-79]|8[0239]"]]], [[null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[24-79]|8[0239]"]]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "80\\d{6}"], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22778 MM: [null, [null, null, "(?:1|[24-7]\\d)\\d{5,7}|8\\d{6,9}|9(?:[0-46-9]\\d{6,8}|5\\d{6})|2\\d{5}", null, null, null, null, null, null, [6, 7, 8, 9, 10], [5]], [null, null, "(?:1(?:(?:2\\d|3[56]|[89][0-6])\\d|4(?:2[2-469]|39|6[25]|7[01])|6)|2(?:2(?:00|8[34])|4(?:0\\d|2[246]|39|62|7[01])|51\\d\\d)|4(?:2(?:2\\d\\d|480)|3(?:20\\d|470|56)|420\\d|5470)|5(?:2(?:2\\d\\d?|470)|4(?:2(?:1|86)|470)|522\\d|7(?:20\\d|480)|[89](?:20\\d|470))|6(?:0(?:[23]|88\\d)|(?:124|42[04]|[56]2\\d)\\d|3(?:20\\d|470)|7(?:(?:3\\d|8[01459])\\d|4(?:39|[67]0)))|7(?:0470|1(?:20\\d?|470)|4(?:25\\d|470)|5(?:202|470|96\\d))|8(?:[13](?:2\\d\\d|470)|[25]2\\d\\d))\\d{4}|(?:(?:1[2-6]\\d|4(?:2[24-8]|3[2-7]|[46][2-6]|5[3-5])|5(?:[27][2-8]|3[2-68]|4[24-8]|5[23]|6[2-4]|8[24-7]|9[2-7])|6(?:[19]20|42[03-6]|(?:52|7[45])\\d)|7(?:[04][24-8]|[15][2-7]|22|3[2-4]))\\d|25\\d{2,3}|8(?:[135]2\\d\\d|2(?:2\\d\\d|320)))\\d{3}|(?:2[2-9]|6(?:1[2356]|[24][2-6]|3[24-6]|5[2-4]|6[2-8]|7[235-7]|8[245]|9[24])|8(?:1[2-689]|2[2-8]|3[24]|4[24-7]|5[245]|6[23]))\\d{4}", null, null, null, "1234567", null, null, [6, 7, 8, 9], [5]], [null, null, "(?:17[01]|9(?:2(?:[0-4]|(?:5\\d|6[0-5])\\d)|(?:3(?:[0-36]|4[069])|[68]9\\d|7(?:3|5[0-2]|[6-9]\\d))\\d|4(?:(?:0[0-4]|[1379]|[25]\\d|4[0-589])\\d|88)|5[0-6]|9(?:[089]|[5-7]\\d\\d))\\d)\\d{4}|9[69]1\\d{6}|9[68]\\d{6}", null, null, null, "92123456", null, null, [7, 8, 9, 10]], [null, null, "80080(?:[01][1-9]|2\\d)\\d{3}", null, null, null, "8008001234", null, null, [10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:1(?:333|468)|2468)\\d{4}", null, null, null, "13331234", null, null, [8]], "MM", 95, "00", "0", null, null, "0", null, null, null, [[null, "(\\d)(\\d{2})(\\d{3})", "$1 $2 $3", ["16|2"], "0$1"], [null, "(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3", ["[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]"], "0$1"], [null, "(\\d)(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[12]"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[4-7]|8[1-35]"], "0$1"], [null, "(\\d)(\\d{3})(\\d{4,6})", "$1 $2 $3", ["9(?:2[0-4]|[35-9]|4[137-9])"], "0$1"], [null, "(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["2"], "0$1"], [null, "(\\d)(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["92"], "0$1"], [null, "(\\d)(\\d{5})(\\d{4})", "$1 $2 $3", ["9"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["8"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22779 MN: [null, [null, null, "[12]\\d{8,9}|[1257-9]\\d{7}", null, null, null, null, null, null, [8, 9, 10], [4, 5, 6]], [null, null, "(?:[12](?:1|2[1-37]|(?:3[2-8]|4[2-68]|5[1-4689])\\d?)|5[0568])\\d{6}|[12]2[1-3]\\d{5}", null, null, null, "50123456", null, null, null, [4, 5, 6]], [null, null, "(?:8(?:[05689]\\d|3[01])|9[013-9]\\d)\\d{5}", null, null, null, "88123456", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "7[05-8]\\d{6}", null, null, null, "75123456", null, null, [8]], "MN", 976, "001", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{4})", "$1 $2 $3", ["[12]1"], "0$1"], [null, "(\\d{4})(\\d{4})", "$1 $2", ["[57-9]"]], [null, "(\\d{3})(\\d{5,6})", "$1 $2", ["[12]2[1-3]"], "0$1"], [null, "(\\d{4})(\\d{5,6})", "$1 $2", ["[12](?:27|3[2-8]|4[2-68]|5[1-4689])", "[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]"], "0$1"], [null, "(\\d{5})(\\d{4,5})", "$1 $2", ["[12]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22780 MO: [null, [null, null, "(?:28|[68]\\d)\\d{6}", null, null, null, null, null, null, [8]], [null, null, "(?:28[2-57-9]|8(?:11|[2-57-9]\\d))\\d{5}", null, null, null, "28212345"], [null, null, "6(?:[2356]\\d\\d|8(?:[02][5-9]|[1478]\\d|[356][0-4]))\\d{4}", null, null, null, "66123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "MO", 853, "00", null, null, null, null, null, null, null, [[null, "(\\d{4})(\\d{4})", "$1 $2", ["[268]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22781 MP: [null, [null, null, "(?:[58]\\d\\d|(?:67|90)0)\\d{7}", null, null, null, null, null, null, [10], [7]], [null, null, "670(?:2(?:3[3-7]|56|8[5-8])|32[1-38]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\d{4}", null, null, null, "6702345678", null, null, null, [7]], [null, null, "670(?:2(?:3[3-7]|56|8[5-8])|32[1-38]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\d{4}", null, null, null, "6702345678", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002123456"], [null, null, "900[2-9]\\d{6}", null, null, null, "9002123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, null, null, null, null, null, null, null, [-1]], "MP", 1, "011", "1", null, null, "1", null, null, 1, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "670", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22782 MQ: [null, [null, null, "(?:596|69\\d)\\d{6}", null, null, null, null, null, null, [9]], [null, null, "596(?:0[0-7]|10|2[7-9]|3[05-9]|4[0-46-8]|[5-7]\\d|8[09]|9[4-8])\\d{4}", null, null, null, "596301234"], [null, null, "69(?:6(?:[0-47-9]\\d|5[0-6]|6[0-4])|727)\\d{4}", null, null, null, "696201234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "MQ", 596, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[56]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22783 MR: [null, [null, null, "(?:[2-4]\\d\\d|800)\\d{5}", null, null, null, null, null, null, [8]], [null, null, "(?:25[08]|35\\d|45[1-7])\\d{5}", null, null, null, "35123456"], [null, null, "[2-4][0-46-9]\\d{6}", null, null, null, "22123456"], [null, null, "800\\d{5}", null, null, null, "80012345"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "MR", 222, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2-48]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22784 MS: [null, [null, null, "(?:(?:[58]\\d\\d|900)\\d\\d|66449)\\d{5}", null, null, null, null, null, null, [10], [7]], [null, null, "664491\\d{4}", null, null, null, "6644912345", null, null, null, [7]], [null, null, "66449[2-6]\\d{4}", null, null, null, "6644923456", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002123456"], [null, null, "900[2-9]\\d{6}", null, null, null, "9002123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, null, null, null, null, null, null, null, [-1]], "MS", 1, "011", "1", null, null, "1", null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "664", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22785 MT: [null, [null, null, "(?:(?:[2579]\\d\\d|800)\\d|3550)\\d{4}", null, null, null, null, null, null, [8]], [null, null, "2(?:0(?:[169]\\d|3[1-4])|[1-357]\\d\\d)\\d{4}", null, null, null, "21001234"], [null, null, "(?:7(?:210|[79]\\d\\d)|9(?:2(?:1[01]|31)|69[67]|8(?:1[1-3]|89|97)|9\\d\\d))\\d{4}", null, null, null, "96961234"], [null, null, "800[3467]\\d{4}", null, null, null, "80071234"], [null, null, "5(?:0(?:0(?:37|43)|(?:6\\d|70|9[0168])\\d)|[12]\\d0[1-5])\\d{3}", null, null, null, "50037123"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "3550\\d{4}", null, null, null, "35501234"], "MT", 356, "00", null, null, null, null, null, null, null, [[null, "(\\d{4})(\\d{4})", "$1 $2", ["[2357-9]"]]], null, [null, null, "7117\\d{4}", null, null, null, "71171234"], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "501\\d{5}", null, null, null, "50112345"], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22786 MU: [null, [null, null, "(?:[2-468]|5\\d)\\d{6}", null, null, null, null, null, null, [7, 8]], [null, null, "(?:2(?:[03478]\\d|1[0-7]|6[0-79])|4(?:[013568]\\d|2[4-7])|54(?:4\\d|71)|6\\d\\d|8(?:14|3[129]))\\d{4}", null, null, null, "54480123"], [null, null, "5(?:(?:2[589]|7\\d|9[0-8])\\d|4(?:2[1-389]|[489]\\d|7[1-9])|8(?:[0-689]\\d|7[15-8]))\\d{4}", null, null, null, "52512345", null, null, [8]], [null, null, "80[0-2]\\d{4}", null, null, null, "8001234", null, null, [7]], [null, null, "30\\d{5}", null, null, null, "3012345", null, null, [7]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "3(?:20|9\\d)\\d{4}", null, null, null, "3201234", null, null, [7]], "MU", 230, "0(?:0|[24-7]0|3[03])", null, null, null, null, null, "020", null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["[2-46]|8(?:0[0-2]|14|3[129])"]], [null, "(\\d{4})(\\d{4})", "$1 $2", ["5"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22787 MV: [null, [null, null, "(?:800|9[0-57-9]\\d)\\d{7}|[34679]\\d{6}", null, null, null, null, null, null, [7, 10]], [null, null, "(?:3(?:0[0-3]|3[0-59])|6(?:[57][02468]|6[024-68]|8[024689]))\\d{4}", null, null, null, "6701234", null, null, [7]], [null, null, "(?:46[46]|(?:7[2-9]|9[14-9])\\d)\\d{4}", null, null, null, "7712345", null, null, [7]], [null, null, "800\\d{7}", null, null, null, "8001234567", null, null, [10]], [null, null, "900\\d{7}", null, null, null, "9001234567", null, null, [10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "MV", 960, "0(?:0|19)", null, null, null, null, null, "00", null, [[null, "(\\d{3})(\\d{4})", "$1-$2", ["[367]|4(?:00|[56])|9[14-9]"]], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["[89]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "4[05]0\\d{4}", null, null, null, "4001234", null, null, [7]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22788 MW: [null, [null, null, "1\\d{6}(?:\\d{2})?|(?:[23]1|77|88|99)\\d{7}", null, null, null, null, null, null, [7, 9]], [null, null, "(?:1[2-9]|21\\d\\d)\\d{5}", null, null, null, "1234567"], [null, null, "(?:111|(?:77|88|99)\\d)\\d{6}", null, null, null, "991234567", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "31\\d{7}", null, null, null, "310123456", null, null, [9]], "MW", 265, "00", "0", null, null, "0", null, null, null, [[null, "(\\d)(\\d{3})(\\d{3})", "$1 $2 $3", ["1[2-9]"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["2"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[17-9]"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["3"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22789 MX: [null, [null, null, "(?:1\\d|[2-9])\\d{9}", null, null, null, null, null, null, [10, 11], [7, 8]], [null, null, "(?:2(?:0[01]|2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-7][1-9]|3[1-8]|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))\\d{7}", null, null, null, "2221234567", null, null, [10], [7, 8]], [null, null, "1(?:2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-7][1-9]|3[1-8]|8[1-35-9]|9[2-689])|5(?:[56]\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))\\d{7}", null, null, null, "12221234567", null, null, [11]], [null, null, "8(?:00|88)\\d{7}", null, null, null, "8001234567", null, null, [10]], [null, null, "900\\d{7}", null, null, null, "9001234567", null, null, [10]], [null, null, "300\\d{7}", null, null, null, "3001234567", null, null, [10]], [null, null, "500\\d{7}", null, null, null, "5001234567", null, null, [10]], [null, null, null, null, null, null, null, null, null, [-1]], "MX", 52, "0[09]", "01", null, null, "0[12]|04[45]([2-9]\\d{9})$", "1$1", "00", null, [[null, "(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["33|5[56]|81"], "01 $1", null, 1], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["[2-9]"], "01 $1", null, 1], [null, "(\\d)(\\d{2})(\\d{4})(\\d{4})", "$2 $3 $4", ["1(?:33|5[56]|81)"], "044 $1"], [null, "(\\d)(\\d{3})(\\d{3})(\\d{4})", "$2 $3 $4", ["1"], "044 $1"]], [[null, "(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["33|5[56]|81"], "01 $1", null, 1], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["[2-9]"], "01 $1", null, 1], [null, "(\\d)(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3 $4", ["1(?:33|5[56]|81)"]], [null, "(\\d)(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3 $4", ["1"]]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22790 MY: [null, [null, null, "(?:1\\d\\d?|3\\d|[4-9])\\d{7}", null, null, null, null, null, null, [8, 9, 10], [6, 7]], [null, null, "(?:3(?:2[0-36-9]|3[0-368]|4[0-278]|5[0-24-8]|6[0-467]|7[1246-9]|8\\d|9[0-57])\\d|4(?:2[0-689]|[3-79]\\d|8[1-35689])|5(?:2[0-589]|[3468]\\d|5[0-489]|7[1-9]|9[23])|6(?:2[2-9]|3[1357-9]|[46]\\d|5[0-6]|7[0-35-9]|85|9[015-8])|7(?:[2579]\\d|3[03-68]|4[0-8]|6[5-9]|8[0-35-9])|8(?:[24][2-8]|3[2-5]|5[2-7]|6[2-589]|7[2-578]|[89][2-9])|9(?:0[57]|13|[25-7]\\d|[3489][0-8]))\\d{5}", null, null, null, "323856789", null, null, [8, 9], [6, 7]], [null, null, "1(?:(?:0(?:[23568]\\d|4[0-6]|7[016-9]|9[0-8])|1(?:[1-5]\\d\\d|6(?:0[5-9]|[1-9]\\d))|(?:[23679][2-9]|59\\d)\\d)\\d|4(?:[235-9]\\d\\d|400)|8(?:(?:1[23]|[236]\\d|5[7-9]|7[016-9]|9[0-8])\\d|4(?:[06]\\d|7[0-4])|8(?:[01]\\d|[27][0-4])))\\d{4}", null, null, null, "123456789", null, null, [9, 10]], [null, null, "1[378]00\\d{6}", null, null, null, "1300123456", null, null, [10]], [null, null, "1600\\d{6}", null, null, null, "1600123456", null, null, [10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "154(?:6(?:0\\d|1[0-3])|8(?:[25]1|4[0189]|7[0-4679]))\\d{4}", null, null, null, "1546012345", null, null, [10]], "MY", 60, "00", "0", null, null, "0", null, null, null, [[null, "(\\d)(\\d{3})(\\d{4})", "$1-$2 $3", ["[4-79]"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{3,4})", "$1-$2 $3", ["1(?:[0249]|[367][2-9]|8[1-9])|8"], "0$1"], [null, "(\\d)(\\d{4})(\\d{4})", "$1-$2 $3", ["3"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1-$2 $3", ["15"], "0$1"], [null, "(\\d{2})(\\d{4})(\\d{4})", "$1-$2 $3", ["11"], "0$1"], [null, "(\\d)(\\d{3})(\\d{2})(\\d{4})", "$1-$2-$3-$4", ["1"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22791 MZ: [null, [null, null, "(?:2|8\\d)\\d{7}", null, null, null, null, null, null, [8, 9]], [null, null, "2(?:[1346]\\d|5[0-2]|[78][12]|93)\\d{5}", null, null, null, "21123456", null, null, [8]], [null, null, "8[2-7]\\d{7}", null, null, null, "821234567", null, null, [9]], [null, null, "800\\d{6}", null, null, null, "800123456", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "MZ", 258, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["2|8[2-7]"]], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["8"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22792 NA: [null, [null, null, "[68]\\d{7,8}", null, null, null, null, null, null, [8, 9]], [null, null, "6(?:1(?:[02-4]\\d\\d|17)|2(?:17|54\\d|69|70)|3(?:17|2[0237]\\d|34|6[289]|7[01]|81)|4(?:17|(?:27|41|5[25])\\d|69|7[01])|5(?:17|2[236-8]\\d|69|7[01])|6(?:17|26\\d|38|42|69|7[01])|7(?:17|(?:2[2-4]|30)\\d|6[89]|7[01]))\\d{4}|6(?:1(?:2[2-7]|3[01378]|4[0-4]|69|7[014])|25[0-46-8]|32\\d|4(?:2[0-27]|4[016]|5[0-357])|52[02-9]|62[56]|7(?:2[2-69]|3[013]))\\d{4}", null, null, null, "61221234"], [null, null, "(?:60|8[1245])\\d{7}", null, null, null, "811234567", null, null, [9]], [null, null, "80\\d{7}", null, null, null, "800123456", null, null, [9]], [null, null, "8701\\d{5}", null, null, null, "870123456", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "8(?:3\\d\\d|86)\\d{5}", null, null, null, "88612345"], "NA", 264, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["88"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["6"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["8[0-5]"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["8"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22793 NC: [null, [null, null, "[2-57-9]\\d{5}", null, null, null, null, null, null, [6]], [null, null, "(?:2[03-9]|3[0-5]|4[1-7]|88)\\d{4}", null, null, null, "201234"], [null, null, "(?:5[0-4]|[79]\\d|8[0-79])\\d{4}", null, null, null, "751234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "36\\d{4}", null, null, null, "366711"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "NC", 687, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{2})", "$1.$2.$3", ["[247-9]|3[0-6]|5[0-4]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22794 NE: [null, [null, null, "[0289]\\d{7}", null, null, null, null, null, null, [8]], [null, null, "2(?:0(?:20|3[1-7]|4[13-5]|5[14]|6[14578]|7[1-578])|1(?:4[145]|5[14]|6[14-68]|7[169]|88))\\d{4}", null, null, null, "20201234"], [null, null, "(?:8[04589]|9\\d)\\d{6}", null, null, null, "93123456"], [null, null, "08\\d{6}", null, null, null, "08123456"], [null, null, "09\\d{6}", null, null, null, "09123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "NE", 227, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["09|2[01]|8[04589]|9"]], [null, "(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["0"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22795 NF: [null, [null, null, "[13]\\d{5}", null, null, null, null, null, null, [6], [5]], [null, null, "(?:1(?:06|17|28|39)|3[0-2]\\d)\\d{3}", null, null, null, "106609", null, null, null, [5]], [null, null, "3[58]\\d{4}", null, null, null, "381234", null, null, null, [5]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "NF", 672, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{4})", "$1 $2", ["1"]], [null, "(\\d)(\\d{5})", "$1 $2", ["3"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22796 NG: [null, [null, null, "[78]\\d{10,13}|[7-9]\\d{9}|[1-9]\\d{7}|[124-7]\\d{6}", null, null, null, null, null, null, [7, 8, 10, 11, 12, 13, 14], [5, 6]], [null, null, "(?:(?:[1-356]\\d|4[02-8]|7[0-79]|8[2-9])\\d|9(?:0[3-9]|[1-9]\\d))\\d{5}|(?:[12]\\d|4[147]|5[14579]|6[1578]|7[0-3578])\\d{5}", null, null, null, "18040123", null, null, [7, 8], [5, 6]], [null, null, "(?:1(?:(?:7[34]|95)\\d|8(?:04|[124579]\\d|8[0-3]))|287[0-7]|3(?:18[1-8]|88[0-7]|9(?:6[1-5]|8[5-9]))|4(?:[28]8[0-2]|6(?:7[1-9]|8[02-47]))|5(?:2(?:7[7-9]|8\\d)|38[1-79]|48[0-7]|68[4-7])|6(?:2(?:7[7-9]|8\\d)|4(?:3[7-9]|[68][129]|7[04-69]|9[1-8])|58[0-2]|98[7-9])|7(?:0(?:[1-689]\\d|7[0-3])\\d\\d|38[0-7]|69[1-8]|78[2-4])|8(?:(?:0(?:1[01]|[2-9]\\d)|1(?:[0-8]\\d|9[01]))\\d\\d|28[3-9]|38[0-2]|4(?:2[12]|3[147-9]|5[346]|7[4-9]|8[014-689]|90)|58[1-8]|78[2-9]|88[5-7])|9(?:0[235-9]\\d\\d|8[07])\\d)\\d{4}", null, null, null, "8021234567", null, null, [8, 10], [6, 7]], [null, null, "800\\d{7,11}", null, null, null, "80017591759", null, null, [10, 11, 12, 13, 14]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "NG", 234, "009", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3", ["78"], "0$1"], [null, "(\\d)(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[12]|9(?:0[3-9]|[1-9])"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{2,3})", "$1 $2 $3", ["[3-7]|8[2-9]"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[7-9]"], "0$1"], [null, "(\\d{3})(\\d{4})(\\d{4,5})", "$1 $2 $3", ["[78]"], "0$1"], [null, "(\\d{3})(\\d{5})(\\d{5,6})", "$1 $2 $3", ["[78]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "700\\d{7,11}", null, null, null, "7001234567", null, null, [10, 11, 12, 13, 14]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22797 NI: [null, [null, null, "(?:1800|[25-8]\\d{3})\\d{4}", null, null, null, null, null, null, [8]], [null, null, "2\\d{7}", null, null, null, "21234567"], [null, null, "(?:5(?:5[0-7]|[78]\\d)|6(?:20|3[035]|4[045]|5[05]|77|8[1-9]|9[059])|(?:7[5-8]|8\\d)\\d)\\d{5}", null, null, null, "81234567"], [null, null, "1800\\d{4}", null, null, null, "18001234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "NI", 505, "00", null, null, null, null, null, null, null, [[null, "(\\d{4})(\\d{4})", "$1 $2", ["[125-8]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22798 NL: [null, [null, null, "(?:[124-7]\\d\\d|3(?:[02-9]\\d|1[0-8])|[89]\\d{0,3})\\d{6}|1\\d{4,5}", null, null, null, null, null, null, [5, 6, 7, 8, 9, 10]], [null, null, "(?:1(?:[035]\\d|1[13-578]|6[124-8]|7[24]|8[0-467])|2(?:[0346]\\d|2[2-46-9]|5[125]|9[479])|3(?:[03568]\\d|1[3-8]|2[01]|4[1-8])|4(?:[0356]\\d|1[1-368]|7[58]|8[15-8]|9[23579])|5(?:[0358]\\d|[19][1-9]|2[1-57-9]|4[13-8]|6[126]|7[0-3578])|7\\d\\d)\\d{6}", null, null, null, "101234567", null, null, [9]], [null, null, "6[1-58]\\d{7}", null, null, null, "612345678", null, null, [9]], [null, null, "800\\d{4,7}", null, null, null, "8001234", null, null, [7, 8, 9, 10]], [null, null, "90[069]\\d{4,7}", null, null, null, "9061234", null, null, [7, 8, 9, 10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:85|91)\\d{7}", null, null, null, "851234567", null, null, [9]], "NL", 31, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{3,4})", "$1 $2", ["14"]], [null, "(\\d{3})(\\d{4,7})", "$1 $2", ["[89]0"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["1[035]|2[0346]|3[03568]|4[0356]|5[0358]|[7-9]"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[1-5]"], "0$1"], [null, "(\\d)(\\d{8})", "$1 $2", ["6[1-58]"], "0$1"], [null, "(\\d{2})(\\d{7})", "$1 $2", ["6"], "0$1"]], [[null, "(\\d{3})(\\d{4,7})", "$1 $2", ["[89]0"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["1[035]|2[0346]|3[03568]|4[0356]|5[0358]|[7-9]"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[1-5]"], "0$1"], [null, "(\\d)(\\d{8})", "$1 $2", ["6[1-58]"], "0$1"], [null, "(\\d{2})(\\d{7})", "$1 $2", ["6"], "0$1"]], [null, null, "66\\d{7}", null, null, null, "662345678", null, null, [9]], null, null, [null, null, "140(?:1(?:[035]|[16-8]\\d)|2(?:[0346]|[259]\\d)|3(?:[03568]|[124]\\d)|4(?:[0356]|[17-9]\\d)|5(?:[0358]|[124679]\\d)|7\\d|8[458])", null, null, null, null, null, null, [5, 6]], [null, null, "140(?:1(?:[035]|[16-8]\\d)|2(?:[0346]|[259]\\d)|3(?:[03568]|[124]\\d)|4(?:[0356]|[17-9]\\d)|5(?:[0358]|[124679]\\d)|7\\d|8[458])|8[478]\\d{7}", null, null, null, "14020", null, null, [5, 6, 9]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22799 NO: [null, [null, null, "(?:0|[2-9]\\d{3})\\d{4}", null, null, null, null, null, null, [5, 8]], [null, null, "(?:2[1-4]|3[1-3578]|5[1-35-7]|6[1-4679]|7[0-8])\\d{6}", null, null, null, "21234567", null, null, [8]], [null, null, "(?:4[015-8]|5[89]|9\\d)\\d{6}", null, null, null, "40612345", null, null, [8]], [null, null, "80[01]\\d{5}", null, null, null, "80012345", null, null, [8]], [null, null, "82[09]\\d{5}", null, null, null, "82012345", null, null, [8]], [null, null, "810(?:0[0-6]|[2-8]\\d)\\d{3}", null, null, null, "81021234", null, null, [8]], [null, null, "880\\d{5}", null, null, null, "88012345", null, null, [8]], [null, null, "85[0-5]\\d{5}", null, null, null, "85012345", null, null, [8]], "NO", 47, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[235-7]"]], [null, "(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["[489]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], 1, "[02-689]|7[0-8]", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:0\\d|81(?:0(?:0[7-9]|1\\d)|5\\d\\d))\\d{3}", null, null, null, "01234"], null, null, [null, null, "81[23]\\d{5}", null, null, null, "81212345", null, null, [8]]], 22800 NP: [null, [null, null, "9\\d{9}|[1-9]\\d{7}", null, null, null, null, null, null, [8, 10], [6, 7]], [null, null, "(?:1[0-6]\\d|(?:2[13-79]|3[135-8]|4[146-9]|5[135-7]|6[13-9]|7[15-9]|8[1-46-9]|9[1-79])[2-6])\\d{5}", null, null, null, "14567890", null, null, [8], [6, 7]], [null, null, "9(?:6[0-3]|7[245]|8[0-24-68])\\d{7}", null, null, null, "9841234567", null, null, [10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "NP", 977, "00", "0", null, null, "0", null, null, null, [[null, "(\\d)(\\d{7})", "$1-$2", ["1[2-6]"], "0$1"], [null, "(\\d{2})(\\d{6})", "$1-$2", ["[1-8]|9(?:[1-579]|6[2-6])"], "0$1"], [null, "(\\d{3})(\\d{7})", "$1-$2", ["9"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22801 NR: [null, [null, null, "(?:444|55\\d|888)\\d{4}", null, null, null, null, null, null, [7]], [null, null, "(?:444|888)\\d{4}", null, null, null, "4441234"], [null, null, "55[4-9]\\d{4}", null, null, null, "5551234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "NR", 674, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["[458]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22802 NU: [null, [null, null, "(?:[47]|888\\d)\\d{3}", null, null, null, null, null, null, [4, 7]], [null, null, "[47]\\d{3}", null, null, null, "7012", null, null, [4]], [null, null, "888[4-9]\\d{3}", null, null, null, "8884012", null, null, [7]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "NU", 683, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["8"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22803 NZ: [null, [null, null, "[28]\\d{7,9}|[346]\\d{7}|(?:508|[79]\\d)\\d{6,7}", null, null, null, null, null, null, [8, 9, 10], [7]], [null, null, "(?:24099|(?:3[2-79]|[49][2-9]|6[235-9]|7[2-57-9])\\d{3})\\d{3}", null, null, null, "32345678", null, null, [8], [7]], [null, null, "2(?:[0-28]\\d?|[79])\\d{7}|21\\d{6}", null, null, null, "211234567"], [null, null, "508\\d{6,7}|80\\d{6,8}", null, null, null, "800123456"], [null, null, "90\\d{6,7}", null, null, null, "900123456", null, null, [8, 9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "70\\d{7}", null, null, null, "701234567", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], "NZ", 64, "0(?:0|161)", "0", null, null, "0", null, "00", null, [[null, "(\\d)(\\d{3})(\\d{4})", "$1-$2 $3", ["24|[346]|7[2-57-9]|9[2-9]"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["80|9"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["2(?:10|74)|[59]|80"], "0$1"], [null, "(\\d{2})(\\d{3,4})(\\d{4})", "$1 $2 $3", ["2[028]"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{3,5})", "$1 $2 $3", ["[278]"], "0$1"]], null, [null, null, "[28]6\\d{6,7}", null, null, null, "26123456", null, null, [8, 9]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22804 OM: [null, [null, null, "(?:[279]\\d{3}|500|8007\\d?)\\d{4}", null, null, null, null, null, null, [7, 8, 9]], [null, null, "2[2-6]\\d{6}", null, null, null, "23123456", null, null, [8]], [null, null, "(?:7[129]\\d|9(?:0[1-9]|[1-9]\\d))\\d{5}", null, null, null, "92123456", null, null, [8]], [null, null, "(?:500|8007\\d?)\\d{4}", null, null, null, "80071234"], [null, null, "900\\d{5}", null, null, null, "90012345", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "OM", 968, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{4,6})", "$1 $2", ["[58]"]], [null, "(\\d{2})(\\d{6})", "$1 $2", ["2"]], [null, "(\\d{4})(\\d{4})", "$1 $2", ["[79]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22805 PA: [null, [null, null, "(?:[1-57-9]|6\\d)\\d{6}", null, null, null, null, null, null, [7, 8]], [null, null, "(?:1(?:0\\d|1[479]|2[37]|3[0137]|4[17]|5[05]|[68][58]|7[0167]|9[39])|2(?:[0235-79]\\d|1[0-7]|4[013-9]|8[026-9])|3(?:[089]\\d|1[014-7]|2[0-35]|33|4[0-579]|55|6[068]|7[06-8])|4(?:00|3[0-579]|4\\d|7[0-57-9])|5(?:[01]\\d|2[0-7]|[56]0|79)|7(?:0[09]|2[0-26-8]|3[03]|4[04]|5[05-9]|6[05]|7[0-24-9]|8[7-9]|90)|8(?:09|2[89]|3\\d|4[0-24-689]|5[014]|8[02])|9(?:0[5-9]|1[0135-8]|2[036-9]|3[35-79]|40|5[0457-9]|6[05-9]|7[04-9]|8[35-8]|9\\d))\\d{4}", null, null, null, "2001234", null, null, [7]], [null, null, "(?:1[16]1|21[89]|6(?:[02-9]\\d|1[0-5])\\d|8(?:1[01]|7[23]))\\d{4}", null, null, null, "61234567"], [null, null, "800\\d{4}", null, null, null, "8001234", null, null, [7]], [null, null, "(?:8(?:22|55|60|7[78]|86)|9(?:00|81))\\d{4}", null, null, null, "8601234", null, null, [7]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "PA", 507, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{4})", "$1-$2", ["[1-57-9]"]], [null, "(\\d{4})(\\d{4})", "$1-$2", ["6"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22806 PE: [null, [null, null, "(?:[14-8]|9\\d)\\d{7}", null, null, null, null, null, null, [8, 9], [6, 7]], [null, null, "(?:1\\d|4[1-4]|5[1-46]|6[1-7]|7[2-46]|8[2-4])\\d{6}", null, null, null, "11234567", null, null, [8], [6, 7]], [null, null, "9\\d{8}", null, null, null, "912345678", null, null, [9]], [null, null, "800\\d{5}", null, null, null, "80012345", null, null, [8]], [null, null, "805\\d{5}", null, null, null, "80512345", null, null, [8]], [null, null, "801\\d{5}", null, null, null, "80112345", null, null, [8]], [null, null, "80[24]\\d{5}", null, null, null, "80212345", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], "PE", 51, "19(?:1[124]|77|90)00", "0", " Anexo ", null, "0", null, null, null, [[null, "(\\d)(\\d{7})", "$1 $2", ["1"], "(0$1)"], [null, "(\\d{2})(\\d{6})", "$1 $2", ["[4-7]|8[2-4]"], "(0$1)"], [null, "(\\d{3})(\\d{5})", "$1 $2", ["8"], "(0$1)"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["9"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22807 PF: [null, [null, null, "[48]\\d{7}|4\\d{5}", null, null, null, null, null, null, [6, 8]], [null, null, "4(?:[09][4-689]\\d|4)\\d{4}", null, null, null, "40412345"], [null, null, "8[79]\\d{6}", null, null, null, "87123456", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "PF", 689, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3", ["44"]], [null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[48]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "44\\d{4}", null, null, null, null, null, null, [6]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22808 PG: [null, [null, null, "(?:180|[78]\\d{3})\\d{4}|(?:[2-589]\\d|64)\\d{5}", null, null, null, null, null, null, [7, 8]], [null, null, "(?:(?:3[0-2]|4[257]|5[34]|9[78])\\d|64[1-9]|77(?:[0-24]\\d|30)|85[02-46-9])\\d{4}", null, null, null, "3123456"], [null, null, "(?:7(?:[0-689]\\d|75)|81\\d)\\d{5}", null, null, null, "70123456", null, null, [8]], [null, null, "180\\d{4}", null, null, null, "1801234", null, null, [7]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "2(?:0[0-47]|7[568])\\d{4}", null, null, null, "2751234", null, null, [7]], "PG", 675, "00|140[1-3]", null, null, null, null, null, "00", null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["18|[2-69]|85"]], [null, "(\\d{4})(\\d{4})", "$1 $2", ["[78]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22809 PH: [null, [null, null, "(?:1800\\d{2,4}|2|[89]\\d{4})\\d{5}|[3-8]\\d{8}|[28]\\d{7}", null, null, null, null, null, null, [6, 8, 9, 10, 11, 12, 13], [4, 5, 7]], [null, null, "(?:2\\d(?:\\d{2})?|(?:3[2-68]|4[2-9]|5[2-6]|6[2-58]|7[24578])\\d{3}|88(?:22\\d\\d|42))\\d{4}|8[2-8]\\d{7}", null, null, null, "21234567", null, null, [6, 8, 9, 10], [4, 5, 7]], [null, null, "(?:81[37]|9(?:0[5-9]|1[024-9]|2[0-35-9]|3[02-9]|4[235-9]|5[056]|6[5-7]|7[3-79]|89|9[4-9]))\\d{7}", null, null, null, "9051234567", null, null, [10]], [null, null, "1800\\d{7,9}", null, null, null, "180012345678", null, null, [11, 12, 13]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "PH", 63, "00", "0", null, null, "0", null, null, null, [[null, "(\\d)(\\d{5})", "$1 $2", ["2"], "(0$1)"], [null, "(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["2"], "(0$1)"], [null, "(\\d{4})(\\d{4,6})", "$1 $2", ["3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|5(?:22|44)|642|8(?:62|8[245])", "3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))"], "(0$1)"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["3[2-68]|4[2-9]|[5-7]|8[2-8]", "3(?:[23568]|4(?:[0-57-9]|6[02-8]))|4(?:2(?:[0-689]|7[0-8])|[3-8]|9(?:[0-246-9]|3[1-9]|5[0-57-9]))|[5-7]|8(?:[2-7]|8(?:[0-24-9]|3[0-35-9]))"], "(0$1)"], [null, "(\\d{5})(\\d{4})", "$1 $2", ["[34]|88"], "(0$1)"], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["[89]"], "0$1"], [null, "(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["1"]], [null, "(\\d{4})(\\d{1,2})(\\d{3})(\\d{4})", "$1 $2 $3 $4", ["1"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22810 PK: [null, [null, null, "(?:122|[24-8]\\d{4,5}|9(?:[013-9]\\d{2,4}|2(?:[01]\\d\\d|2(?:[025-8]\\d|1[01]))\\d))\\d{6}|(?:[2-8]\\d{3}|92(?:[0-7]\\d|8[1-9]))\\d{6}|[24-9]\\d{8}|[89]\\d{7}", null, null, null, null, null, null, [8, 9, 10, 11, 12], [5, 6, 7]], [null, null, "2(?:(?:1[2-9]\\d|[25][2-9])\\d{6}|(?:3[2358]|4[2-4]|9[2-8])[2-9]\\d{5,6})|4(?:(?:[0146-9][2-9]|2[2-9]\\d)\\d{6}|5[3479][2-9]\\d{5,6})|5(?:(?:[1-35-7][2-9]|8[126]\\d)\\d{6}|4[2-467][2-9]\\d{5,6})|6(?:0[468][2-9]\\d{5,6}|[1-8][2-9]\\d{6})|7(?:[14][2-9]\\d{6}|2[236][2-9]\\d{5,6})|8(?:[16][2-9]\\d{6}|(?:2[2-689]|3[23578]|4[3478]|5[2356])[2-9]\\d{5,6})|9(?:1[2-9]\\d{6}|(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])[2-9]\\d{5,6})", null, null, null, "2123456789", null, null, [9, 10], [5, 6, 7, 8]], [null, null, "3(?:[014]\\d|2[0-5]|3[0-7]|55|64)\\d{7}", null, null, null, "3012345678", null, null, [10]], [null, null, "800\\d{5}", null, null, null, "80012345", null, null, [8]], [null, null, "900\\d{5}", null, null, null, "90012345", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "122\\d{6}", null, null, null, "122044444", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], "PK", 92, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d{3})(\\d{2})", "$1 $2 $3", ["[89]0"], "0$1"], [null, "(\\d{4})(\\d{5})", "$1 $2", ["1"]], [null, "(\\d{2})(\\d{7,8})", "$1 $2", ["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]"], "(0$1)"], [null, "(\\d{3})(\\d{6,7})", "$1 $2", ["2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])", "(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356]))[2-9]|9(?:2(?:2[2-9]|[3-8])|(?:3[27-9]|4[2-6]|6[3569])[2-9]|9(?:[25-7][2-9]|8))"], "(0$1)"], [null, "(\\d{5})(\\d{5})", "$1 $2", ["58"], "(0$1)"], [null, "(\\d{3})(\\d{7})", "$1 $2", ["3"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91"], "(0$1)"], [null, "(\\d{3})(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["[24-9]"], "(0$1)"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:2(?:[125]|3[2358]|4[2-4]|9[2-8])|4(?:[0-246-9]|5[3479])|5(?:[1-35-7]|4[2-467])|6(?:0[468]|[1-8])|7(?:[14]|2[236])|8(?:[16]|2[2-689]|3[23578]|4[3478]|5[2356])|9(?:1|22|3[27-9]|4[2-6]|6[3569]|9[2-7]))111\\d{6}", null, null, null, "21111825888", null, null, [11, 12]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22811 PL: [null, [null, null, "[1-9]\\d{6}(?:\\d{2})?|6\\d{5}(?:\\d{2})?", null, null, null, null, null, null, [6, 7, 8, 9]], [null, null, "(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])\\d{7}|(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\\d{3}", null, null, null, "123456789", null, null, [7, 9]], [null, null, "(?:45|5[0137]|6[069]|7[2389]|88)\\d{7}", null, null, null, "512345678", null, null, [9]], [null, null, "800\\d{6}", null, null, null, "800123456", null, null, [9]], [null, null, "70[01346-8]\\d{6}", null, null, null, "701234567", null, null, [9]], [null, null, "801\\d{6}", null, null, null, "801234567", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "39\\d{7}", null, null, null, "391234567", null, null, [9]], "PL", 48, "00", null, null, null, null, null, null, null, [[null, "(\\d{5})", "$1", ["19"]], [null, "(\\d{3})(\\d{3})", "$1 $2", ["11|64"]], [null, "(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3", ["(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1", "(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19"]], [null, "(\\d{3})(\\d{2})(\\d{2,3})", "$1 $2 $3", ["64"]], [null, "(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["1[2-8]|2|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145]"]], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[3-8]"]]], null, [null, null, "64\\d{4,7}", null, null, null, "641234567"], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "804\\d{6}", null, null, null, "804123456", null, null, [9]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22812 PM: [null, [null, null, "[45]\\d{5}", null, null, null, null, null, null, [6]], [null, null, "(?:4[1-3]|50)\\d{4}", null, null, null, "430123"], [null, null, "(?:4[02-4]|5[05])\\d{4}", null, null, null, "551234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "PM", 508, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3", ["[45]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22813 PR: [null, [null, null, "(?:[589]\\d\\d|787)\\d{7}", null, null, null, null, null, null, [10], [7]], [null, null, "(?:787|939)[2-9]\\d{6}", null, null, null, "7872345678", null, null, null, [7]], [null, null, "(?:787|939)[2-9]\\d{6}", null, null, null, "7872345678", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002345678"], [null, null, "900[2-9]\\d{6}", null, null, null, "9002345678"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, null, null, null, null, null, null, null, [-1]], "PR", 1, "011", "1", null, null, "1", null, null, 1, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "787|939", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22814 PS: [null, [null, null, "(?:(?:1\\d|5)\\d\\d|[2489]2)\\d{6}", null, null, null, null, null, null, [8, 9, 10], [7]], [null, null, "(?:22[2-47-9]|42[45]|82[01458]|92[369])\\d{5}", null, null, null, "22234567", null, null, [8], [7]], [null, null, "5[69]\\d{7}", null, null, null, "599123456", null, null, [9]], [null, null, "1800\\d{6}", null, null, null, "1800123456", null, null, [10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "1700\\d{6}", null, null, null, "1700123456", null, null, [10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "PS", 970, "00", "0", null, null, "0", null, null, null, [[null, "(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["[2489]"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["5"], "0$1"], [null, "(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["1"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22815 PT: [null, [null, null, "(?:[26-9]\\d|30)\\d{7}", null, null, null, null, null, null, [9]], [null, null, "2(?:[12]\\d|[35][1-689]|4[1-59]|6[1-35689]|7[1-9]|8[1-69]|9[1256])\\d{6}", null, null, null, "212345678"], [null, null, "9(?:[1-36]\\d\\d|480)\\d{5}", null, null, null, "912345678"], [null, null, "80[02]\\d{6}", null, null, null, "800123456"], [null, null, "(?:6(?:0[178]|4[68])\\d|76(?:0[1-57]|1[2-47]|2[237]))\\d{5}", null, null, null, "760123456"], [null, null, "80(?:8\\d|9[1579])\\d{5}", null, null, null, "808123456"], [null, null, "884[0-4689]\\d{5}", null, null, null, "884123456"], [null, null, "30\\d{7}", null, null, null, "301234567"], "PT", 351, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["2[12]"]], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[236-9]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "70(?:7\\d|8[17])\\d{5}", null, null, null, "707123456"], null, null, [null, null, "600\\d{6}", null, null, null, "600110000"]], 22816 PW: [null, [null, null, "(?:[25-8]\\d\\d|345|488|900)\\d{4}", null, null, null, null, null, null, [7]], [null, null, "(?:2(?:55|77)|345|488|5(?:35|44|87)|6(?:22|54|79)|7(?:33|47)|8(?:24|55|76)|900)\\d{4}", null, null, null, "2771234"], [null, null, "(?:6[2-4689]0|77\\d|88[0-4])\\d{4}", null, null, null, "6201234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "PW", 680, "01[12]", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["[2-9]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22817 PY: [null, [null, null, "(?:[2-46-9]\\d|5[0-8])\\d{7}|[2-9]\\d{5,7}", null, null, null, null, null, null, [6, 7, 8, 9], [5]], [null, null, "(?:2(?:1\\d|2[4-68]|7[15]|9[1-5])|5(?:[1-4]\\d|5[02-4])|6(?:1\\d|3[1-3]|44|7[1-46-8]))\\d{5,6}|3(?:(?:18|3[167]|4[2357]|51)\\d{5,6}|[289]\\d{5,7})|4(?:[1246-8]\\d{5,7}|(?:3[12]|5[13]|9[1-47])\\d{5,6})|7(?:[1-3]\\d{5,7}|(?:4[0-4]|6[1-578]|75|8[0-8])\\d{5,6})|8(?:[1-36]\\d{5,7}|58\\d{5,6})|[26]1\\d{5}", null, null, null, "212345678", null, null, [7, 8, 9], [5, 6]], [null, null, "9(?:51|6[129]|[78][1-6]|9[1-5])\\d{6}", null, null, null, "961456789", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "8700[0-4]\\d{4}", null, null, null, "870012345", null, null, [9]], "PY", 595, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d{3,6})", "$1 $2", ["[2-9]0"], "0$1"], [null, "(\\d{2})(\\d{5})", "$1 $2", ["[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]"], "(0$1)"], [null, "(\\d{3})(\\d{4,5})", "$1 $2", ["2[279]|3[13-5]|4[359]|5|6[347]|7[46-8]|85"], "(0$1)"], [null, "(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]"], "(0$1)"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[2-7]|85"], "0$1"], [null, "(\\d{3})(\\d{6})", "$1 $2", ["9"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["8"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "[2-9]0\\d{4,7}", null, null, null, "201234567"], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22818 QA: [null, [null, null, "(?:(?:2|[3-7]\\d)\\d\\d|800)\\d{4}", null, null, null, null, null, null, [7, 8]], [null, null, "4[04]\\d{6}", null, null, null, "44123456", null, null, [8]], [null, null, "[35-7]\\d{7}", null, null, null, "33123456", null, null, [8]], [null, null, "800\\d{4}", null, null, null, "8001234", null, null, [7]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "QA", 974, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["2[126]|8"]], [null, "(\\d{4})(\\d{4})", "$1 $2", ["[3-7]"]]], null, [null, null, "2(?:[12]\\d|61)\\d{4}", null, null, null, "2123456", null, null, [7]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22819 RE: [null, [null, null, "(?:26|[68]\\d)\\d{7}", null, null, null, null, null, null, [9]], [null, null, "262\\d{6}", null, null, null, "262161234"], [null, null, "69(?:2\\d\\d|3(?:0[0-46]|1[013]|2[0-2]|3[0-39]|4\\d|5[05]|6[0-26]|7[0-27]|8[0-38]|9[0-479]))\\d{4}", null, null, null, "692123456"], [null, null, "80\\d{7}", null, null, null, "801234567"], [null, null, "89[1-37-9]\\d{6}", null, null, null, "891123456"], [null, null, "8(?:1[019]|2[0156]|84|90)\\d{6}", null, null, null, "810123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "RE", 262, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[268]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], 1, "262|69|8", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22820 RO: [null, [null, null, "(?:[237]\\d|[89]0)\\d{7}|[23]\\d{5}", null, null, null, null, null, null, [6, 9]], [null, null, "[23][13-6]\\d{7}|(?:2(?:19\\d|[3-6]\\d9)|31\\d\\d)\\d\\d", null, null, null, "211234567"], [null, null, "7(?:(?:[02-7]\\d|8[03-8]|99)\\d|1(?:[01]\\d|20))\\d{5}", null, null, null, "712034567", null, null, [9]], [null, null, "800\\d{6}", null, null, null, "800123456", null, null, [9]], [null, null, "90[036]\\d{6}", null, null, null, "900123456", null, null, [9]], [null, null, "801\\d{6}", null, null, null, "801123456", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "RO", 40, "00", "0", " int ", null, "0", null, null, null, [[null, "(\\d{2})(\\d{4})", "$1 $2", ["219|31"], "0$1"], [null, "(\\d{3})(\\d{3})", "$1 $2", ["2[3-6]", "2[3-6]\\d9"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[23]1"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[237-9]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "37\\d{7}", null, null, null, "372123456", null, null, [9]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22821 RS: [null, [null, null, "[127]\\d{6,11}|3(?:[0-79]\\d{5,10}|8(?:[02-9]\\d{4,9}|1\\d{4,5}))|6\\d{7,9}|800\\d{3,9}|90\\d{4,8}|7\\d{5}", null, null, null, null, null, null, [6, 7, 8, 9, 10, 11, 12], [4, 5]], [null, null, "(?:1(?:[02-9][2-9]|1[1-9])\\d|2(?:[0-24-7][2-9]\\d|[389](?:0[2-9]|[2-9]\\d))|3(?:[0-8][2-9]\\d|9(?:0[2-9]|[2-9]\\d)))\\d{3,8}", null, null, null, "10234567", null, null, [7, 8, 9, 10, 11, 12], [4, 5, 6]], [null, null, "6(?:[0-689]|7\\d)\\d{6,7}", null, null, null, "601234567", null, null, [8, 9, 10]], [null, null, "800\\d{3,9}", null, null, null, "80012345"], [null, null, "(?:78\\d|90[0169])\\d{3,7}", null, null, null, "90012345", null, null, [6, 7, 8, 9, 10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "RS", 381, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d{3,9})", "$1 $2", ["(?:2[389]|39)0|[7-9]"], "0$1"], [null, "(\\d{2})(\\d{5,10})", "$1 $2", ["[1-36]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "7[06]\\d{4,10}", null, null, null, "700123456"], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22822 RU: [null, [null, null, "[347-9]\\d{9}", null, null, null, null, null, null, [10], [7]], [null, null, "(?:3(?:0[12]|4[1-35-79]|5[1-3]|65|8[1-58]|9[0145])|4(?:01|1[1356]|2[13467]|7[1-5]|8[1-7]|9[1-689])|8(?:1[1-8]|2[01]|3[13-6]|4[0-8]|5[15]|6[1-35-79]|7[1-37-9]))\\d{7}", null, null, null, "3011234567", null, null, null, [7]], [null, null, "9\\d{9}", null, null, null, "9123456789"], [null, null, "80[04]\\d{7}", null, null, null, "8001234567"], [null, null, "80[39]\\d{7}", null, null, null, "8091234567"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "808\\d{7}", null, null, null, "8081234567"], [null, null, null, null, null, null, null, null, null, [-1]], "RU", 7, "810", "8", null, null, "8", null, "8~10", null, [[null, "(\\d{3})(\\d{2})(\\d{2})", "$1-$2-$3"], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["7"], "8 ($1)", null, 1], [null, "(\\d{3})(\\d{3})(\\d{2})(\\d{2})", "$1 $2-$3-$4", ["[3489]"], "8 ($1)", null, 1]], [[null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["7"], "8 ($1)", null, 1], [null, "(\\d{3})(\\d{3})(\\d{2})(\\d{2})", "$1 $2-$3-$4", ["[3489]"], "8 ($1)", null, 1]], [null, null, null, null, null, null, null, null, null, [-1]], 1, "3[04-689]|[489]", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22823 RW: [null, [null, null, "(?:06|[27]\\d\\d|[89]00)\\d{6}", null, null, null, null, null, null, [8, 9]], [null, null, "(?:06|2[258]\\d)\\d{6}", null, null, null, "250123456"], [null, null, "7[238]\\d{7}", null, null, null, "720123456", null, null, [9]], [null, null, "800\\d{6}", null, null, null, "800123456", null, null, [9]], [null, null, "900\\d{6}", null, null, null, "900123456", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "RW", 250, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["0"]], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["2"]], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[7-9]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22824 SA: [null, [null, null, "(?:(?:[15]|8\\d)\\d|92)\\d{7}", null, null, null, null, null, null, [9, 10], [7]], [null, null, "1(?:1\\d|2[24-8]|3[35-8]|4[3-68]|6[2-5]|7[235-7])\\d{6}", null, null, null, "112345678", null, null, [9], [7]], [null, null, "5(?:[013-689]\\d|7[0-36-8])\\d{6}", null, null, null, "512345678", null, null, [9]], [null, null, "800\\d{7}", null, null, null, "8001234567", null, null, [10]], [null, null, "925\\d{6}", null, null, null, "925012345", null, null, [9]], [null, null, "920\\d{6}", null, null, null, "920012345", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "SA", 966, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["1"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["5"], "0$1"], [null, "(\\d{4})(\\d{5})", "$1 $2", ["9"]], [null, "(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["81"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["8"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "811\\d{7}", null, null, null, "8110123456", null, null, [10]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22825 SB: [null, [null, null, "(?:[1-6]|[7-9]\\d\\d)\\d{4}", null, null, null, null, null, null, [5, 7]], [null, null, "(?:1[4-79]|[23]\\d|4[0-2]|5[03]|6[0-37])\\d{3}", null, null, null, "40123", null, null, [5]], [null, null, "(?:48|(?:(?:7[1-9]|8[4-9])\\d|9(?:1[2-9]|2[013-9]|3[0-2]|[46]\\d|5[0-46-9]|7[0-689]|8[0-79]|9[0-8]))\\d)\\d{3}", null, null, null, "7421234"], [null, null, "1[38]\\d{3}", null, null, null, "18123", null, null, [5]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5[12]\\d{3}", null, null, null, "51123", null, null, [5]], "SB", 677, "0[01]", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{5})", "$1 $2", ["7[1-9]|8[4-9]|9(?:1[2-9]|2[013-9]|3[0-2]|[46]|5[0-46-9]|7[0-689]|8[0-79]|9[0-8])"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22826 SC: [null, [null, null, "(?:(?:(?:[24]\\d|64)\\d|971)\\d|8000)\\d{3}", null, null, null, null, null, null, [7]], [null, null, "4[2-46]\\d{5}", null, null, null, "4217123"], [null, null, "2[5-8]\\d{5}", null, null, null, "2510123"], [null, null, "8000\\d{3}", null, null, null, "8000000"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:64\\d|971)\\d{4}", null, null, null, "6412345"], "SC", 248, "0(?:[02]|10?)", null, null, null, null, null, "00", null, [[null, "(\\d)(\\d{3})(\\d{3})", "$1 $2 $3", ["[246]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22827 SD: [null, [null, null, "[19]\\d{8}", null, null, null, null, null, null, [9]], [null, null, "1(?:5\\d|8[35-7])\\d{6}", null, null, null, "151231234"], [null, null, "(?:1[0-2]|9[0-3569])\\d{7}", null, null, null, "911231234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "SD", 249, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[19]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22828 SE: [null, [null, null, "(?:[26]\\d\\d|9)\\d{9}|[1-9]\\d{8}|[1-689]\\d{7}|[1-4689]\\d{6}|2\\d{5}", null, null, null, null, null, null, [6, 7, 8, 9, 10, 12]], [null, null, "1(?:0[1-8]\\d{6}|(?:[13689]\\d|2[0-35]|4[0-4]|5[0-25-9]|7[13-6])\\d{5,6})|(?:2(?:[136]\\d|2[0-7]|4[0136-8]|5[0138]|7[018]|8[01]|9[0-57])|3(?:0[0-4]|[1356]\\d|2[0-25]|4[056]|7[0-2]|8[0-3]|9[023])|5(?:0[0-6]|[15][0-5]|2[0-68]|3[0-4]|4\\d|6[03-5]|7[013]|8[0-79]|9[01]))\\d{5,6}|4(?:[0246]\\d{5,7}|(?:1[013-8]|3[0135]|5[14-79]|7[0-246-9]|8[0156]|9[0-689])\\d{5,6})|6(?:[03]\\d{5,7}|(?:1[1-3]|2[0-4]|4[02-57]|5[0-37]|6[0-3]|7[0-2]|8[0247]|9[0-356])\\d{5,6})|8\\d{6,8}|9(?:0[1-9]\\d{4,6}|(?:1[0-68]|2\\d|3[02-5]|4[0-3]|5[0-4]|[68][01]|7[0135-8])\\d{5,6})|(?:[12][136]|3[356])\\d{5}", null, null, null, "8123456", null, null, [7, 8, 9]], [null, null, "7[02369]\\d{7}", null, null, null, "701234567", null, null, [9]], [null, null, "20\\d{4,7}", null, null, null, "20123456", null, null, [6, 7, 8, 9]], [null, null, "649\\d{6}|9(?:00|39|44)[1-8]\\d{3,6}", null, null, null, "9001234567", null, null, [7, 8, 9, 10]], [null, null, "77[0-7]\\d{6}", null, null, null, "771234567", null, null, [9]], [null, null, "75[1-8]\\d{6}", null, null, null, "751234567", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], "SE", 46, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{2,3})(\\d{2})", "$1-$2 $3", ["20"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{2})", "$1-$2 $3", ["[12][136]|3[356]|4[0246]|6[03]|90[1-9]"], "0$1"], [null, "(\\d{3})(\\d{4})", "$1-$2", ["9(?:00|39|44)"], "0$1"], [null, "(\\d)(\\d{2,3})(\\d{2})(\\d{2})", "$1-$2 $3 $4", ["8"], "0$1"], [null, "(\\d{3})(\\d{2,3})(\\d{2})", "$1-$2 $3", ["1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"], "0$1"], [null, "(\\d{2})(\\d{2,3})(\\d{2})(\\d{2})", "$1-$2 $3 $4", ["1[013689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]"], "0$1"], [null, "(\\d{3})(\\d{2,3})(\\d{3})", "$1-$2 $3", ["9(?:0|39|44)"], "0$1"], [null, "(\\d)(\\d{3})(\\d{3})(\\d{2})", "$1-$2 $3 $4", ["8"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1-$2 $3 $4", ["[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1-$2 $3 $4", ["7"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{2})(\\d{3})", "$1-$2 $3 $4", ["9"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1-$2 $3 $4 $5", ["[26]"], "0$1"]], [[null, "(\\d{2})(\\d{2,3})(\\d{2})", "$1 $2 $3", ["20"]], [null, "(\\d{2})(\\d{3})(\\d{2})", "$1 $2 $3", ["[12][136]|3[356]|4[0246]|6[03]|90[1-9]"]], [null, "(\\d{3})(\\d{4})", "$1 $2", ["9(?:00|39|44)"]], [null, "(\\d)(\\d{2,3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["8"]], [null, "(\\d{3})(\\d{2,3})(\\d{2})", "$1 $2 $3", ["1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"]], [null, "(\\d{2})(\\d{2,3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["1[013689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]"]], [null, "(\\d{3})(\\d{2,3})(\\d{3})", "$1 $2 $3", ["9(?:0|39|44)"]], [null, "(\\d)(\\d{3})(\\d{3})(\\d{2})", "$1 $2 $3 $4", ["8"]], [null, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"]], [null, "(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["7"]], [null, "(\\d{3})(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3 $4", ["9"]], [null, "(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4 $5", ["[26]"]]], [null, null, "74[02-9]\\d{6}", null, null, null, "740123456", null, null, [9]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "(?:25[245]|67[3-68])\\d{9}", null, null, null, "254123456789", null, null, [12]]], 22829 SG: [null, [null, null, "(?:1\\d{3}|[369]|7000|8(?:\\d{2})?)\\d{7}", null, null, null, null, null, null, [8, 10, 11]], [null, null, "6[1-9]\\d{6}", null, null, null, "61234567", null, null, [8]], [null, null, "(?:8[1-8]|9[0-8])\\d{6}", null, null, null, "81234567", null, null, [8]], [null, null, "(?:18|8)00\\d{7}", null, null, null, "18001234567", null, null, [10, 11]], [null, null, "1900\\d{7}", null, null, null, "19001234567", null, null, [11]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "3[12]\\d{6}", null, null, null, "31234567", null, null, [8]], "SG", 65, "0[0-3]\\d", null, null, null, null, null, null, null, [[null, "(\\d{4})(\\d{4})", "$1 $2", ["[369]|8[1-8]"]], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["8"]], [null, "(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["1[89]"]], [null, "(\\d{4})(\\d{4})(\\d{3})", "$1 $2 $3", ["70"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "7000\\d{7}", null, null, null, "70001234567", null, null, [11]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22830 SH: [null, [null, null, "(?:[256]\\d|8)\\d{3}", null, null, null, null, null, null, [4, 5]], [null, null, "2(?:[0-57-9]\\d|6[4-9])\\d\\d", null, null, null, "22158"], [null, null, "[56]\\d{4}", null, null, null, "51234", null, null, [5]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "262\\d\\d", null, null, null, "26212", null, null, [5]], "SH", 290, "00", null, null, null, null, null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], 1, "[256]", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22831 SI: [null, [null, null, "[1-8]\\d{7}|90\\d{4,6}|8\\d{4,6}", null, null, null, null, null, null, [5, 6, 7, 8]], [null, null, "(?:[1-357][2-8]|4[24-8])\\d{6}", null, null, null, "12345678", null, null, [8], [7]], [null, null, "(?:(?:[37][01]|4[0139]|51)\\d\\d|6(?:[48]\\d\\d|5(?:1\\d|55|[67]0)|9(?:10|[69]\\d)))\\d{4}", null, null, null, "31234567", null, null, [8]], [null, null, "80\\d{4,6}", null, null, null, "80123456", null, null, [6, 7, 8]], [null, null, "89[1-3]\\d{2,5}|90\\d{4,6}", null, null, null, "90123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:59\\d\\d|8(?:1(?:[67]\\d|8[01389])|2(?:0\\d|2[0378]|8[0-2489])|3[389]\\d))\\d{4}", null, null, null, "59012345", null, null, [8]], "SI", 386, "00|10(?:22|66|88|99)", "0", null, null, "0", null, "00", null, [[null, "(\\d{2})(\\d{3,6})", "$1 $2", ["8[09]|9"], "0$1"], [null, "(\\d)(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[12]|[357][2-8]|4[24-8]"], "(0$1)"], [null, "(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[3467]|51"], "0$1"], [null, "(\\d{3})(\\d{5})", "$1 $2", ["[58]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22832 SJ: [null, [null, null, "(?:0|(?:[4589]\\d|79)\\d\\d)\\d{4}", null, null, null, null, null, null, [5, 8]], [null, null, "79\\d{6}", null, null, null, "79123456", null, null, [8]], [null, null, "(?:4[015-8]|5[89]|9\\d)\\d{6}", null, null, null, "41234567", null, null, [8]], [null, null, "80[01]\\d{5}", null, null, null, "80012345", null, null, [8]], [null, null, "82[09]\\d{5}", null, null, null, "82012345", null, null, [8]], [null, null, "810(?:0[0-6]|[2-8]\\d)\\d{3}", null, null, null, "81021234", null, null, [8]], [null, null, "880\\d{5}", null, null, null, "88012345", null, null, [8]], [null, null, "85[0-5]\\d{5}", null, null, null, "85012345", null, null, [8]], "SJ", 47, "00", null, null, null, null, null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "79", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:0\\d|81(?:0(?:0[7-9]|1\\d)|5\\d\\d))\\d{3}", null, null, null, "01234"], null, null, [null, null, "81[23]\\d{5}", null, null, null, "81212345", null, null, [8]]], 22833 SK: [null, [null, null, "[2-689]\\d{8}|[2-59]\\d{6}|[2-5]\\d{5}", null, null, null, null, null, null, [6, 7, 9]], [null, null, "(?:2(?:16|[2-9]\\d{3})|[3-5][1-8]\\d{3})\\d{4}|(?:2|[3-5][1-8])1[67]\\d{3}|[3-5][1-8]16\\d\\d", null, null, null, "221234567"], [null, null, "9(?:0(?:[1-8]\\d|9[1-9])|(?:1[0-24-9]|[45]\\d)\\d)\\d{5}", null, null, null, "912123456", null, null, [9]], [null, null, "800\\d{6}", null, null, null, "800123456", null, null, [9]], [null, null, "9(?:00|[78]\\d)\\d{6}", null, null, null, "900123456", null, null, [9]], [null, null, "8[5-9]\\d{7}", null, null, null, "850123456", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "6(?:02|5[0-4]|9[0-6])\\d{6}", null, null, null, "690123456", null, null, [9]], "SK", 421, "00", "0", null, null, "0", null, null, null, [[null, "(\\d)(\\d{2})(\\d{3,4})", "$1 $2 $3", ["21"], "0$1"], [null, "(\\d{2})(\\d{2})(\\d{2,3})", "$1 $2 $3", ["[3-5][1-8]1", "[3-5][1-8]1[67]"], "0$1"], [null, "(\\d{4})(\\d{3})", "$1 $2", ["909", "9090"], "0$1"], [null, "(\\d)(\\d{3})(\\d{3})(\\d{2})", "$1/$2 $3 $4", ["2"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1/$2 $3 $4", ["[3-5]"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[689]"], "0$1"]], [[null, "(\\d)(\\d{2})(\\d{3,4})", "$1 $2 $3", ["21"], "0$1"], [null, "(\\d{2})(\\d{2})(\\d{2,3})", "$1 $2 $3", ["[3-5][1-8]1", "[3-5][1-8]1[67]"], "0$1"], [null, "(\\d)(\\d{3})(\\d{3})(\\d{2})", "$1/$2 $3 $4", ["2"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1/$2 $3 $4", ["[3-5]"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[689]"], "0$1"]], [null, null, "9090\\d{3}", null, null, null, "9090123", null, null, [7]], null, null, [null, null, "(?:(?:602|8(?:00|[5-9]\\d))\\d{3}|9(?:0(?:0\\d{3}|90)|[78]\\d{4}))\\d{3}", null, null, null, null, null, null, [7, 9]], [null, null, "96\\d{7}", null, null, null, "961234567", null, null, [9]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22834 SL: [null, [null, null, "(?:[2-578]\\d|66|99)\\d{6}", null, null, null, null, null, null, [8], [6]], [null, null, "[235]2[2-4][2-9]\\d{4}", null, null, null, "22221234", null, null, null, [6]], [null, null, "(?:2[15]|3[013-5]|4[04]|5[05]|66|7[5-9]|8[08]|99)\\d{6}", null, null, null, "25123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "SL", 232, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{6})", "$1 $2", ["[2-9]"], "(0$1)"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22835 SM: [null, [null, null, "(?:0549|[5-7]\\d)\\d{6}", null, null, null, null, null, null, [8, 10], [6]], [null, null, "0549(?:8[0157-9]|9\\d)\\d{4}", null, null, null, "0549886377", null, null, [10], [6]], [null, null, "6[16]\\d{6}", null, null, null, "66661212", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "7[178]\\d{6}", null, null, null, "71123456", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5[158]\\d{6}", null, null, null, "58001110", null, null, [8]], "SM", 378, "00", null, null, null, "([89]\\d{5})$", "0549$1", null, null, [[null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[5-7]"]], [null, "(\\d{4})(\\d{6})", "$1 $2", ["0"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22836 SN: [null, [null, null, "(?:[378]\\d{4}|93330)\\d{4}", null, null, null, null, null, null, [9]], [null, null, "3(?:0(?:1[0-2]|80)|282|3(?:8[1-9]|9[3-9])|611)\\d{5}", null, null, null, "301012345"], [null, null, "7(?:[06-8]\\d|21|90)\\d{6}", null, null, null, "701234567"], [null, null, "800\\d{6}", null, null, null, "800123456"], [null, null, "88[4689]\\d{6}", null, null, null, "884123456"], [null, null, "81[02468]\\d{6}", null, null, null, "810123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:3(?:392|9[01]\\d)\\d|93330)\\d{4}", null, null, null, "933301234"], "SN", 221, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[379]"]], [null, "(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["8"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22837 SO: [null, [null, null, "[346-9]\\d{8}|[12679]\\d{7}|(?:[1-4]\\d|59)\\d{5}|[1348]\\d{5}", null, null, null, null, null, null, [6, 7, 8, 9]], [null, null, "(?:1\\d|2[0-79]|3[0-46-8]|4[0-7]|59)\\d{5}|(?:[134]\\d|8[125])\\d{4}", null, null, null, "4012345", null, null, [6, 7]], [null, null, "(?:(?:15|(?:3[59]|4[89]|6[1-9]|79|8[08])\\d|9(?:0[67]|[2-9]))\\d|2(?:4\\d|8))\\d{5}|(?:6\\d|7[1-9])\\d{6}", null, null, null, "71123456", null, null, [7, 8, 9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "SO", 252, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{4})", "$1 $2", ["8[125]"]], [null, "(\\d{6})", "$1", ["[134]"]], [null, "(\\d)(\\d{6})", "$1 $2", ["[15]|2[0-79]|3[0-46-8]|4[0-7]"]], [null, "(\\d)(\\d{7})", "$1 $2", ["24|[67]"]], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[348]|64|79[0-8]|90"]], [null, "(\\d{2})(\\d{5,7})", "$1 $2", ["[12679]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22838 SR: [null, [null, null, "(?:[2-5]|68|[78]\\d)\\d{5}", null, null, null, null, null, null, [6, 7]], [null, null, "(?:2[1-3]|3[0-7]|(?:4|68)\\d|5[2-58])\\d{4}", null, null, null, "211234"], [null, null, "(?:7[124-7]|8[125-9])\\d{5}", null, null, null, "7412345", null, null, [7]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "56\\d{4}", null, null, null, "561234", null, null, [6]], "SR", 597, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{3})", "$1-$2", ["[2-4]|5[2-58]"]], [null, "(\\d{2})(\\d{2})(\\d{2})", "$1-$2-$3", ["5"]], [null, "(\\d{3})(\\d{4})", "$1-$2", ["[6-8]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22839 SS: [null, [null, null, "[19]\\d{8}", null, null, null, null, null, null, [9]], [null, null, "18\\d{7}", null, null, null, "181234567"], [null, null, "(?:12|9[1257])\\d{7}", null, null, null, "977123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "SS", 211, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[19]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22840 ST: [null, [null, null, "(?:22|9\\d)\\d{5}", null, null, null, null, null, null, [7]], [null, null, "22\\d{5}", null, null, null, "2221234"], [null, null, "9(?:0(?:0[5-9]|[1-9]\\d)|[89]\\d\\d)\\d{3}", null, null, null, "9812345"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "ST", 239, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["[29]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22841 SV: [null, [null, null, "[267]\\d{7}|[89]00\\d{4}(?:\\d{4})?", null, null, null, null, null, null, [7, 8, 11]], [null, null, "2[1-6]\\d{6}", null, null, null, "21234567", null, null, [8]], [null, null, "[67]\\d{7}", null, null, null, "70123456", null, null, [8]], [null, null, "800\\d{4}(?:\\d{4})?", null, null, null, "8001234", null, null, [7, 11]], [null, null, "900\\d{4}(?:\\d{4})?", null, null, null, "9001234", null, null, [7, 11]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "SV", 503, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["[89]"]], [null, "(\\d{4})(\\d{4})", "$1 $2", ["[267]"]], [null, "(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["[89]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22842 SX: [null, [null, null, "(?:(?:[58]\\d\\d|900)\\d|7215)\\d{6}", null, null, null, null, null, null, [10], [7]], [null, null, "7215(?:4[2-8]|8[239]|9[056])\\d{4}", null, null, null, "7215425678", null, null, null, [7]], [null, null, "7215(?:1[02]|2\\d|5[034679]|8[014-8])\\d{4}", null, null, null, "7215205678", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002123456"], [null, null, "900[2-9]\\d{6}", null, null, null, "9002123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, null, null, null, null, null, null, null, [-1]], "SX", 1, "011", "1", null, null, "1", null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "721", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22843 SY: [null, [null, null, "[1-39]\\d{8}|[1-5]\\d{7}", null, null, null, null, null, null, [8, 9], [6, 7]], [null, null, "(?:1[14]\\d|2(?:1\\d?|[235])|3(?:[13]\\d|4)|4[13]|5[1-3])\\d{6}|1[1-356]\\d{6}", null, null, null, "112345678", null, null, null, [6, 7]], [null, null, "9(?:22|[3-589]\\d|6[024-9])\\d{6}", null, null, null, "944567890", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "SY", 963, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[1-5]"], "0$1", null, 1], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["9"], "0$1", null, 1]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22844 SZ: [null, [null, null, "(?:0800|(?:[237]\\d|900)\\d\\d)\\d{4}", null, null, null, null, null, null, [8, 9]], [null, null, "[23][2-5]\\d{6}", null, null, null, "22171234", null, null, [8]], [null, null, "7[6-9]\\d{6}", null, null, null, "76123456", null, null, [8]], [null, null, "0800\\d{4}", null, null, null, "08001234", null, null, [8]], [null, null, "900\\d{6}", null, null, null, "900012345", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "70\\d{6}", null, null, null, "70012345", null, null, [8]], "SZ", 268, "00", null, null, null, null, null, null, null, [[null, "(\\d{4})(\\d{4})", "$1 $2", ["[0237]"]], [null, "(\\d{5})(\\d{4})", "$1 $2", ["9"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "0800\\d{4}", null, null, null, null, null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22845 TA: [null, [null, null, "8\\d{3}", null, null, null, null, null, null, [4]], [null, null, "8\\d{3}", null, null, null, "8999"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "TA", 290, "00", null, null, null, null, null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "8", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22846 TC: [null, [null, null, "(?:[58]\\d\\d|649|900)\\d{7}", null, null, null, null, null, null, [10], [7]], [null, null, "649(?:712|9(?:4\\d|50))\\d{4}", null, null, null, "6497121234", null, null, null, [7]], [null, null, "649(?:2(?:3[129]|4[1-7])|3(?:3[1-389]|4[1-8])|4[34][1-3])\\d{4}", null, null, null, "6492311234", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002345678"], [null, null, "900[2-9]\\d{6}", null, null, null, "9002345678"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, "64971[01]\\d{4}", null, null, null, "6497101234", null, null, null, [7]], "TC", 1, "011", "1", null, null, "1", null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "649", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22847 TD: [null, [null, null, "(?:22|[69]\\d|77)\\d{6}", null, null, null, null, null, null, [8]], [null, null, "22(?:[37-9]0|5[0-5]|6[89])\\d{4}", null, null, null, "22501234"], [null, null, "(?:6[023568]|77|9\\d)\\d{6}", null, null, null, "63012345"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "TD", 235, "00|16", null, null, null, null, null, "00", null, [[null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2679]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22848 TG: [null, [null, null, "[279]\\d{7}", null, null, null, null, null, null, [8]], [null, null, "2(?:2[2-7]|3[23]|4[45]|55|6[67]|77)\\d{5}", null, null, null, "22212345"], [null, null, "(?:7[09]|9[0-36-9])\\d{6}", null, null, null, "90112345"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "TG", 228, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[279]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22849 TH: [null, [null, null, "(?:1\\d\\d?|[2-57]|[689]\\d)\\d{7}", null, null, null, null, null, null, [8, 9, 10]], [null, null, "(?:2\\d|3[2-9]|4[2-5]|5[2-6]|7[3-7])\\d{6}", null, null, null, "21234567", null, null, [8]], [null, null, "(?:14|6[1-6]|[89]\\d)\\d{7}", null, null, null, "812345678", null, null, [9]], [null, null, "1800\\d{6}", null, null, null, "1800123456", null, null, [10]], [null, null, "1900\\d{6}", null, null, null, "1900123456", null, null, [10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "6[08]\\d{7}", null, null, null, "601234567", null, null, [9]], "TH", 66, "00[1-9]", "0", null, null, "0", null, null, null, [[null, "(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["2"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["14|[3-9]"], "0$1"], [null, "(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["1"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22850 TJ: [null, [null, null, "(?:[3-59]\\d|77|88)\\d{7}", null, null, null, null, null, null, [9], [3, 5, 6, 7]], [null, null, "(?:3(?:1[3-5]|2[245]|3[12]|4[24-7]|5[25]|72)|4(?:46|74|87))\\d{6}", null, null, null, "372123456", null, null, null, [3, 5, 6, 7]], [null, null, "(?:41[18]|(?:5[05]|77|88|9[0-35-9])\\d)\\d{6}", null, null, null, "917123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "TJ", 992, "810", "8", null, null, "8", null, "8~10", null, [[null, "(\\d{4})(\\d)(\\d{4})", "$1 $2 $3", ["3(?:[1245]|3[12])", "3(?:[1245]|3(?:1[0-689]|2))"], null, null, 1], [null, "(\\d{6})(\\d)(\\d{2})", "$1 $2 $3", ["33"], null, null, 1], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["4[148]|[578]|9(?:[0235-9]|1[0-69])"], null, null, 1], [null, "(\\d{3})(\\d{2})(\\d{4})", "$1 $2 $3", ["[349]"], null, null, 1]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22851 TK: [null, [null, null, "[2-47]\\d{3,6}", null, null, null, null, null, null, [4, 5, 6, 7]], [null, null, "(?:2[2-4]|[34]\\d)\\d{2,5}", null, null, null, "3101"], [null, null, "7[2-4]\\d{2,5}", null, null, null, "7290"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "TK", 690, "00", null, null, null, null, null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22852 TL: [null, [null, null, "(?:[2-4]\\d|7\\d\\d?|[89]0)\\d{5}", null, null, null, null, null, null, [7, 8]], [null, null, "(?:2[1-5]|3[1-9]|4[1-4])\\d{5}", null, null, null, "2112345", null, null, [7]], [null, null, "7[3-8]\\d{6}", null, null, null, "77212345", null, null, [8]], [null, null, "80\\d{5}", null, null, null, "8012345", null, null, [7]], [null, null, "90\\d{5}", null, null, null, "9012345", null, null, [7]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "70\\d{5}", null, null, null, "7012345", null, null, [7]], [null, null, null, null, null, null, null, null, null, [-1]], "TL", 670, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["[2-489]|70"]], [null, "(\\d{4})(\\d{4})", "$1 $2", ["7"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22853 TM: [null, [null, null, "[1-6]\\d{7}", null, null, null, null, null, null, [8]], [null, null, "(?:1(?:2\\d|3[1-9])|2(?:22|4[0-35-8])|3(?:22|4[03-9])|4(?:22|3[128]|4\\d|6[15])|5(?:22|5[7-9]|6[014-689]))\\d{5}", null, null, null, "12345678"], [null, null, "6[1-9]\\d{6}", null, null, null, "66123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "TM", 993, "810", "8", null, null, "8", null, "8~10", null, [[null, "(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2-$3-$4", ["12"], "(8 $1)"], [null, "(\\d{2})(\\d{6})", "$1 $2", ["6"], "8 $1"], [null, "(\\d{3})(\\d)(\\d{2})(\\d{2})", "$1 $2-$3-$4", ["[1-5]"], "(8 $1)"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22854 TN: [null, [null, null, "[2-57-9]\\d{7}", null, null, null, null, null, null, [8]], [null, null, "(?:(?:3[0-2]|7\\d)\\d{3}|81200)\\d{3}", null, null, null, "30010123"], [null, null, "(?:(?:[259]\\d|4[0-6])\\d\\d|3(?:001|1(?:[1-35]\\d|40)|240|(?:6[0-4]|91)\\d))\\d{4}", null, null, null, "20123456"], [null, null, "8010\\d{4}", null, null, null, "80101234"], [null, null, "88\\d{6}", null, null, null, "88123456"], [null, null, "8[12]10\\d{4}", null, null, null, "81101234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "TN", 216, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[2-57-9]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22855 TO: [null, [null, null, "(?:(?:080|[56])0|[2-4]\\d|[78]\\d(?:\\d{2})?)\\d{3}", null, null, null, null, null, null, [5, 7]], [null, null, "(?:2\\d|3[1-8]|4[1-4]|[56]0|7[0149]|8[05])\\d{3}", null, null, null, "20123", null, null, [5]], [null, null, "(?:7[578]|8[46-9])\\d{5}", null, null, null, "7715123", null, null, [7]], [null, null, "0800\\d{3}", null, null, null, "0800222", null, null, [7]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "TO", 676, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{3})", "$1-$2", ["[2-6]|7[014]|8[05]"]], [null, "(\\d{3})(\\d{4})", "$1 $2", ["7[578]|8"]], [null, "(\\d{4})(\\d{3})", "$1 $2", ["0"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22856 TR: [null, [null, null, "(?:[2-58]\\d\\d|900)\\d{7}|4\\d{6}", null, null, null, null, null, null, [7, 10]], [null, null, "(?:2(?:[13][26]|[28][2468]|[45][268]|[67][246])|3(?:[13][28]|[24-6][2468]|[78][02468]|92)|4(?:[16][246]|[23578][2468]|4[26]))\\d{7}", null, null, null, "2123456789", null, null, [10]], [null, null, "5(?:(?:0[15-7]|1[06]|24|[34]\\d|5[1-59]|9[46])\\d\\d|6161)\\d{5}", null, null, null, "5012345678", null, null, [10]], [null, null, "800\\d{7}", null, null, null, "8001234567", null, null, [10]], [null, null, "(?:8[89]8|900)\\d{7}", null, null, null, "9001234567", null, null, [10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "592(?:21[12]|461)\\d{4}", null, null, null, "5922121234", null, null, [10]], [null, null, null, null, null, null, null, null, null, [-1]], "TR", 90, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d)(\\d{3})", "$1 $2 $3", ["444"], null, null, 1], [null, "(\\d{3})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2-4]"], "(0$1)", null, 1], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["512|[89]"], "0$1", null, 1], [null, "(\\d{3})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["5"], "0$1", null, 1]], [[null, "(\\d{3})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2-4]"], "(0$1)", null, 1], [null, "(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["512|[89]"], "0$1", null, 1], [null, "(\\d{3})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["5"], "0$1", null, 1]], [null, null, "512\\d{7}", null, null, null, "5123456789", null, null, [10]], null, null, [null, null, "444\\d{4}", null, null, null, null, null, null, [7]], [null, null, "(?:444|850\\d{3})\\d{4}", null, null, null, "4441444"], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22857 TT: [null, [null, null, "(?:[58]\\d\\d|900)\\d{7}", null, null, null, null, null, null, [10], [7]], [null, null, "868(?:2(?:01|[23]\\d)|6(?:0[7-9]|1[02-8]|2[1-9]|[3-69]\\d|7[0-79])|82[124])\\d{4}", null, null, null, "8682211234", null, null, null, [7]], [null, null, "868(?:2(?:6[6-9]|[7-9]\\d)|[37](?:0[1-9]|1[02-9]|[2-9]\\d)|4[6-9]\\d|6(?:20|78|8\\d))\\d{4}", null, null, null, "8682911234", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002345678"], [null, null, "900[2-9]\\d{6}", null, null, null, "9002345678"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, null, null, null, null, null, null, null, [-1]], "TT", 1, "011", "1", null, null, "1", null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "868", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "868619\\d{4}", null, null, null, "8686191234", null, null, null, [7]]], 22858 TV: [null, [null, null, "(?:2|7\\d\\d|90)\\d{4}", null, null, null, null, null, null, [5, 6, 7]], [null, null, "2[02-9]\\d{3}", null, null, null, "20123", null, null, [5]], [null, null, "(?:7[01]\\d|90)\\d{4}", null, null, null, "901234", null, null, [6, 7]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "TV", 688, "00", null, null, null, null, null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22859 TW: [null, [null, null, "(?:[24589]|7\\d)\\d{8}|[2-8]\\d{7}|2\\d{6}", null, null, null, null, null, null, [7, 8, 9, 10]], [null, null, "(?:(?:2[2-8]\\d|3[2-9]|4(?:[239]\\d|[78])|5[2-8]|6[235-79]|7[1-9])\\d\\d|8(?:2(?:3\\d|66)|[7-9]\\d\\d))\\d{4}|24\\d{6}", null, null, null, "221234567", null, null, [8, 9]], [null, null, "9[0-8]\\d{7}", null, null, null, "912345678", null, null, [9]], [null, null, "80[0-79]\\d{6}", null, null, null, "800123456", null, null, [9]], [null, null, "20(?:[013-9]\\d\\d|2)\\d{4}", null, null, null, "203123456", null, null, [7, 9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "99\\d{7}", null, null, null, "990123456", null, null, [9]], [null, null, "70\\d{8}", null, null, null, "7012345678", null, null, [10]], "TW", 886, "0(?:0[25-79]|19)", "0", "#", null, "0", null, null, null, [[null, "(\\d{2})(\\d)(\\d{4})", "$1 $2 $3", ["202"], "0$1"], [null, "(\\d)(\\d{3,4})(\\d{4})", "$1 $2 $3", ["[25][2-8]|[346]|7[1-9]|8[27-9]"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[258]"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["9"], "0$1"], [null, "(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["7"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "50[0-46-9]\\d{6}", null, null, null, "500123456", null, null, [9]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22860 TZ: [null, [null, null, "(?:[26-8]\\d|41|90)\\d{7}", null, null, null, null, null, null, [9]], [null, null, "2[2-8]\\d{7}", null, null, null, "222345678"], [null, null, "(?:6[2-9]|7[13-9])\\d{7}", null, null, null, "621234567"], [null, null, "80[08]\\d{6}", null, null, null, "800123456"], [null, null, "90\\d{7}", null, null, null, "900123456"], [null, null, "8(?:40|6[01])\\d{6}", null, null, null, "840123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "41\\d{7}", null, null, null, "412345678"], "TZ", 255, "00[056]", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[24]"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[67]"], "0$1"], [null, "(\\d{3})(\\d{2})(\\d{4})", "$1 $2 $3", ["[89]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "(?:8(?:[04]0|6[01])|90\\d)\\d{6}"], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22861 UA: [null, [null, null, "[3-9]\\d{8}", null, null, null, null, null, null, [9], [5, 6, 7]], [null, null, "(?:3[1-8]|4[13-8]|5[1-7]|6[12459])\\d{7}", null, null, null, "311234567", null, null, null, [5, 6, 7]], [null, null, "(?:39|50|6[36-8]|7[1-3]|9[1-9])\\d{7}", null, null, null, "391234567"], [null, null, "800\\d{6}", null, null, null, "800123456"], [null, null, "900[2-49]\\d{5}", null, null, null, "900212345"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "89[1-579]\\d{6}", null, null, null, "891234567"], "UA", 380, "00", "0", null, null, "0", null, "0~0", null, [[null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["(?:3[1-8]|4[136-8])2|5(?:[12457]2|6[24])|6(?:[12][29]|[49]2|5[24])|[89]0", "3(?:[1-46-8]2[013-9]|52)|4(?:[1378]2|62[013-9])|5(?:[12457]2|6[24])|6(?:[12][29]|[49]2|5[24])|[89]0"], "0$1"], [null, "(\\d{4})(\\d{5})", "$1 $2", ["3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])", "3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[3-9]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22862 UG: [null, [null, null, "(?:(?:[29]0|[347]\\d)\\d|800)\\d{6}", null, null, null, null, null, null, [9], [5, 6, 7]], [null, null, "(?:20(?:(?:(?:[0147]\\d|5[0-4]|8[0-2])\\d|2(?:40|[5-9]\\d)|3(?:0[0-4]|[2367]\\d))\\d|6(?:00[0-2]|30[0-4]|[5-9]\\d\\d))|[34]\\d{5})\\d{3}", null, null, null, "312345678", null, null, null, [5, 6, 7]], [null, null, "7(?:(?:[0157-9]\\d|30|4[0-4])\\d|2(?:[03]\\d|60))\\d{5}", null, null, null, "712345678"], [null, null, "800[1-3]\\d{5}", null, null, null, "800123456"], [null, null, "90[1-3]\\d{6}", null, null, null, "901123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "UG", 256, "00[057]", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{7})", "$1 $2", ["3|4(?:[0-5]|6[0-36-9])"], "0$1"], [null, "(\\d{4})(\\d{5})", "$1 $2", ["202", "2024"], "0$1"], [null, "(\\d{3})(\\d{6})", "$1 $2", ["[247-9]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22863 US: [null, [null, null, "[2-9]\\d{9}", null, null, null, null, null, null, [10], [7]], [null, null, "(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[0135]|3[0-24679]|4[67]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[0235]|58|6[39]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[013-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[017]|6[0-279]|78|8[0-2])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[02-59]|8[156])|8(?:0[1-68]|1[02-8]|2[08]|3[0-28]|4[3578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[0179]|5[12469]|7[0-389]|8[04-69]))[2-9]\\d{6}", null, null, null, "2015550123", null, null, null, [7]], [null, null, "(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[0135]|3[0-24679]|4[67]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[0235]|58|6[39]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[013-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[017]|6[0-279]|78|8[0-2])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[02-59]|8[156])|8(?:0[1-68]|1[02-8]|2[08]|3[0-28]|4[3578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[0179]|5[12469]|7[0-389]|8[04-69]))[2-9]\\d{6}", null, null, null, "2015550123", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002345678"], [null, null, "900[2-9]\\d{6}", null, null, null, "9002345678"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, null, null, null, null, null, null, null, [-1]], "US", 1, "011", "1", null, null, "1", null, null, 1, [[null, "(\\d{3})(\\d{4})", "$1-$2", ["[2-9]"]], [null, "(\\d{3})(\\d{3})(\\d{4})", "($1) $2-$3", ["[2-9]"], null, null, 1]], [[null, "(\\d{3})(\\d{3})(\\d{4})", "$1-$2-$3", ["[2-9]"]]], [null, null, null, null, null, null, null, null, null, [-1]], 1, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "710[2-9]\\d{6}", null, null, null, "7102123456"], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22864 UY: [null, [null, null, "(?:[249]\\d\\d|80)\\d{5}|9\\d{6}", null, null, null, null, null, null, [7, 8]], [null, null, "(?:2\\d|4[2-7])\\d{6}", null, null, null, "21231234", null, null, [8], [7]], [null, null, "9[1-9]\\d{6}", null, null, null, "94231234", null, null, [8]], [null, null, "80[05]\\d{4}", null, null, null, "8001234", null, null, [7]], [null, null, "90[0-8]\\d{4}", null, null, null, "9001234", null, null, [7]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "UY", 598, "0(?:0|1[3-9]\\d)", "0", " int. ", null, "0", null, "00", null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["8|90"], "0$1"], [null, "(\\d{4})(\\d{4})", "$1 $2", ["[24]"]], [null, "(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["9"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22865 UZ: [null, [null, null, "[679]\\d{8}", null, null, null, null, null, null, [9], [7]], [null, null, "(?:6(?:1(?:22|3[124]|4[1-4]|5[1-3578]|64)|2(?:22|3[0-57-9]|41)|5(?:22|3[3-7]|5[024-8])|6\\d\\d|7(?:[23]\\d|7[69])|9(?:22|4[1-8]|6[135]))|7(?:0(?:5[4-9]|6[0146]|7[124-6]|9[135-8])|1[12]\\d|2(?:22|3[13-57-9]|4[1-3579]|5[14])|3(?:2\\d|3[1578]|4[1-35-7]|5[1-57]|61)|4(?:2\\d|3[1-579]|7[1-79])|5(?:22|5[1-9]|6[1457])|6(?:22|3[12457]|4[13-8])|9(?:22|5[1-9])))\\d{5}", null, null, null, "669050123", null, null, null, [7]], [null, null, "(?:6(?:1(?:2(?:2[01]|98)|35[0-4]|50\\d|61[23]|7(?:[01][017]|4\\d|55|9[5-9]))|2(?:(?:11|7\\d)\\d|2(?:[12]1|9[01379])|5(?:[126]\\d|3[0-4]))|5(?:19[01]|2(?:27|9[26])|(?:30|59|7\\d)\\d)|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|(?:3[79]|9[0-3])\\d|4(?:56|83)|7(?:[07]\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79]))|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\d|[39][07])|9(?:0\\d|7[079]))|9(?:2(?:1[1267]|3[01]|5\\d|7[0-4])|(?:5[67]|7\\d)\\d|6(?:2[0-26]|8\\d)))|7(?:0\\d{3}|1(?:13[01]|6(?:0[47]|1[67]|66)|71[3-69]|98\\d)|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\d|7(?:0\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|(?:33|9[4-6])\\d|5(?:0[0-4]|5[579]|9\\d)|7(?:[0-3579]\\d|4[0467]|6[67]|8[078]))|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\d|9[5-9])|7(?:0\\d|1[024589]|2[0-27]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\d))|5(?:112|2(?:0\\d|2[29]|[49]4)|3[1568]\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\d|8[78]|9[079]))|6(?:2(?:2[1245]|4[2-4])|39\\d|41[179]|5(?:[349]\\d|5[0-2])|7(?:0[017]|[13]\\d|22|44|55|67|88))|9(?:22[128]|3(?:2[0-4]|7\\d)|57[02569]|7(?:2[05-9]|3[37]|4\\d|60|7[2579]|87|9[07])))|9[0-57-9]\\d{3})\\d{4}", null, null, null, "912345678"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "UZ", 998, "810", "8", null, null, "8", null, "8~10", null, [[null, "(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[679]"], "8 $1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22866 VA: [null, [null, null, "0\\d{6}(?:\\d{4})?|3[0-8]\\d{9}|(?:[0138]\\d?|55)\\d{8}|[08]\\d{5}(?:\\d{2})?", null, null, null, null, null, null, [6, 7, 8, 9, 10, 11]], [null, null, "06698\\d{1,6}", null, null, null, "0669812345"], [null, null, "33\\d{9}|3[1-9]\\d{8}|3[2-9]\\d{7}", null, null, null, "3123456789", null, null, [9, 10, 11]], [null, null, "80(?:0\\d{3}|3)\\d{3}", null, null, null, "800123456", null, null, [6, 9]], [null, null, "(?:(?:0878|1(?:44|6[346])\\d)\\d\\d|89(?:2|(?:4[5-9]|(?:5[5-9]|9)\\d\\d)\\d))\\d{3}|89[45][0-4]\\d\\d", null, null, null, "899123456", null, null, [6, 8, 9, 10]], [null, null, "84(?:[08]\\d{3}|[17])\\d{3}", null, null, null, "848123456", null, null, [6, 9]], [null, null, "1(?:78\\d|99)\\d{6}", null, null, null, "1781234567", null, null, [9, 10]], [null, null, "55\\d{8}", null, null, null, "5512345678", null, null, [10]], "VA", 39, "00", null, null, null, null, null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "06698", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22867 VC: [null, [null, null, "(?:[58]\\d\\d|784|900)\\d{7}", null, null, null, null, null, null, [10], [7]], [null, null, "784(?:266|3(?:6[6-9]|7\\d|8[0-24-6])|4(?:38|5[0-36-8]|8[0-8])|5(?:55|7[0-2]|93)|638|784)\\d{4}", null, null, null, "7842661234", null, null, null, [7]], [null, null, "784(?:4(?:3[0-5]|5[45]|89|9[0-8])|5(?:2[6-9]|3[0-4]))\\d{4}", null, null, null, "7844301234", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002345678"], [null, null, "900[2-9]\\d{6}", null, null, null, "9002345678"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, null, null, null, null, null, null, null, [-1]], "VC", 1, "011", "1", null, null, "1", null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "784", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22868 VE: [null, [null, null, "(?:(?:[24]\\d|50)\\d|[89]00)\\d{7}", null, null, null, null, null, null, [10], [7]], [null, null, "(?:2(?:12|3[457-9]|[467]\\d|[58][1-9]|9[1-6])|50[01])\\d{7}", null, null, null, "2121234567", null, null, null, [7]], [null, null, "4(?:1[24-8]|2[46])\\d{7}", null, null, null, "4121234567"], [null, null, "800\\d{7}", null, null, null, "8001234567"], [null, null, "900\\d{7}", null, null, null, "9001234567"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "VE", 58, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d{7})", "$1-$2", ["[24589]"], "0$1", "$CC $1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22869 VG: [null, [null, null, "(?:284|[58]\\d\\d|900)\\d{7}", null, null, null, null, null, null, [10], [7]], [null, null, "284(?:(?:229|774|8(?:52|6[459]))\\d|4(?:22\\d|9(?:[45]\\d|6[0-5])))\\d{3}", null, null, null, "2842291234", null, null, null, [7]], [null, null, "284(?:(?:3(?:0[0-3]|4[0-7]|68|9[34])|54[0-57])\\d|4(?:(?:4[0-6]|68)\\d|9(?:6[6-9]|9\\d)))\\d{3}", null, null, null, "2843001234", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002345678"], [null, null, "900[2-9]\\d{6}", null, null, null, "9002345678"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, null, null, null, null, null, null, null, [-1]], "VG", 1, "011", "1", null, null, "1", null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "284", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22870 VI: [null, [null, null, "(?:(?:34|90)0|[58]\\d\\d)\\d{7}", null, null, null, null, null, null, [10], [7]], [null, null, "340(?:2(?:01|2[06-8]|44|77)|3(?:32|44)|4(?:22|7[34])|5(?:1[34]|55)|6(?:26|4[23]|77|9[023])|7(?:1[2-57-9]|27|7\\d)|884|998)\\d{4}", null, null, null, "3406421234", null, null, null, [7]], [null, null, "340(?:2(?:01|2[06-8]|44|77)|3(?:32|44)|4(?:22|7[34])|5(?:1[34]|55)|6(?:26|4[23]|77|9[023])|7(?:1[2-57-9]|27|7\\d)|884|998)\\d{4}", null, null, null, "3406421234", null, null, null, [7]], [null, null, "8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", null, null, null, "8002345678"], [null, null, "900[2-9]\\d{6}", null, null, null, "9002345678"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "5(?:00|2[12]|33|44|66|77|88)[2-9]\\d{6}", null, null, null, "5002345678"], [null, null, null, null, null, null, null, null, null, [-1]], "VI", 1, "011", "1", null, null, "1", null, null, 1, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "340", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22871 VN: [null, [null, null, "[12]\\d{9}|[135-9]\\d{8}|(?:[16]\\d?|[78])\\d{6}", null, null, null, null, null, null, [7, 8, 9, 10]], [null, null, "2(?:0[3-9]|1[0-689]|2[0-25-9]|3[2-9]|4[2-8]|5[124-9]|6[0-39]|7[0-7]|8[2-7]|9[0-4679])\\d{7}", null, null, null, "2101234567", null, null, [10]], [null, null, "(?:(?:3\\d|7[06-9])\\d|5(?:2[238]|[689]\\d)|8(?:[1-58]\\d|6[5689]|9[689])|9(?:[0-8]\\d|9[013-9]))\\d{6}", null, null, null, "912345678", null, null, [9]], [null, null, "1800\\d{4,6}", null, null, null, "1800123456", null, null, [8, 9, 10]], [null, null, "1900\\d{4,6}", null, null, null, "1900123456", null, null, [8, 9, 10]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:67|99)2\\d{6}", null, null, null, "992012345", null, null, [9]], "VN", 84, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{5})", "$1 $2", ["80"], "0$1", null, 1], [null, "(\\d{3})(\\d{4})", "$1 $2", ["[17]99"], "0$1", null, 1], [null, "(\\d{3})(\\d{4,5})", "$1 $2", ["69"], "0$1", null, 1], [null, "(\\d{4})(\\d{4,6})", "$1 $2", ["1"], null, null, 1], [null, "(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[69]"], "0$1", null, 1], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[3578]"], "0$1", null, 1], [null, "(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["2[48]"], "0$1", null, 1], [null, "(\\d{3})(\\d{4})(\\d{3})", "$1 $2 $3", ["2"], "0$1", null, 1]], [[null, "(\\d{2})(\\d{5})", "$1 $2", ["80"], "0$1", null, 1], [null, "(\\d{4})(\\d{4,6})", "$1 $2", ["1"], null, null, 1], [null, "(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[69]"], "0$1", null, 1], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[3578]"], "0$1", null, 1], [null, "(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["2[48]"], "0$1", null, 1], [null, "(\\d{3})(\\d{4})(\\d{3})", "$1 $2 $3", ["2"], "0$1", null, 1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "(?:[17]99|69\\d\\d?)\\d{4}", null, null, null, null, null, null, [7, 8]], [null, null, "(?:[17]99|69\\d\\d?|80\\d)\\d{4}", null, null, null, "1992000", null, null, [7, 8]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22872 VU: [null, [null, null, "(?:(?:[23]|(?:[57]\\d|90)\\d)\\d|[48]8)\\d{3}", null, null, null, null, null, null, [5, 7]], [null, null, "(?:(?:2[02-9]|88)\\d|3(?:[5-7]\\d|8[0-8])|48[4-9])\\d\\d", null, null, null, "22123", null, null, [5]], [null, null, "(?:5(?:[0-689]\\d|7[2-5])|7[013-7]\\d)\\d{4}", null, null, null, "5912345", null, null, [7]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "90[1-9]\\d{4}", null, null, null, "9010123", null, null, [7]], "VU", 678, "00", null, null, null, null, null, null, null, [[null, "(\\d{3})(\\d{4})", "$1 $2", ["[579]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "(?:3[03]|900\\d)\\d{3}", null, null, null, "30123"], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22873 WF: [null, [null, null, "(?:[45]0|68|72|8\\d)\\d{4}", null, null, null, null, null, null, [6]], [null, null, "(?:50|68|72)\\d{4}", null, null, null, "501234"], [null, null, "(?:50|68|72|8[23])\\d{4}", null, null, null, "501234"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "WF", 681, "00", null, null, null, null, null, null, null, [[null, "(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3", ["[4-8]"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, "[48]0\\d{4}", null, null, null, "401234"]], 22874 WS: [null, [null, null, "(?:[2-6]|8\\d(?:\\d{4})?)\\d{4}|[78]\\d{6}", null, null, null, null, null, null, [5, 6, 7, 10]], [null, null, "(?:[2-5]\\d|6[1-9])\\d{3}", null, null, null, "22123", null, null, [5]], [null, null, "(?:7[25-7]|8(?:[3-7]|9\\d{3}))\\d{5}", null, null, null, "7212345", null, null, [7, 10]], [null, null, "800\\d{3}", null, null, null, "800123", null, null, [6]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "WS", 685, "0", null, null, null, null, null, null, null, [[null, "(\\d{5})", "$1", ["[2-6]"]], [null, "(\\d{3})(\\d{3,7})", "$1 $2", ["8"]], [null, "(\\d{2})(\\d{5})", "$1 $2", ["7"]]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22875 XK: [null, [null, null, "(?:[23]\\d{2,3}|4\\d\\d|[89]00)\\d{5}", null, null, null, null, null, null, [8, 9]], [null, null, "(?:2[89]|39)0\\d{6}|[23][89]\\d{6}", null, null, null, "28012345"], [null, null, "4[3-79]\\d{6}", null, null, null, "43201234", null, null, [8]], [null, null, "800\\d{5}", null, null, null, "80001234", null, null, [8]], [null, null, "900\\d{5}", null, null, null, "90001234", null, null, [8]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "XK", 383, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[2-4]"], "0$1"], [null, "(\\d{3})(\\d{5})", "$1 $2", ["[89]"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[23]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22876 YE: [null, [null, null, "(?:1|7\\d)\\d{7}|[1-7]\\d{6}", null, null, null, null, null, null, [7, 8, 9], [6]], [null, null, "17\\d{6}|(?:[12][2-68]|3[2358]|4[2-58]|5[2-6]|6[3-58]|7[24-68])\\d{5}", null, null, null, "1234567", null, null, [7, 8], [6]], [null, null, "7[0137]\\d{7}", null, null, null, "712345678", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "YE", 967, "00", "0", null, null, "0", null, null, null, [[null, "(\\d)(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[1-6]|7[24-68]"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["7"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22877 YT: [null, [null, null, "(?:(?:26|63)9|80\\d)\\d{6}", null, null, null, null, null, null, [9]], [null, null, "269(?:0[67]|5[01]|6\\d|[78]0)\\d{4}", null, null, null, "269601234"], [null, null, "639(?:0[0-79]|1[019]|[267]\\d|3[09]|[45]0|9[04-79])\\d{4}", null, null, null, "639012345"], [null, null, "80\\d{7}", null, null, null, "801234567"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "YT", 262, "00", "0", null, null, "0", null, null, null, null, null, [null, null, null, null, null, null, null, null, null, [-1]], null, "269|63", [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22878 ZA: [null, [null, null, "[1-9]\\d{8}|8\\d{4,7}", null, null, null, null, null, null, [5, 6, 7, 8, 9]], [null, null, "(?:1[0-8]|2[1-378]|3[1-69]|4\\d|5[1346-8])\\d{7}", null, null, null, "101234567", null, null, [9]], [null, null, "(?:6\\d|7[0-46-9]|8[1-5])\\d{7}|8[1-4]\\d{3,6}", null, null, null, "711234567"], [null, null, "80\\d{7}", null, null, null, "801234567", null, null, [9]], [null, null, "(?:86[2-9]|9[0-2]\\d)\\d{6}", null, null, null, "862345678", null, null, [9]], [null, null, "860\\d{6}", null, null, null, "860123456", null, null, [9]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "87\\d{7}", null, null, null, "871234567", null, null, [9]], "ZA", 27, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{2})(\\d{3,4})", "$1 $2", ["8[1-4]"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{2,3})", "$1 $2 $3", ["8[1-4]"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["860"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[1-9]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "861\\d{6}", null, null, null, "861123456", null, null, [9]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22879 ZM: [null, [null, null, "(?:(?:21|76|9\\d)\\d|800)\\d{6}", null, null, null, null, null, null, [9], [6]], [null, null, "21[1-8]\\d{6}", null, null, null, "211234567", null, null, null, [6]], [null, null, "(?:76|9[5-8])\\d{7}", null, null, null, "955123456"], [null, null, "800\\d{6}", null, null, null, "800123456"], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], "ZM", 260, "00", "0", null, null, "0", null, null, null, [[null, "(\\d{3})(\\d{3})", "$1 $2"], [null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[28]"], "0$1"], [null, "(\\d{2})(\\d{7})", "$1 $2", ["[79]"], "0$1"]], [[null, "(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[28]"], "0$1"], [null, "(\\d{2})(\\d{7})", "$1 $2", ["[79]"], "0$1"]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]], 22880 ZW: [null, [null, null, "2(?:[0-57-9]\\d{6,8}|6[0-24-9]\\d{6,7})|[38]\\d{9}|[35-8]\\d{8}|[3-6]\\d{7}|[1-689]\\d{6}|[1-3569]\\d{5}|[1356]\\d{4}", null, null, null, null, null, null, [5, 6, 7, 8, 9, 10], [3, 4]], [null, null, "(?:1(?:(?:3\\d|9)\\d|[4-8])|2(?:(?:(?:0(?:2[014]|5)|(?:2[0157]|31|84|9)\\d\\d|[56](?:[14]\\d\\d|20)|7(?:[089]|2[03]|[35]\\d\\d))\\d|4(?:2\\d\\d|8))\\d|1(?:2|[39]\\d{4}))|3(?:(?:123|(?:29\\d|92)\\d)\\d\\d|7(?:[19]|[56]\\d))|(?:4\\d\\d|9[2-9])\\d\\d?|5(?:0|1[2-478]|26|[37]2|4(?:2\\d{3}|83)|5(?:25\\d\\d|[78])|[689]\\d)|6(?:(?:[16-8]21|28|52[013])\\d\\d|[39])|8(?:[1349]28|523)\\d\\d)\\d{3}|(?:(?:2(?:(?:(?:0|8[146])\\d|7[1-7])\\d|2(?:[278]\\d|92)|58(?:2\\d|3))|3(?:[26]|9\\d{3})|5(?:4\\d|5)\\d\\d)\\d|6(?:(?:(?:[0-246]|[78]\\d)\\d|37)\\d|5[2-8]))\\d\\d|(?:2(?:[569]\\d|8[2-57-9])|3(?:[013-59]\\d|8[37])|6[89]8)\\d{3}", null, null, null, "1312345", null, null, null, [3, 4]], [null, null, "(?:7(?:1\\d|3[2-9]|7[1-9]|8[2-5])|8644)\\d{6}", null, null, null, "712345678", null, null, [9, 10]], [null, null, "80(?:[01]\\d|20|8[0-8])\\d{3}", null, null, null, "8001234", null, null, [7]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], [null, null, "86(?:1[12]|30|55|77|8[368])\\d{6}", null, null, null, "8686123456", null, null, [10]], "ZW", 263, "00", "0", null, null, "0", null, null, null, [[null, "(\\d)(\\d{3})(\\d{2,4})", "$1 $2 $3", ["[49]"], "0$1"], [null, "(\\d{3})(\\d{3,5})", "$1 $2", ["2(?:0[45]|2[278]|[49]8|[78])|3(?:[09]8|17|3[78]|[78])|5[15][78]|6(?:[29]8|37|[68][78]|75)"], "0$1"], [null, "(\\d{3})(\\d{4})", "$1 $2", ["80"], "0$1"], [null, "(\\d{2})(\\d{7})", "$1 $2", ["2(?:[05-79]2|4)|(?:39|5[45]|6[15-8])2|8[13-59]", "2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]"], "(0$1)"], [null, "(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["7"], "0$1"], [null, "(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)", "2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)"], "0$1"], [null, "(\\d{4})(\\d{6})", "$1 $2", ["8"], "0$1"], [null, "(\\d{2})(\\d{3,5})", "$1 $2", ["[16]|2(?:[0-256]|9[0-79])|3(?:[09][0-79]|1[0-689]|[24-6]|3[0-69])|5[0-35-9]"], "0$1"], [null, "(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["29|3|54"], "0$1"], [null, "(\\d{4})(\\d{3,5})", "$1 $2", ["[25]"], "0$1"]], null, [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]], [null, null, null, null, null, null, null, null, null, [-1]], null, null, [null, null, null, null, null, null, null, null, null, [-1]]] 22881 }; 22882 y.b = function () { 22883 return y.a ? y.a : y.a = new y(); 22884 }; 22885 var ul = { 22886 0: "0", 22887 1: "1", 22888 2: "2", 22889 3: "3", 22890 4: "4", 22891 5: "5", 22892 6: "6", 22893 7: "7", 22894 8: "8", 22895 9: "9", 22896 "ï¼": "0", 22897 "ï¼": "1", 22898 "ï¼": "2", 22899 "ï¼": "3", 22900 "ï¼": "4", 22901 "ï¼": "5", 22902 "ï¼": "6", 22903 "ï¼": "7", 22904 "ï¼": "8", 22905 "ï¼": "9", 22906 "Ù ": "0", 22907 "Ù¡": "1", 22908 "Ù¢": "2", 22909 "Ù£": "3", 22910 "Ù¤": "4", 22911 "Ù¥": "5", 22912 "Ù¦": "6", 22913 "Ù§": "7", 22914 "Ù¨": "8", 22915 "Ù©": "9", 22916 "Û°": "0", 22917 "Û±": "1", 22918 "Û²": "2", 22919 "Û³": "3", 22920 "Û´": "4", 22921 "Ûµ": "5", 22922 "Û¶": "6", 22923 "Û·": "7", 22924 "Û¸": "8", 22925 "Û¹": "9" 22926 }, 22927 dl = RegExp("[+ï¼]+"), 22928 $l = RegExp("([0-9ï¼-ï¼Ù -Ù©Û°-Û¹])"), 22929 tl = /^\(?\$1\)?$/, 22930 el = new A(); 22931 h(el, 11, "NA"); 22932 var rl = /\[([^\[\]])*\]/g, 22933 il = /\d(?=[^,}][^,}])/g, 22934 al = RegExp("^[-xâ-ââã¼ï¼-ï¼ Â Âââ ã()ï¼ï¼ï¼»ï¼½.\\[\\]/~ââ¼ï½]*(\\$\\d[-xâ-ââã¼ï¼-ï¼ Â Âââ ã()ï¼ï¼ï¼»ï¼½.\\[\\]/~ââ¼ï½]*)+$"), 22935 ol = /[- ]/; 22936 E.prototype.K = function () { 22937 this.C = "", d(this.i), d(this.u), d(this.m), this.s = 0, this.w = "", d(this.b), this.h = "", d(this.a), this.l = !0, this.A = this.o = this.F = !1, this.f = [], this.B = !1, this.g != this.J && (this.g = v(this, this.D)); 22938 }, E.prototype.L = function (l) { 22939 return this.C = K(this, l); 22940 }, l("Cleave.AsYouTypeFormatter", E), l("Cleave.AsYouTypeFormatter.prototype.inputDigit", E.prototype.L), l("Cleave.AsYouTypeFormatter.prototype.clear", E.prototype.K); 22941}.call("object" == (typeof global === "undefined" ? "undefined" : _typeof(global)) && global ? global : window); 22942/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) 22943 22944/***/ }), 22945
vendor: 45,995 bytes, lines 22946-24232
22946/***/ "./node_modules/cleave.js/dist/cleave-esm.js": 22947/*!***************************************************!*\ 22948 !*** ./node_modules/cleave.js/dist/cleave-esm.js ***! 22949 \***************************************************/ 22950/*! exports provided: default */ 22951/***/ (function(module, __webpack_exports__, __webpack_require__) { 22952 22953"use strict"; 22954__webpack_require__.r(__webpack_exports__); 22955/* WEBPACK VAR INJECTION */(function(global) {function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 22956var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; 22957var NumeralFormatter = function NumeralFormatter(numeralDecimalMark, numeralIntegerScale, numeralDecimalScale, numeralThousandsGroupStyle, numeralPositiveOnly, stripLeadingZeroes, prefix, signBeforePrefix, tailPrefix, delimiter) { 22958 var owner = this; 22959 owner.numeralDecimalMark = numeralDecimalMark || '.'; 22960 owner.numeralIntegerScale = numeralIntegerScale > 0 ? numeralIntegerScale : 0; 22961 owner.numeralDecimalScale = numeralDecimalScale >= 0 ? numeralDecimalScale : 2; 22962 owner.numeralThousandsGroupStyle = numeralThousandsGroupStyle || NumeralFormatter.groupStyle.thousand; 22963 owner.numeralPositiveOnly = !!numeralPositiveOnly; 22964 owner.stripLeadingZeroes = stripLeadingZeroes !== false; 22965 owner.prefix = prefix || prefix === '' ? prefix : ''; 22966 owner.signBeforePrefix = !!signBeforePrefix; 22967 owner.tailPrefix = !!tailPrefix; 22968 owner.delimiter = delimiter || delimiter === '' ? delimiter : ','; 22969 owner.delimiterRE = delimiter ? new RegExp('\\' + delimiter, 'g') : ''; 22970}; 22971NumeralFormatter.groupStyle = { 22972 thousand: 'thousand', 22973 lakh: 'lakh', 22974 wan: 'wan', 22975 none: 'none' 22976}; 22977NumeralFormatter.prototype = { 22978 getRawValue: function getRawValue(value) { 22979 return value.replace(this.delimiterRE, '').replace(this.numeralDecimalMark, '.'); 22980 }, 22981 format: function format(value) { 22982 var owner = this, 22983 parts, 22984 partSign, 22985 partSignAndPrefix, 22986 partInteger, 22987 partDecimal = ''; 22988 22989 // strip alphabet letters 22990 value = value.replace(/[A-Za-z]/g, '') 22991 // replace the first decimal mark with reserved placeholder 22992 .replace(owner.numeralDecimalMark, 'M') 22993 22994 // strip non numeric letters except minus and "M" 22995 // this is to ensure prefix has been stripped 22996 .replace(/[^\dM-]/g, '') 22997 22998 // replace the leading minus with reserved placeholder 22999 .replace(/^\-/, 'N') 23000 23001 // strip the other minus sign (if present) 23002 .replace(/\-/g, '') 23003 23004 // replace the minus sign (if present) 23005 .replace('N', owner.numeralPositiveOnly ? '' : '-') 23006 23007 // replace decimal mark 23008 .replace('M', owner.numeralDecimalMark); 23009 23010 // strip any leading zeros 23011 if (owner.stripLeadingZeroes) { 23012 value = value.replace(/^(-)?0+(?=\d)/, '$1'); 23013 } 23014 partSign = value.slice(0, 1) === '-' ? '-' : ''; 23015 if (typeof owner.prefix != 'undefined') { 23016 if (owner.signBeforePrefix) { 23017 partSignAndPrefix = partSign + owner.prefix; 23018 } else { 23019 partSignAndPrefix = owner.prefix + partSign; 23020 } 23021 } else { 23022 partSignAndPrefix = partSign; 23023 } 23024 partInteger = value; 23025 if (value.indexOf(owner.numeralDecimalMark) >= 0) { 23026 parts = value.split(owner.numeralDecimalMark); 23027 partInteger = parts[0]; 23028 partDecimal = owner.numeralDecimalMark + parts[1].slice(0, owner.numeralDecimalScale); 23029 } 23030 if (partSign === '-') { 23031 partInteger = partInteger.slice(1); 23032 } 23033 if (owner.numeralIntegerScale > 0) { 23034 partInteger = partInteger.slice(0, owner.numeralIntegerScale); 23035 } 23036 switch (owner.numeralThousandsGroupStyle) { 23037 case NumeralFormatter.groupStyle.lakh: 23038 partInteger = partInteger.replace(/(\d)(?=(\d\d)+\d$)/g, '$1' + owner.delimiter); 23039 break; 23040 case NumeralFormatter.groupStyle.wan: 23041 partInteger = partInteger.replace(/(\d)(?=(\d{4})+$)/g, '$1' + owner.delimiter); 23042 break; 23043 case NumeralFormatter.groupStyle.thousand: 23044 partInteger = partInteger.replace(/(\d)(?=(\d{3})+$)/g, '$1' + owner.delimiter); 23045 break; 23046 } 23047 if (owner.tailPrefix) { 23048 return partSign + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '') + owner.prefix; 23049 } 23050 return partSignAndPrefix + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : ''); 23051 } 23052}; 23053var NumeralFormatter_1 = NumeralFormatter; 23054var DateFormatter = function DateFormatter(datePattern, dateMin, dateMax) { 23055 var owner = this; 23056 owner.date = []; 23057 owner.blocks = []; 23058 owner.datePattern = datePattern; 23059 owner.dateMin = dateMin.split('-').reverse().map(function (x) { 23060 return parseInt(x, 10); 23061 }); 23062 if (owner.dateMin.length === 2) owner.dateMin.unshift(0); 23063 owner.dateMax = dateMax.split('-').reverse().map(function (x) { 23064 return parseInt(x, 10); 23065 }); 23066 if (owner.dateMax.length === 2) owner.dateMax.unshift(0); 23067 owner.initBlocks(); 23068}; 23069DateFormatter.prototype = { 23070 initBlocks: function initBlocks() { 23071 var owner = this; 23072 owner.datePattern.forEach(function (value) { 23073 if (value === 'Y') { 23074 owner.blocks.push(4); 23075 } else { 23076 owner.blocks.push(2); 23077 } 23078 }); 23079 }, 23080 getISOFormatDate: function getISOFormatDate() { 23081 var owner = this, 23082 date = owner.date; 23083 return date[2] ? date[2] + '-' + owner.addLeadingZero(date[1]) + '-' + owner.addLeadingZero(date[0]) : ''; 23084 }, 23085 getBlocks: function getBlocks() { 23086 return this.blocks; 23087 }, 23088 getValidatedDate: function getValidatedDate(value) { 23089 var owner = this, 23090 result = ''; 23091 value = value.replace(/[^\d]/g, ''); 23092 owner.blocks.forEach(function (length, index) { 23093 if (value.length > 0) { 23094 var sub = value.slice(0, length), 23095 sub0 = sub.slice(0, 1), 23096 rest = value.slice(length); 23097 switch (owner.datePattern[index]) { 23098 case 'd': 23099 if (sub === '00') { 23100 sub = '01'; 23101 } else if (parseInt(sub0, 10) > 3) { 23102 sub = '0' + sub0; 23103 } else if (parseInt(sub, 10) > 31) { 23104 sub = '31'; 23105 } 23106 break; 23107 case 'm': 23108 if (sub === '00') { 23109 sub = '01'; 23110 } else if (parseInt(sub0, 10) > 1) { 23111 sub = '0' + sub0; 23112 } else if (parseInt(sub, 10) > 12) { 23113 sub = '12'; 23114 } 23115 break; 23116 } 23117 result += sub; 23118 23119 // update remaining string 23120 value = rest; 23121 } 23122 }); 23123 return this.getFixedDateString(result); 23124 }, 23125 getFixedDateString: function getFixedDateString(value) { 23126 var owner = this, 23127 datePattern = owner.datePattern, 23128 date = [], 23129 dayIndex = 0, 23130 monthIndex = 0, 23131 yearIndex = 0, 23132 dayStartIndex = 0, 23133 monthStartIndex = 0, 23134 yearStartIndex = 0, 23135 day, 23136 month, 23137 year, 23138 fullYearDone = false; 23139 23140 // mm-dd || dd-mm 23141 if (value.length === 4 && datePattern[0].toLowerCase() !== 'y' && datePattern[1].toLowerCase() !== 'y') { 23142 dayStartIndex = datePattern[0] === 'd' ? 0 : 2; 23143 monthStartIndex = 2 - dayStartIndex; 23144 day = parseInt(value.slice(dayStartIndex, dayStartIndex + 2), 10); 23145 month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10); 23146 date = this.getFixedDate(day, month, 0); 23147 } 23148 23149 // yyyy-mm-dd || yyyy-dd-mm || mm-dd-yyyy || dd-mm-yyyy || dd-yyyy-mm || mm-yyyy-dd 23150 if (value.length === 8) { 23151 datePattern.forEach(function (type, index) { 23152 switch (type) { 23153 case 'd': 23154 dayIndex = index; 23155 break; 23156 case 'm': 23157 monthIndex = index; 23158 break; 23159 default: 23160 yearIndex = index; 23161 break; 23162 } 23163 }); 23164 yearStartIndex = yearIndex * 2; 23165 dayStartIndex = dayIndex <= yearIndex ? dayIndex * 2 : dayIndex * 2 + 2; 23166 monthStartIndex = monthIndex <= yearIndex ? monthIndex * 2 : monthIndex * 2 + 2; 23167 day = parseInt(value.slice(dayStartIndex, dayStartIndex + 2), 10); 23168 month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10); 23169 year = parseInt(value.slice(yearStartIndex, yearStartIndex + 4), 10); 23170 fullYearDone = value.slice(yearStartIndex, yearStartIndex + 4).length === 4; 23171 date = this.getFixedDate(day, month, year); 23172 } 23173 23174 // mm-yy || yy-mm 23175 if (value.length === 4 && (datePattern[0] === 'y' || datePattern[1] === 'y')) { 23176 monthStartIndex = datePattern[0] === 'm' ? 0 : 2; 23177 yearStartIndex = 2 - monthStartIndex; 23178 month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10); 23179 year = parseInt(value.slice(yearStartIndex, yearStartIndex + 2), 10); 23180 fullYearDone = value.slice(yearStartIndex, yearStartIndex + 2).length === 2; 23181 date = [0, month, year]; 23182 } 23183 23184 // mm-yyyy || yyyy-mm 23185 if (value.length === 6 && (datePattern[0] === 'Y' || datePattern[1] === 'Y')) { 23186 monthStartIndex = datePattern[0] === 'm' ? 0 : 4; 23187 yearStartIndex = 2 - 0.5 * monthStartIndex; 23188 month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10); 23189 year = parseInt(value.slice(yearStartIndex, yearStartIndex + 4), 10); 23190 fullYearDone = value.slice(yearStartIndex, yearStartIndex + 4).length === 4; 23191 date = [0, month, year]; 23192 } 23193 date = owner.getRangeFixedDate(date); 23194 owner.date = date; 23195 var result = date.length === 0 ? value : datePattern.reduce(function (previous, current) { 23196 switch (current) { 23197 case 'd': 23198 return previous + (date[0] === 0 ? '' : owner.addLeadingZero(date[0])); 23199 case 'm': 23200 return previous + (date[1] === 0 ? '' : owner.addLeadingZero(date[1])); 23201 case 'y': 23202 return previous + (fullYearDone ? owner.addLeadingZeroForYear(date[2], false) : ''); 23203 case 'Y': 23204 return previous + (fullYearDone ? owner.addLeadingZeroForYear(date[2], true) : ''); 23205 } 23206 }, ''); 23207 return result; 23208 }, 23209 getRangeFixedDate: function getRangeFixedDate(date) { 23210 var owner = this, 23211 datePattern = owner.datePattern, 23212 dateMin = owner.dateMin || [], 23213 dateMax = owner.dateMax || []; 23214 if (!date.length || dateMin.length < 3 && dateMax.length < 3) return date; 23215 if (datePattern.find(function (x) { 23216 return x.toLowerCase() === 'y'; 23217 }) && date[2] === 0) return date; 23218 if (dateMax.length && (dateMax[2] < date[2] || dateMax[2] === date[2] && (dateMax[1] < date[1] || dateMax[1] === date[1] && dateMax[0] < date[0]))) return dateMax; 23219 if (dateMin.length && (dateMin[2] > date[2] || dateMin[2] === date[2] && (dateMin[1] > date[1] || dateMin[1] === date[1] && dateMin[0] > date[0]))) return dateMin; 23220 return date; 23221 }, 23222 getFixedDate: function getFixedDate(day, month, year) { 23223 day = Math.min(day, 31); 23224 month = Math.min(month, 12); 23225 year = parseInt(year || 0, 10); 23226 if (month < 7 && month % 2 === 0 || month > 8 && month % 2 === 1) { 23227 day = Math.min(day, month === 2 ? this.isLeapYear(year) ? 29 : 28 : 30); 23228 } 23229 return [day, month, year]; 23230 }, 23231 isLeapYear: function isLeapYear(year) { 23232 return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0; 23233 }, 23234 addLeadingZero: function addLeadingZero(number) { 23235 return (number < 10 ? '0' : '') + number; 23236 }, 23237 addLeadingZeroForYear: function addLeadingZeroForYear(number, fullYearMode) { 23238 if (fullYearMode) { 23239 return (number < 10 ? '000' : number < 100 ? '00' : number < 1000 ? '0' : '') + number; 23240 } 23241 return (number < 10 ? '0' : '') + number; 23242 } 23243}; 23244var DateFormatter_1 = DateFormatter; 23245var TimeFormatter = function TimeFormatter(timePattern, timeFormat) { 23246 var owner = this; 23247 owner.time = []; 23248 owner.blocks = []; 23249 owner.timePattern = timePattern; 23250 owner.timeFormat = timeFormat; 23251 owner.initBlocks(); 23252}; 23253TimeFormatter.prototype = { 23254 initBlocks: function initBlocks() { 23255 var owner = this; 23256 owner.timePattern.forEach(function () { 23257 owner.blocks.push(2); 23258 }); 23259 }, 23260 getISOFormatTime: function getISOFormatTime() { 23261 var owner = this, 23262 time = owner.time; 23263 return time[2] ? owner.addLeadingZero(time[0]) + ':' + owner.addLeadingZero(time[1]) + ':' + owner.addLeadingZero(time[2]) : ''; 23264 }, 23265 getBlocks: function getBlocks() { 23266 return this.blocks; 23267 }, 23268 getTimeFormatOptions: function getTimeFormatOptions() { 23269 var owner = this; 23270 if (String(owner.timeFormat) === '12') { 23271 return { 23272 maxHourFirstDigit: 1, 23273 maxHours: 12, 23274 maxMinutesFirstDigit: 5, 23275 maxMinutes: 60 23276 }; 23277 } 23278 return { 23279 maxHourFirstDigit: 2, 23280 maxHours: 23, 23281 maxMinutesFirstDigit: 5, 23282 maxMinutes: 60 23283 }; 23284 }, 23285 getValidatedTime: function getValidatedTime(value) { 23286 var owner = this, 23287 result = ''; 23288 value = value.replace(/[^\d]/g, ''); 23289 var timeFormatOptions = owner.getTimeFormatOptions(); 23290 owner.blocks.forEach(function (length, index) { 23291 if (value.length > 0) { 23292 var sub = value.slice(0, length), 23293 sub0 = sub.slice(0, 1), 23294 rest = value.slice(length); 23295 switch (owner.timePattern[index]) { 23296 case 'h': 23297 if (parseInt(sub0, 10) > timeFormatOptions.maxHourFirstDigit) { 23298 sub = '0' + sub0; 23299 } else if (parseInt(sub, 10) > timeFormatOptions.maxHours) { 23300 sub = timeFormatOptions.maxHours + ''; 23301 } 23302 break; 23303 case 'm': 23304 case 's': 23305 if (parseInt(sub0, 10) > timeFormatOptions.maxMinutesFirstDigit) { 23306 sub = '0' + sub0; 23307 } else if (parseInt(sub, 10) > timeFormatOptions.maxMinutes) { 23308 sub = timeFormatOptions.maxMinutes + ''; 23309 } 23310 break; 23311 } 23312 result += sub; 23313 23314 // update remaining string 23315 value = rest; 23316 } 23317 }); 23318 return this.getFixedTimeString(result); 23319 }, 23320 getFixedTimeString: function getFixedTimeString(value) { 23321 var owner = this, 23322 timePattern = owner.timePattern, 23323 time = [], 23324 secondIndex = 0, 23325 minuteIndex = 0, 23326 hourIndex = 0, 23327 secondStartIndex = 0, 23328 minuteStartIndex = 0, 23329 hourStartIndex = 0, 23330 second, 23331 minute, 23332 hour; 23333 if (value.length === 6) { 23334 timePattern.forEach(function (type, index) { 23335 switch (type) { 23336 case 's': 23337 secondIndex = index * 2; 23338 break; 23339 case 'm': 23340 minuteIndex = index * 2; 23341 break; 23342 case 'h': 23343 hourIndex = index * 2; 23344 break; 23345 } 23346 }); 23347 hourStartIndex = hourIndex; 23348 minuteStartIndex = minuteIndex; 23349 secondStartIndex = secondIndex; 23350 second = parseInt(value.slice(secondStartIndex, secondStartIndex + 2), 10); 23351 minute = parseInt(value.slice(minuteStartIndex, minuteStartIndex + 2), 10); 23352 hour = parseInt(value.slice(hourStartIndex, hourStartIndex + 2), 10); 23353 time = this.getFixedTime(hour, minute, second); 23354 } 23355 if (value.length === 4 && owner.timePattern.indexOf('s') < 0) { 23356 timePattern.forEach(function (type, index) { 23357 switch (type) { 23358 case 'm': 23359 minuteIndex = index * 2; 23360 break; 23361 case 'h': 23362 hourIndex = index * 2; 23363 break; 23364 } 23365 }); 23366 hourStartIndex = hourIndex; 23367 minuteStartIndex = minuteIndex; 23368 second = 0; 23369 minute = parseInt(value.slice(minuteStartIndex, minuteStartIndex + 2), 10); 23370 hour = parseInt(value.slice(hourStartIndex, hourStartIndex + 2), 10); 23371 time = this.getFixedTime(hour, minute, second); 23372 } 23373 owner.time = time; 23374 return time.length === 0 ? value : timePattern.reduce(function (previous, current) { 23375 switch (current) { 23376 case 's': 23377 return previous + owner.addLeadingZero(time[2]); 23378 case 'm': 23379 return previous + owner.addLeadingZero(time[1]); 23380 case 'h': 23381 return previous + owner.addLeadingZero(time[0]); 23382 } 23383 }, ''); 23384 }, 23385 getFixedTime: function getFixedTime(hour, minute, second) { 23386 second = Math.min(parseInt(second || 0, 10), 60); 23387 minute = Math.min(minute, 60); 23388 hour = Math.min(hour, 60); 23389 return [hour, minute, second]; 23390 }, 23391 addLeadingZero: function addLeadingZero(number) { 23392 return (number < 10 ? '0' : '') + number; 23393 } 23394}; 23395var TimeFormatter_1 = TimeFormatter; 23396var PhoneFormatter = function PhoneFormatter(formatter, delimiter) { 23397 var owner = this; 23398 owner.delimiter = delimiter || delimiter === '' ? delimiter : ' '; 23399 owner.delimiterRE = delimiter ? new RegExp('\\' + delimiter, 'g') : ''; 23400 owner.formatter = formatter; 23401}; 23402PhoneFormatter.prototype = { 23403 setFormatter: function setFormatter(formatter) { 23404 this.formatter = formatter; 23405 }, 23406 format: function format(phoneNumber) { 23407 var owner = this; 23408 owner.formatter.clear(); 23409 23410 // only keep number and + 23411 phoneNumber = phoneNumber.replace(/[^\d+]/g, ''); 23412 23413 // strip non-leading + 23414 phoneNumber = phoneNumber.replace(/^\+/, 'B').replace(/\+/g, '').replace('B', '+'); 23415 23416 // strip delimiter 23417 phoneNumber = phoneNumber.replace(owner.delimiterRE, ''); 23418 var result = '', 23419 current, 23420 validated = false; 23421 for (var i = 0, iMax = phoneNumber.length; i < iMax; i++) { 23422 current = owner.formatter.inputDigit(phoneNumber.charAt(i)); 23423 23424 // has ()- or space inside 23425 if (/[\s()-]/g.test(current)) { 23426 result = current; 23427 validated = true; 23428 } else { 23429 if (!validated) { 23430 result = current; 23431 } 23432 // else: over length input 23433 // it turns to invalid number again 23434 } 23435 } 23436 23437 // strip () 23438 // e.g. US: 7161234567 returns (716) 123-4567 23439 result = result.replace(/[()]/g, ''); 23440 // replace library delimiter with user customized delimiter 23441 result = result.replace(/[\s-]/g, owner.delimiter); 23442 return result; 23443 } 23444}; 23445var PhoneFormatter_1 = PhoneFormatter; 23446var CreditCardDetector = { 23447 blocks: { 23448 uatp: [4, 5, 6], 23449 amex: [4, 6, 5], 23450 diners: [4, 6, 4], 23451 discover: [4, 4, 4, 4], 23452 mastercard: [4, 4, 4, 4], 23453 dankort: [4, 4, 4, 4], 23454 instapayment: [4, 4, 4, 4], 23455 jcb15: [4, 6, 5], 23456 jcb: [4, 4, 4, 4], 23457 maestro: [4, 4, 4, 4], 23458 visa: [4, 4, 4, 4], 23459 mir: [4, 4, 4, 4], 23460 unionPay: [4, 4, 4, 4], 23461 general: [4, 4, 4, 4] 23462 }, 23463 re: { 23464 // starts with 1; 15 digits, not starts with 1800 (jcb card) 23465 uatp: /^(?!1800)1\d{0,14}/, 23466 // starts with 34/37; 15 digits 23467 amex: /^3[47]\d{0,13}/, 23468 // starts with 6011/65/644-649; 16 digits 23469 discover: /^(?:6011|65\d{0,2}|64[4-9]\d?)\d{0,12}/, 23470 // starts with 300-305/309 or 36/38/39; 14 digits 23471 diners: /^3(?:0([0-5]|9)|[689]\d?)\d{0,11}/, 23472 // starts with 51-55/2221â2720; 16 digits 23473 mastercard: /^(5[1-5]\d{0,2}|22[2-9]\d{0,1}|2[3-7]\d{0,2})\d{0,12}/, 23474 // starts with 5019/4175/4571; 16 digits 23475 dankort: /^(5019|4175|4571)\d{0,12}/, 23476 // starts with 637-639; 16 digits 23477 instapayment: /^63[7-9]\d{0,13}/, 23478 // starts with 2131/1800; 15 digits 23479 jcb15: /^(?:2131|1800)\d{0,11}/, 23480 // starts with 2131/1800/35; 16 digits 23481 jcb: /^(?:35\d{0,2})\d{0,12}/, 23482 // starts with 50/56-58/6304/67; 16 digits 23483 maestro: /^(?:5[0678]\d{0,2}|6304|67\d{0,2})\d{0,12}/, 23484 // starts with 22; 16 digits 23485 mir: /^220[0-4]\d{0,12}/, 23486 // starts with 4; 16 digits 23487 visa: /^4\d{0,15}/, 23488 // starts with 62/81; 16 digits 23489 unionPay: /^(62|81)\d{0,14}/ 23490 }, 23491 getStrictBlocks: function getStrictBlocks(block) { 23492 var total = block.reduce(function (prev, current) { 23493 return prev + current; 23494 }, 0); 23495 return block.concat(19 - total); 23496 }, 23497 getInfo: function getInfo(value, strictMode) { 23498 var blocks = CreditCardDetector.blocks, 23499 re = CreditCardDetector.re; 23500 23501 // Some credit card can have up to 19 digits number. 23502 // Set strictMode to true will remove the 16 max-length restrain, 23503 // however, I never found any website validate card number like 23504 // this, hence probably you don't want to enable this option. 23505 strictMode = !!strictMode; 23506 for (var key in re) { 23507 if (re[key].test(value)) { 23508 var matchedBlocks = blocks[key]; 23509 return { 23510 type: key, 23511 blocks: strictMode ? this.getStrictBlocks(matchedBlocks) : matchedBlocks 23512 }; 23513 } 23514 } 23515 return { 23516 type: 'unknown', 23517 blocks: strictMode ? this.getStrictBlocks(blocks.general) : blocks.general 23518 }; 23519 } 23520}; 23521var CreditCardDetector_1 = CreditCardDetector; 23522var Util = { 23523 noop: function noop() {}, 23524 strip: function strip(value, re) { 23525 return value.replace(re, ''); 23526 }, 23527 getPostDelimiter: function getPostDelimiter(value, delimiter, delimiters) { 23528 // single delimiter 23529 if (delimiters.length === 0) { 23530 return value.slice(-delimiter.length) === delimiter ? delimiter : ''; 23531 } 23532 23533 // multiple delimiters 23534 var matchedDelimiter = ''; 23535 delimiters.forEach(function (current) { 23536 if (value.slice(-current.length) === current) { 23537 matchedDelimiter = current; 23538 } 23539 }); 23540 return matchedDelimiter; 23541 }, 23542 getDelimiterREByDelimiter: function getDelimiterREByDelimiter(delimiter) { 23543 return new RegExp(delimiter.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1'), 'g'); 23544 }, 23545 getNextCursorPosition: function getNextCursorPosition(prevPos, oldValue, newValue, delimiter, delimiters) { 23546 // If cursor was at the end of value, just place it back. 23547 // Because new value could contain additional chars. 23548 if (oldValue.length === prevPos) { 23549 return newValue.length; 23550 } 23551 return prevPos + this.getPositionOffset(prevPos, oldValue, newValue, delimiter, delimiters); 23552 }, 23553 getPositionOffset: function getPositionOffset(prevPos, oldValue, newValue, delimiter, delimiters) { 23554 var oldRawValue, newRawValue, lengthOffset; 23555 oldRawValue = this.stripDelimiters(oldValue.slice(0, prevPos), delimiter, delimiters); 23556 newRawValue = this.stripDelimiters(newValue.slice(0, prevPos), delimiter, delimiters); 23557 lengthOffset = oldRawValue.length - newRawValue.length; 23558 return lengthOffset !== 0 ? lengthOffset / Math.abs(lengthOffset) : 0; 23559 }, 23560 stripDelimiters: function stripDelimiters(value, delimiter, delimiters) { 23561 var owner = this; 23562 23563 // single delimiter 23564 if (delimiters.length === 0) { 23565 var delimiterRE = delimiter ? owner.getDelimiterREByDelimiter(delimiter) : ''; 23566 return value.replace(delimiterRE, ''); 23567 } 23568 23569 // multiple delimiters 23570 delimiters.forEach(function (current) { 23571 current.split('').forEach(function (letter) { 23572 value = value.replace(owner.getDelimiterREByDelimiter(letter), ''); 23573 }); 23574 }); 23575 return value; 23576 }, 23577 headStr: function headStr(str, length) { 23578 return str.slice(0, length); 23579 }, 23580 getMaxLength: function getMaxLength(blocks) { 23581 return blocks.reduce(function (previous, current) { 23582 return previous + current; 23583 }, 0); 23584 }, 23585 // strip prefix 23586 // Before type | After type | Return value 23587 // PEFIX-... | PEFIX-... | '' 23588 // PREFIX-123 | PEFIX-123 | 123 23589 // PREFIX-123 | PREFIX-23 | 23 23590 // PREFIX-123 | PREFIX-1234 | 1234 23591 getPrefixStrippedValue: function getPrefixStrippedValue(value, prefix, prefixLength, prevResult, delimiter, delimiters, noImmediatePrefix, tailPrefix, signBeforePrefix) { 23592 // No prefix 23593 if (prefixLength === 0) { 23594 return value; 23595 } 23596 23597 // Value is prefix 23598 if (value === prefix && value !== '') { 23599 return ''; 23600 } 23601 if (signBeforePrefix && value.slice(0, 1) == '-') { 23602 var prev = prevResult.slice(0, 1) == '-' ? prevResult.slice(1) : prevResult; 23603 return '-' + this.getPrefixStrippedValue(value.slice(1), prefix, prefixLength, prev, delimiter, delimiters, noImmediatePrefix, tailPrefix, signBeforePrefix); 23604 } 23605 23606 // Pre result prefix string does not match pre-defined prefix 23607 if (prevResult.slice(0, prefixLength) !== prefix && !tailPrefix) { 23608 // Check if the first time user entered something 23609 if (noImmediatePrefix && !prevResult && value) return value; 23610 return ''; 23611 } else if (prevResult.slice(-prefixLength) !== prefix && tailPrefix) { 23612 // Check if the first time user entered something 23613 if (noImmediatePrefix && !prevResult && value) return value; 23614 return ''; 23615 } 23616 var prevValue = this.stripDelimiters(prevResult, delimiter, delimiters); 23617 23618 // New value has issue, someone typed in between prefix letters 23619 // Revert to pre value 23620 if (value.slice(0, prefixLength) !== prefix && !tailPrefix) { 23621 return prevValue.slice(prefixLength); 23622 } else if (value.slice(-prefixLength) !== prefix && tailPrefix) { 23623 return prevValue.slice(0, -prefixLength - 1); 23624 } 23625 23626 // No issue, strip prefix for new value 23627 return tailPrefix ? value.slice(0, -prefixLength) : value.slice(prefixLength); 23628 }, 23629 getFirstDiffIndex: function getFirstDiffIndex(prev, current) { 23630 var index = 0; 23631 while (prev.charAt(index) === current.charAt(index)) { 23632 if (prev.charAt(index++) === '') { 23633 return -1; 23634 } 23635 } 23636 return index; 23637 }, 23638 getFormattedValue: function getFormattedValue(value, blocks, blocksLength, delimiter, delimiters, delimiterLazyShow) { 23639 var result = '', 23640 multipleDelimiters = delimiters.length > 0, 23641 currentDelimiter = ''; 23642 23643 // no options, normal input 23644 if (blocksLength === 0) { 23645 return value; 23646 } 23647 blocks.forEach(function (length, index) { 23648 if (value.length > 0) { 23649 var sub = value.slice(0, length), 23650 rest = value.slice(length); 23651 if (multipleDelimiters) { 23652 currentDelimiter = delimiters[delimiterLazyShow ? index - 1 : index] || currentDelimiter; 23653 } else { 23654 currentDelimiter = delimiter; 23655 } 23656 if (delimiterLazyShow) { 23657 if (index > 0) { 23658 result += currentDelimiter; 23659 } 23660 result += sub; 23661 } else { 23662 result += sub; 23663 if (sub.length === length && index < blocksLength - 1) { 23664 result += currentDelimiter; 23665 } 23666 } 23667 23668 // update remaining string 23669 value = rest; 23670 } 23671 }); 23672 return result; 23673 }, 23674 // move cursor to the end 23675 // the first time user focuses on an input with prefix 23676 fixPrefixCursor: function fixPrefixCursor(el, prefix, delimiter, delimiters) { 23677 if (!el) { 23678 return; 23679 } 23680 var val = el.value, 23681 appendix = delimiter || delimiters[0] || ' '; 23682 if (!el.setSelectionRange || !prefix || prefix.length + appendix.length <= val.length) { 23683 return; 23684 } 23685 var len = val.length * 2; 23686 23687 // set timeout to avoid blink 23688 setTimeout(function () { 23689 el.setSelectionRange(len, len); 23690 }, 1); 23691 }, 23692 // Check if input field is fully selected 23693 checkFullSelection: function checkFullSelection(value) { 23694 try { 23695 var selection = window.getSelection() || document.getSelection() || {}; 23696 return selection.toString().length === value.length; 23697 } catch (ex) { 23698 // Ignore 23699 } 23700 return false; 23701 }, 23702 setSelection: function setSelection(element, position, doc) { 23703 if (element !== this.getActiveElement(doc)) { 23704 return; 23705 } 23706 23707 // cursor is already in the end 23708 if (element && element.value.length <= position) { 23709 return; 23710 } 23711 if (element.createTextRange) { 23712 var range = element.createTextRange(); 23713 range.move('character', position); 23714 range.select(); 23715 } else { 23716 try { 23717 element.setSelectionRange(position, position); 23718 } catch (e) { 23719 // eslint-disable-next-line 23720 console.warn('The input element type does not support selection'); 23721 } 23722 } 23723 }, 23724 getActiveElement: function getActiveElement(parent) { 23725 var activeElement = parent.activeElement; 23726 if (activeElement && activeElement.shadowRoot) { 23727 return this.getActiveElement(activeElement.shadowRoot); 23728 } 23729 return activeElement; 23730 }, 23731 isAndroid: function isAndroid() { 23732 return navigator && /android/i.test(navigator.userAgent); 23733 }, 23734 // On Android chrome, the keyup and keydown events 23735 // always return key code 229 as a composition that 23736 // buffers the userâs keystrokes 23737 // see https://github.com/nosir/cleave.js/issues/147 23738 isAndroidBackspaceKeydown: function isAndroidBackspaceKeydown(lastInputValue, currentInputValue) { 23739 if (!this.isAndroid() || !lastInputValue || !currentInputValue) { 23740 return false; 23741 } 23742 return currentInputValue === lastInputValue.slice(0, -1); 23743 } 23744}; 23745var Util_1 = Util; 23746 23747/** 23748 * Props Assignment 23749 * 23750 * Separate this, so react module can share the usage 23751 */ 23752var DefaultProperties = { 23753 // Maybe change to object-assign 23754 // for now just keep it as simple 23755 assign: function assign(target, opts) { 23756 target = target || {}; 23757 opts = opts || {}; 23758 23759 // credit card 23760 target.creditCard = !!opts.creditCard; 23761 target.creditCardStrictMode = !!opts.creditCardStrictMode; 23762 target.creditCardType = ''; 23763 target.onCreditCardTypeChanged = opts.onCreditCardTypeChanged || function () {}; 23764 23765 // phone 23766 target.phone = !!opts.phone; 23767 target.phoneRegionCode = opts.phoneRegionCode || 'AU'; 23768 target.phoneFormatter = {}; 23769 23770 // time 23771 target.time = !!opts.time; 23772 target.timePattern = opts.timePattern || ['h', 'm', 's']; 23773 target.timeFormat = opts.timeFormat || '24'; 23774 target.timeFormatter = {}; 23775 23776 // date 23777 target.date = !!opts.date; 23778 target.datePattern = opts.datePattern || ['d', 'm', 'Y']; 23779 target.dateMin = opts.dateMin || ''; 23780 target.dateMax = opts.dateMax || ''; 23781 target.dateFormatter = {}; 23782 23783 // numeral 23784 target.numeral = !!opts.numeral; 23785 target.numeralIntegerScale = opts.numeralIntegerScale > 0 ? opts.numeralIntegerScale : 0; 23786 target.numeralDecimalScale = opts.numeralDecimalScale >= 0 ? opts.numeralDecimalScale : 2; 23787 target.numeralDecimalMark = opts.numeralDecimalMark || '.'; 23788 target.numeralThousandsGroupStyle = opts.numeralThousandsGroupStyle || 'thousand'; 23789 target.numeralPositiveOnly = !!opts.numeralPositiveOnly; 23790 target.stripLeadingZeroes = opts.stripLeadingZeroes !== false; 23791 target.signBeforePrefix = !!opts.signBeforePrefix; 23792 target.tailPrefix = !!opts.tailPrefix; 23793 23794 // others 23795 target.swapHiddenInput = !!opts.swapHiddenInput; 23796 target.numericOnly = target.creditCard || target.date || !!opts.numericOnly; 23797 target.uppercase = !!opts.uppercase; 23798 target.lowercase = !!opts.lowercase; 23799 target.prefix = target.creditCard || target.date ? '' : opts.prefix || ''; 23800 target.noImmediatePrefix = !!opts.noImmediatePrefix; 23801 target.prefixLength = target.prefix.length; 23802 target.rawValueTrimPrefix = !!opts.rawValueTrimPrefix; 23803 target.copyDelimiter = !!opts.copyDelimiter; 23804 target.initValue = opts.initValue !== undefined && opts.initValue !== null ? opts.initValue.toString() : ''; 23805 target.delimiter = opts.delimiter || opts.delimiter === '' ? opts.delimiter : opts.date ? '/' : opts.time ? ':' : opts.numeral ? ',' : opts.phone ? ' ' : ' '; 23806 target.delimiterLength = target.delimiter.length; 23807 target.delimiterLazyShow = !!opts.delimiterLazyShow; 23808 target.delimiters = opts.delimiters || []; 23809 target.blocks = opts.blocks || []; 23810 target.blocksLength = target.blocks.length; 23811 target.root = _typeof(commonjsGlobal) === 'object' && commonjsGlobal ? commonjsGlobal : window; 23812 target.document = opts.document || target.root.document; 23813 target.maxLength = 0; 23814 target.backspace = false; 23815 target.result = ''; 23816 target.onValueChanged = opts.onValueChanged || function () {}; 23817 return target; 23818 } 23819}; 23820var DefaultProperties_1 = DefaultProperties; 23821 23822/** 23823 * Construct a new Cleave instance by passing the configuration object 23824 * 23825 * @param {String | HTMLElement} element 23826 * @param {Object} opts 23827 */ 23828var Cleave = function Cleave(element, opts) { 23829 var owner = this; 23830 var hasMultipleElements = false; 23831 if (typeof element === 'string') { 23832 owner.element = document.querySelector(element); 23833 hasMultipleElements = document.querySelectorAll(element).length > 1; 23834 } else { 23835 if (typeof element.length !== 'undefined' && element.length > 0) { 23836 owner.element = element[0]; 23837 hasMultipleElements = element.length > 1; 23838 } else { 23839 owner.element = element; 23840 } 23841 } 23842 if (!owner.element) { 23843 throw new Error('[cleave.js] Please check the element'); 23844 } 23845 if (hasMultipleElements) { 23846 try { 23847 // eslint-disable-next-line 23848 console.warn('[cleave.js] Multiple input fields matched, cleave.js will only take the first one.'); 23849 } catch (e) { 23850 // Old IE 23851 } 23852 } 23853 opts.initValue = owner.element.value; 23854 owner.properties = Cleave.DefaultProperties.assign({}, opts); 23855 owner.init(); 23856}; 23857Cleave.prototype = { 23858 init: function init() { 23859 var owner = this, 23860 pps = owner.properties; 23861 23862 // no need to use this lib 23863 if (!pps.numeral && !pps.phone && !pps.creditCard && !pps.time && !pps.date && pps.blocksLength === 0 && !pps.prefix) { 23864 owner.onInput(pps.initValue); 23865 return; 23866 } 23867 pps.maxLength = Cleave.Util.getMaxLength(pps.blocks); 23868 owner.isAndroid = Cleave.Util.isAndroid(); 23869 owner.lastInputValue = ''; 23870 owner.isBackward = ''; 23871 owner.onChangeListener = owner.onChange.bind(owner); 23872 owner.onKeyDownListener = owner.onKeyDown.bind(owner); 23873 owner.onFocusListener = owner.onFocus.bind(owner); 23874 owner.onCutListener = owner.onCut.bind(owner); 23875 owner.onCopyListener = owner.onCopy.bind(owner); 23876 owner.initSwapHiddenInput(); 23877 owner.element.addEventListener('input', owner.onChangeListener); 23878 owner.element.addEventListener('keydown', owner.onKeyDownListener); 23879 owner.element.addEventListener('focus', owner.onFocusListener); 23880 owner.element.addEventListener('cut', owner.onCutListener); 23881 owner.element.addEventListener('copy', owner.onCopyListener); 23882 owner.initPhoneFormatter(); 23883 owner.initDateFormatter(); 23884 owner.initTimeFormatter(); 23885 owner.initNumeralFormatter(); 23886 23887 // avoid touch input field if value is null 23888 // otherwise Firefox will add red box-shadow for <input required /> 23889 if (pps.initValue || pps.prefix && !pps.noImmediatePrefix) { 23890 owner.onInput(pps.initValue); 23891 } 23892 }, 23893 initSwapHiddenInput: function initSwapHiddenInput() { 23894 var owner = this, 23895 pps = owner.properties; 23896 if (!pps.swapHiddenInput) return; 23897 var inputFormatter = owner.element.cloneNode(true); 23898 owner.element.parentNode.insertBefore(inputFormatter, owner.element); 23899 owner.elementSwapHidden = owner.element; 23900 owner.elementSwapHidden.type = 'hidden'; 23901 owner.element = inputFormatter; 23902 owner.element.id = ''; 23903 }, 23904 initNumeralFormatter: function initNumeralFormatter() { 23905 var owner = this, 23906 pps = owner.properties; 23907 if (!pps.numeral) { 23908 return; 23909 } 23910 pps.numeralFormatter = new Cleave.NumeralFormatter(pps.numeralDecimalMark, pps.numeralIntegerScale, pps.numeralDecimalScale, pps.numeralThousandsGroupStyle, pps.numeralPositiveOnly, pps.stripLeadingZeroes, pps.prefix, pps.signBeforePrefix, pps.tailPrefix, pps.delimiter); 23911 }, 23912 initTimeFormatter: function initTimeFormatter() { 23913 var owner = this, 23914 pps = owner.properties; 23915 if (!pps.time) { 23916 return; 23917 } 23918 pps.timeFormatter = new Cleave.TimeFormatter(pps.timePattern, pps.timeFormat); 23919 pps.blocks = pps.timeFormatter.getBlocks(); 23920 pps.blocksLength = pps.blocks.length; 23921 pps.maxLength = Cleave.Util.getMaxLength(pps.blocks); 23922 }, 23923 initDateFormatter: function initDateFormatter() { 23924 var owner = this, 23925 pps = owner.properties; 23926 if (!pps.date) { 23927 return; 23928 } 23929 pps.dateFormatter = new Cleave.DateFormatter(pps.datePattern, pps.dateMin, pps.dateMax); 23930 pps.blocks = pps.dateFormatter.getBlocks(); 23931 pps.blocksLength = pps.blocks.length; 23932 pps.maxLength = Cleave.Util.getMaxLength(pps.blocks); 23933 }, 23934 initPhoneFormatter: function initPhoneFormatter() { 23935 var owner = this, 23936 pps = owner.properties; 23937 if (!pps.phone) { 23938 return; 23939 } 23940 23941 // Cleave.AsYouTypeFormatter should be provided by 23942 // external google closure lib 23943 try { 23944 pps.phoneFormatter = new Cleave.PhoneFormatter(new pps.root.Cleave.AsYouTypeFormatter(pps.phoneRegionCode), pps.delimiter); 23945 } catch (ex) { 23946 throw new Error('[cleave.js] Please include phone-type-formatter.{country}.js lib'); 23947 } 23948 }, 23949 onKeyDown: function onKeyDown(event) { 23950 var owner = this, 23951 charCode = event.which || event.keyCode; 23952 owner.lastInputValue = owner.element.value; 23953 owner.isBackward = charCode === 8; 23954 }, 23955 onChange: function onChange(event) { 23956 var owner = this, 23957 pps = owner.properties, 23958 Util = Cleave.Util; 23959 owner.isBackward = owner.isBackward || event.inputType === 'deleteContentBackward'; 23960 var postDelimiter = Util.getPostDelimiter(owner.lastInputValue, pps.delimiter, pps.delimiters); 23961 if (owner.isBackward && postDelimiter) { 23962 pps.postDelimiterBackspace = postDelimiter; 23963 } else { 23964 pps.postDelimiterBackspace = false; 23965 } 23966 this.onInput(this.element.value); 23967 }, 23968 onFocus: function onFocus() { 23969 var owner = this, 23970 pps = owner.properties; 23971 owner.lastInputValue = owner.element.value; 23972 if (pps.prefix && pps.noImmediatePrefix && !owner.element.value) { 23973 this.onInput(pps.prefix); 23974 } 23975 Cleave.Util.fixPrefixCursor(owner.element, pps.prefix, pps.delimiter, pps.delimiters); 23976 }, 23977 onCut: function onCut(e) { 23978 if (!Cleave.Util.checkFullSelection(this.element.value)) return; 23979 this.copyClipboardData(e); 23980 this.onInput(''); 23981 }, 23982 onCopy: function onCopy(e) { 23983 if (!Cleave.Util.checkFullSelection(this.element.value)) return; 23984 this.copyClipboardData(e); 23985 }, 23986 copyClipboardData: function copyClipboardData(e) { 23987 var owner = this, 23988 pps = owner.properties, 23989 Util = Cleave.Util, 23990 inputValue = owner.element.value, 23991 textToCopy = ''; 23992 if (!pps.copyDelimiter) { 23993 textToCopy = Util.stripDelimiters(inputValue, pps.delimiter, pps.delimiters); 23994 } else { 23995 textToCopy = inputValue; 23996 } 23997 try { 23998 if (e.clipboardData) { 23999 e.clipboardData.setData('Text', textToCopy); 24000 } else { 24001 window.clipboardData.setData('Text', textToCopy); 24002 } 24003 e.preventDefault(); 24004 } catch (ex) { 24005 // empty 24006 } 24007 }, 24008 onInput: function onInput(value) { 24009 var owner = this, 24010 pps = owner.properties, 24011 Util = Cleave.Util; 24012 24013 // case 1: delete one more character "4" 24014 // 1234*| -> hit backspace -> 123| 24015 // case 2: last character is not delimiter which is: 24016 // 12|34* -> hit backspace -> 1|34* 24017 // note: no need to apply this for numeral mode 24018 var postDelimiterAfter = Util.getPostDelimiter(value, pps.delimiter, pps.delimiters); 24019 if (!pps.numeral && pps.postDelimiterBackspace && !postDelimiterAfter) { 24020 value = Util.headStr(value, value.length - pps.postDelimiterBackspace.length); 24021 } 24022 24023 // phone formatter 24024 if (pps.phone) { 24025 if (pps.prefix && (!pps.noImmediatePrefix || value.length)) { 24026 pps.result = pps.prefix + pps.phoneFormatter.format(value).slice(pps.prefix.length); 24027 } else { 24028 pps.result = pps.phoneFormatter.format(value); 24029 } 24030 owner.updateValueState(); 24031 return; 24032 } 24033 24034 // numeral formatter 24035 if (pps.numeral) { 24036 // Do not show prefix when noImmediatePrefix is specified 24037 // This mostly because we need to show user the native input placeholder 24038 if (pps.prefix && pps.noImmediatePrefix && value.length === 0) { 24039 pps.result = ''; 24040 } else { 24041 pps.result = pps.numeralFormatter.format(value); 24042 } 24043 owner.updateValueState(); 24044 return; 24045 } 24046 24047 // date 24048 if (pps.date) { 24049 value = pps.dateFormatter.getValidatedDate(value); 24050 } 24051 24052 // time 24053 if (pps.time) { 24054 value = pps.timeFormatter.getValidatedTime(value); 24055 } 24056 24057 // strip delimiters 24058 value = Util.stripDelimiters(value, pps.delimiter, pps.delimiters); 24059 24060 // strip prefix 24061 value = Util.getPrefixStrippedValue(value, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix, pps.tailPrefix, pps.signBeforePrefix); 24062 24063 // strip non-numeric characters 24064 value = pps.numericOnly ? Util.strip(value, /[^\d]/g) : value; 24065 24066 // convert case 24067 value = pps.uppercase ? value.toUpperCase() : value; 24068 value = pps.lowercase ? value.toLowerCase() : value; 24069 24070 // prevent from showing prefix when no immediate option enabled with empty input value 24071 if (pps.prefix) { 24072 if (pps.tailPrefix) { 24073 value = value + pps.prefix; 24074 } else { 24075 value = pps.prefix + value; 24076 } 24077 24078 // no blocks specified, no need to do formatting 24079 if (pps.blocksLength === 0) { 24080 pps.result = value; 24081 owner.updateValueState(); 24082 return; 24083 } 24084 } 24085 24086 // update credit card props 24087 if (pps.creditCard) { 24088 owner.updateCreditCardPropsByValue(value); 24089 } 24090 24091 // strip over length characters 24092 value = Util.headStr(value, pps.maxLength); 24093 24094 // apply blocks 24095 pps.result = Util.getFormattedValue(value, pps.blocks, pps.blocksLength, pps.delimiter, pps.delimiters, pps.delimiterLazyShow); 24096 owner.updateValueState(); 24097 }, 24098 updateCreditCardPropsByValue: function updateCreditCardPropsByValue(value) { 24099 var owner = this, 24100 pps = owner.properties, 24101 Util = Cleave.Util, 24102 creditCardInfo; 24103 24104 // At least one of the first 4 characters has changed 24105 if (Util.headStr(pps.result, 4) === Util.headStr(value, 4)) { 24106 return; 24107 } 24108 creditCardInfo = Cleave.CreditCardDetector.getInfo(value, pps.creditCardStrictMode); 24109 pps.blocks = creditCardInfo.blocks; 24110 pps.blocksLength = pps.blocks.length; 24111 pps.maxLength = Util.getMaxLength(pps.blocks); 24112 24113 // credit card type changed 24114 if (pps.creditCardType !== creditCardInfo.type) { 24115 pps.creditCardType = creditCardInfo.type; 24116 pps.onCreditCardTypeChanged.call(owner, pps.creditCardType); 24117 } 24118 }, 24119 updateValueState: function updateValueState() { 24120 var owner = this, 24121 Util = Cleave.Util, 24122 pps = owner.properties; 24123 if (!owner.element) { 24124 return; 24125 } 24126 var endPos = owner.element.selectionEnd; 24127 var oldValue = owner.element.value; 24128 var newValue = pps.result; 24129 endPos = Util.getNextCursorPosition(endPos, oldValue, newValue, pps.delimiter, pps.delimiters); 24130 24131 // fix Android browser type="text" input field 24132 // cursor not jumping issue 24133 if (owner.isAndroid) { 24134 window.setTimeout(function () { 24135 owner.element.value = newValue; 24136 Util.setSelection(owner.element, endPos, pps.document, false); 24137 owner.callOnValueChanged(); 24138 }, 1); 24139 return; 24140 } 24141 owner.element.value = newValue; 24142 if (pps.swapHiddenInput) owner.elementSwapHidden.value = owner.getRawValue(); 24143 Util.setSelection(owner.element, endPos, pps.document, false); 24144 owner.callOnValueChanged(); 24145 }, 24146 callOnValueChanged: function callOnValueChanged() { 24147 var owner = this, 24148 pps = owner.properties; 24149 pps.onValueChanged.call(owner, { 24150 target: { 24151 name: owner.element.name, 24152 value: pps.result, 24153 rawValue: owner.getRawValue() 24154 } 24155 }); 24156 }, 24157 setPhoneRegionCode: function setPhoneRegionCode(phoneRegionCode) { 24158 var owner = this, 24159 pps = owner.properties; 24160 pps.phoneRegionCode = phoneRegionCode; 24161 owner.initPhoneFormatter(); 24162 owner.onChange(); 24163 }, 24164 setRawValue: function setRawValue(value) { 24165 var owner = this, 24166 pps = owner.properties; 24167 value = value !== undefined && value !== null ? value.toString() : ''; 24168 if (pps.numeral) { 24169 value = value.replace('.', pps.numeralDecimalMark); 24170 } 24171 pps.postDelimiterBackspace = false; 24172 owner.element.value = value; 24173 owner.onInput(value); 24174 }, 24175 getRawValue: function getRawValue() { 24176 var owner = this, 24177 pps = owner.properties, 24178 Util = Cleave.Util, 24179 rawValue = owner.element.value; 24180 if (pps.rawValueTrimPrefix) { 24181 rawValue = Util.getPrefixStrippedValue(rawValue, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix, pps.tailPrefix, pps.signBeforePrefix); 24182 } 24183 if (pps.numeral) { 24184 rawValue = pps.numeralFormatter.getRawValue(rawValue); 24185 } else { 24186 rawValue = Util.stripDelimiters(rawValue, pps.delimiter, pps.delimiters); 24187 } 24188 return rawValue; 24189 }, 24190 getISOFormatDate: function getISOFormatDate() { 24191 var owner = this, 24192 pps = owner.properties; 24193 return pps.date ? pps.dateFormatter.getISOFormatDate() : ''; 24194 }, 24195 getISOFormatTime: function getISOFormatTime() { 24196 var owner = this, 24197 pps = owner.properties; 24198 return pps.time ? pps.timeFormatter.getISOFormatTime() : ''; 24199 }, 24200 getFormattedValue: function getFormattedValue() { 24201 return this.element.value; 24202 }, 24203 destroy: function destroy() { 24204 var owner = this; 24205 owner.element.removeEventListener('input', owner.onChangeListener); 24206 owner.element.removeEventListener('keydown', owner.onKeyDownListener); 24207 owner.element.removeEventListener('focus', owner.onFocusListener); 24208 owner.element.removeEventListener('cut', owner.onCutListener); 24209 owner.element.removeEventListener('copy', owner.onCopyListener); 24210 }, 24211 toString: function toString() { 24212 return '[Cleave Object]'; 24213 } 24214}; 24215Cleave.NumeralFormatter = NumeralFormatter_1; 24216Cleave.DateFormatter = DateFormatter_1; 24217Cleave.TimeFormatter = TimeFormatter_1; 24218Cleave.PhoneFormatter = PhoneFormatter_1; 24219Cleave.CreditCardDetector = CreditCardDetector_1; 24220Cleave.Util = Util_1; 24221Cleave.DefaultProperties = DefaultProperties_1; 24222 24223// for angular directive 24224(_typeof(commonjsGlobal) === 'object' && commonjsGlobal ? commonjsGlobal : window)['Cleave'] = Cleave; 24225 24226// CommonJS 24227var Cleave_1 = Cleave; 24228/* harmony default export */ __webpack_exports__["default"] = (Cleave_1); 24229/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) 24230 24231/***/ }), 24232
vendor: 5,248 bytes, lines 24233-24383
24233/***/ "./node_modules/js-cookie/src/js.cookie.js": 24234/*!*************************************************!*\ 24235 !*** ./node_modules/js-cookie/src/js.cookie.js ***! 24236 \*************************************************/ 24237/*! no static exports found */ 24238/***/ (function(module, exports, __webpack_require__) { 24239 24240var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 24241/*! 24242 * JavaScript Cookie v2.2.1 24243 * https://github.com/js-cookie/js-cookie 24244 * 24245 * Copyright 2006, 2015 Klaus Hartl & Fagner Brack 24246 * Released under the MIT license 24247 */ 24248; 24249(function (factory) { 24250 var registeredInModuleLoader; 24251 if (true) { 24252 !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory), 24253 __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? 24254 (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : 24255 __WEBPACK_AMD_DEFINE_FACTORY__), 24256 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); 24257 registeredInModuleLoader = true; 24258 } 24259 if (( false ? undefined : _typeof(exports)) === 'object') { 24260 module.exports = factory(); 24261 registeredInModuleLoader = true; 24262 } 24263 if (!registeredInModuleLoader) { 24264 var OldCookies = window.Cookies; 24265 var api = window.Cookies = factory(); 24266 api.noConflict = function () { 24267 window.Cookies = OldCookies; 24268 return api; 24269 }; 24270 } 24271})(function () { 24272 function extend() { 24273 var i = 0; 24274 var result = {}; 24275 for (; i < arguments.length; i++) { 24276 var attributes = arguments[i]; 24277 for (var key in attributes) { 24278 result[key] = attributes[key]; 24279 } 24280 } 24281 return result; 24282 } 24283 function decode(s) { 24284 return s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent); 24285 } 24286 function init(converter) { 24287 function api() {} 24288 function set(key, value, attributes) { 24289 if (typeof document === 'undefined') { 24290 return; 24291 } 24292 attributes = extend({ 24293 path: '/' 24294 }, api.defaults, attributes); 24295 if (typeof attributes.expires === 'number') { 24296 attributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5); 24297 } 24298 24299 // We're using "expires" because "max-age" is not supported by IE 24300 attributes.expires = attributes.expires ? attributes.expires.toUTCString() : ''; 24301 try { 24302 var result = JSON.stringify(value); 24303 if (/^[\{\[]/.test(result)) { 24304 value = result; 24305 } 24306 } catch (e) {} 24307 value = converter.write ? converter.write(value, key) : encodeURIComponent(String(value)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent); 24308 key = encodeURIComponent(String(key)).replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent).replace(/[\(\)]/g, escape); 24309 var stringifiedAttributes = ''; 24310 for (var attributeName in attributes) { 24311 if (!attributes[attributeName]) { 24312 continue; 24313 } 24314 stringifiedAttributes += '; ' + attributeName; 24315 if (attributes[attributeName] === true) { 24316 continue; 24317 } 24318 24319 // Considers RFC 6265 section 5.2: 24320 // ... 24321 // 3. If the remaining unparsed-attributes contains a %x3B (";") 24322 // character: 24323 // Consume the characters of the unparsed-attributes up to, 24324 // not including, the first %x3B (";") character. 24325 // ... 24326 stringifiedAttributes += '=' + attributes[attributeName].split(';')[0]; 24327 } 24328 return document.cookie = key + '=' + value + stringifiedAttributes; 24329 } 24330 function get(key, json) { 24331 if (typeof document === 'undefined') { 24332 return; 24333 } 24334 var jar = {}; 24335 // To prevent the for loop in the first place assign an empty array 24336 // in case there are no cookies at all. 24337 var cookies = document.cookie ? document.cookie.split('; ') : []; 24338 var i = 0; 24339 for (; i < cookies.length; i++) { 24340 var parts = cookies[i].split('='); 24341 var cookie = parts.slice(1).join('='); 24342 if (!json && cookie.charAt(0) === '"') { 24343 cookie = cookie.slice(1, -1); 24344 } 24345 try { 24346 var name = decode(parts[0]); 24347 cookie = (converter.read || converter)(cookie, name) || decode(cookie); 24348 if (json) { 24349 try { 24350 cookie = JSON.parse(cookie); 24351 } catch (e) {} 24352 } 24353 jar[name] = cookie; 24354 if (key === name) { 24355 break; 24356 } 24357 } catch (e) {} 24358 } 24359 return key ? jar[key] : jar; 24360 } 24361 api.set = set; 24362 api.get = function (key) { 24363 return get(key, false /* read as raw */); 24364 }; 24365 24366 api.getJSON = function (key) { 24367 return get(key, true /* read as json */); 24368 }; 24369 24370 api.remove = function (key, attributes) { 24371 set(key, '', extend(attributes, { 24372 expires: -1 24373 })); 24374 }; 24375 api.defaults = {}; 24376 api.withConverter = init; 24377 return api; 24378 } 24379 return init(function () {}); 24380}); 24381 24382/***/ }), 24383
vendor: 1,276 bytes, lines 24384-24423
24384/***/ "./node_modules/lodash/_Hash.js": 24385/*!**************************************!*\ 24386 !*** ./node_modules/lodash/_Hash.js ***! 24387 \**************************************/ 24388/*! no static exports found */ 24389/***/ (function(module, exports, __webpack_require__) { 24390 24391var hashClear = __webpack_require__(/*! ./_hashClear */ "./node_modules/lodash/_hashClear.js"), 24392 hashDelete = __webpack_require__(/*! ./_hashDelete */ "./node_modules/lodash/_hashDelete.js"), 24393 hashGet = __webpack_require__(/*! ./_hashGet */ "./node_modules/lodash/_hashGet.js"), 24394 hashHas = __webpack_require__(/*! ./_hashHas */ "./node_modules/lodash/_hashHas.js"), 24395 hashSet = __webpack_require__(/*! ./_hashSet */ "./node_modules/lodash/_hashSet.js"); 24396 24397/** 24398 * Creates a hash object. 24399 * 24400 * @private 24401 * @constructor 24402 * @param {Array} [entries] The key-value pairs to cache. 24403 */ 24404function Hash(entries) { 24405 var index = -1, 24406 length = entries == null ? 0 : entries.length; 24407 this.clear(); 24408 while (++index < length) { 24409 var entry = entries[index]; 24410 this.set(entry[0], entry[1]); 24411 } 24412} 24413 24414// Add methods to `Hash`. 24415Hash.prototype.clear = hashClear; 24416Hash.prototype['delete'] = hashDelete; 24417Hash.prototype.get = hashGet; 24418Hash.prototype.has = hashHas; 24419Hash.prototype.set = hashSet; 24420module.exports = Hash; 24421 24422/***/ }), 24423
vendor: 1,443 bytes, lines 24424-24463
24424/***/ "./node_modules/lodash/_ListCache.js": 24425/*!*******************************************!*\ 24426 !*** ./node_modules/lodash/_ListCache.js ***! 24427 \*******************************************/ 24428/*! no static exports found */ 24429/***/ (function(module, exports, __webpack_require__) { 24430 24431var listCacheClear = __webpack_require__(/*! ./_listCacheClear */ "./node_modules/lodash/_listCacheClear.js"), 24432 listCacheDelete = __webpack_require__(/*! ./_listCacheDelete */ "./node_modules/lodash/_listCacheDelete.js"), 24433 listCacheGet = __webpack_require__(/*! ./_listCacheGet */ "./node_modules/lodash/_listCacheGet.js"), 24434 listCacheHas = __webpack_require__(/*! ./_listCacheHas */ "./node_modules/lodash/_listCacheHas.js"), 24435 listCacheSet = __webpack_require__(/*! ./_listCacheSet */ "./node_modules/lodash/_listCacheSet.js"); 24436 24437/** 24438 * Creates an list cache object. 24439 * 24440 * @private 24441 * @constructor 24442 * @param {Array} [entries] The key-value pairs to cache. 24443 */ 24444function ListCache(entries) { 24445 var index = -1, 24446 length = entries == null ? 0 : entries.length; 24447 this.clear(); 24448 while (++index < length) { 24449 var entry = entries[index]; 24450 this.set(entry[0], entry[1]); 24451 } 24452} 24453 24454// Add methods to `ListCache`. 24455ListCache.prototype.clear = listCacheClear; 24456ListCache.prototype['delete'] = listCacheDelete; 24457ListCache.prototype.get = listCacheGet; 24458ListCache.prototype.has = listCacheHas; 24459ListCache.prototype.set = listCacheSet; 24460module.exports = ListCache; 24461 24462/***/ }), 24463
vendor: 564 bytes, lines 24464-24479
24464/***/ "./node_modules/lodash/_Map.js": 24465/*!*************************************!*\ 24466 !*** ./node_modules/lodash/_Map.js ***! 24467 \*************************************/ 24468/*! no static exports found */ 24469/***/ (function(module, exports, __webpack_require__) { 24470 24471var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"), 24472 root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); 24473 24474/* Built-in method references that are verified to be native. */ 24475var Map = getNative(root, 'Map'); 24476module.exports = Map; 24477 24478/***/ }), 24479
vendor: 1,434 bytes, lines 24480-24519
24480/***/ "./node_modules/lodash/_MapCache.js": 24481/*!******************************************!*\ 24482 !*** ./node_modules/lodash/_MapCache.js ***! 24483 \******************************************/ 24484/*! no static exports found */ 24485/***/ (function(module, exports, __webpack_require__) { 24486 24487var mapCacheClear = __webpack_require__(/*! ./_mapCacheClear */ "./node_modules/lodash/_mapCacheClear.js"), 24488 mapCacheDelete = __webpack_require__(/*! ./_mapCacheDelete */ "./node_modules/lodash/_mapCacheDelete.js"), 24489 mapCacheGet = __webpack_require__(/*! ./_mapCacheGet */ "./node_modules/lodash/_mapCacheGet.js"), 24490 mapCacheHas = __webpack_require__(/*! ./_mapCacheHas */ "./node_modules/lodash/_mapCacheHas.js"), 24491 mapCacheSet = __webpack_require__(/*! ./_mapCacheSet */ "./node_modules/lodash/_mapCacheSet.js"); 24492 24493/** 24494 * Creates a map cache object to store key-value pairs. 24495 * 24496 * @private 24497 * @constructor 24498 * @param {Array} [entries] The key-value pairs to cache. 24499 */ 24500function MapCache(entries) { 24501 var index = -1, 24502 length = entries == null ? 0 : entries.length; 24503 this.clear(); 24504 while (++index < length) { 24505 var entry = entries[index]; 24506 this.set(entry[0], entry[1]); 24507 } 24508} 24509 24510// Add methods to `MapCache`. 24511MapCache.prototype.clear = mapCacheClear; 24512MapCache.prototype['delete'] = mapCacheDelete; 24513MapCache.prototype.get = mapCacheGet; 24514MapCache.prototype.has = mapCacheHas; 24515MapCache.prototype.set = mapCacheSet; 24516module.exports = MapCache; 24517 24518/***/ }), 24519
vendor: 448 bytes, lines 24520-24534
24520/***/ "./node_modules/lodash/_Symbol.js": 24521/*!****************************************!*\ 24522 !*** ./node_modules/lodash/_Symbol.js ***! 24523 \****************************************/ 24524/*! no static exports found */ 24525/***/ (function(module, exports, __webpack_require__) { 24526 24527var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); 24528 24529/** Built-in value references. */ 24530var _Symbol = root.Symbol; 24531module.exports = _Symbol; 24532 24533/***/ }), 24534
vendor: 816 bytes, lines 24535-24563
24535/***/ "./node_modules/lodash/_arrayMap.js": 24536/*!******************************************!*\ 24537 !*** ./node_modules/lodash/_arrayMap.js ***! 24538 \******************************************/ 24539/*! no static exports found */ 24540/***/ (function(module, exports) { 24541 24542/** 24543 * A specialized version of `_.map` for arrays without support for iteratee 24544 * shorthands. 24545 * 24546 * @private 24547 * @param {Array} [array] The array to iterate over. 24548 * @param {Function} iteratee The function invoked per iteration. 24549 * @returns {Array} Returns the new mapped array. 24550 */ 24551function arrayMap(array, iteratee) { 24552 var index = -1, 24553 length = array == null ? 0 : array.length, 24554 result = Array(length); 24555 while (++index < length) { 24556 result[index] = iteratee(array[index], index, array); 24557 } 24558 return result; 24559} 24560module.exports = arrayMap; 24561 24562/***/ }), 24563
vendor: 1,295 bytes, lines 24564-24599
24564/***/ "./node_modules/lodash/_assignValue.js": 24565/*!*********************************************!*\ 24566 !*** ./node_modules/lodash/_assignValue.js ***! 24567 \*********************************************/ 24568/*! no static exports found */ 24569/***/ (function(module, exports, __webpack_require__) { 24570 24571var baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"), 24572 eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"); 24573 24574/** Used for built-in method references. */ 24575var objectProto = Object.prototype; 24576 24577/** Used to check objects for own properties. */ 24578var hasOwnProperty = objectProto.hasOwnProperty; 24579 24580/** 24581 * Assigns `value` to `key` of `object` if the existing value is not equivalent 24582 * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 24583 * for equality comparisons. 24584 * 24585 * @private 24586 * @param {Object} object The object to modify. 24587 * @param {string} key The key of the property to assign. 24588 * @param {*} value The value to assign. 24589 */ 24590function assignValue(object, key, value) { 24591 var objValue = object[key]; 24592 if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === undefined && !(key in object)) { 24593 baseAssignValue(object, key, value); 24594 } 24595} 24596module.exports = assignValue; 24597 24598/***/ }), 24599
vendor: 836 bytes, lines 24600-24629
24600/***/ "./node_modules/lodash/_assocIndexOf.js": 24601/*!**********************************************!*\ 24602 !*** ./node_modules/lodash/_assocIndexOf.js ***! 24603 \**********************************************/ 24604/*! no static exports found */ 24605/***/ (function(module, exports, __webpack_require__) { 24606 24607var eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"); 24608 24609/** 24610 * Gets the index at which the `key` is found in `array` of key-value pairs. 24611 * 24612 * @private 24613 * @param {Array} array The array to inspect. 24614 * @param {*} key The key to search for. 24615 * @returns {number} Returns the index of the matched value, else `-1`. 24616 */ 24617function assocIndexOf(array, key) { 24618 var length = array.length; 24619 while (length--) { 24620 if (eq(array[length][0], key)) { 24621 return length; 24622 } 24623 } 24624 return -1; 24625} 24626module.exports = assocIndexOf; 24627 24628/***/ }), 24629
vendor: 999 bytes, lines 24630-24663
24630/***/ "./node_modules/lodash/_baseAssignValue.js": 24631/*!*************************************************!*\ 24632 !*** ./node_modules/lodash/_baseAssignValue.js ***! 24633 \*************************************************/ 24634/*! no static exports found */ 24635/***/ (function(module, exports, __webpack_require__) { 24636 24637var defineProperty = __webpack_require__(/*! ./_defineProperty */ "./node_modules/lodash/_defineProperty.js"); 24638 24639/** 24640 * The base implementation of `assignValue` and `assignMergeValue` without 24641 * value checks. 24642 * 24643 * @private 24644 * @param {Object} object The object to modify. 24645 * @param {string} key The key of the property to assign. 24646 * @param {*} value The value to assign. 24647 */ 24648function baseAssignValue(object, key, value) { 24649 if (key == '__proto__' && defineProperty) { 24650 defineProperty(object, key, { 24651 'configurable': true, 24652 'enumerable': true, 24653 'value': value, 24654 'writable': true 24655 }); 24656 } else { 24657 object[key] = value; 24658 } 24659} 24660module.exports = baseAssignValue; 24661 24662/***/ }), 24663
vendor: 1,240 bytes, lines 24664-24698
24664/***/ "./node_modules/lodash/_baseGetTag.js": 24665/*!********************************************!*\ 24666 !*** ./node_modules/lodash/_baseGetTag.js ***! 24667 \********************************************/ 24668/*! no static exports found */ 24669/***/ (function(module, exports, __webpack_require__) { 24670 24671var _Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"), 24672 getRawTag = __webpack_require__(/*! ./_getRawTag */ "./node_modules/lodash/_getRawTag.js"), 24673 objectToString = __webpack_require__(/*! ./_objectToString */ "./node_modules/lodash/_objectToString.js"); 24674 24675/** `Object#toString` result references. */ 24676var nullTag = '[object Null]', 24677 undefinedTag = '[object Undefined]'; 24678 24679/** Built-in value references. */ 24680var symToStringTag = _Symbol ? _Symbol.toStringTag : undefined; 24681 24682/** 24683 * The base implementation of `getTag` without fallbacks for buggy environments. 24684 * 24685 * @private 24686 * @param {*} value The value to query. 24687 * @returns {string} Returns the `toStringTag`. 24688 */ 24689function baseGetTag(value) { 24690 if (value == null) { 24691 return value === undefined ? undefinedTag : nullTag; 24692 } 24693 return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value); 24694} 24695module.exports = baseGetTag; 24696 24697/***/ }), 24698
vendor: 1,921 bytes, lines 24699-24751
24699/***/ "./node_modules/lodash/_baseIsNative.js": 24700/*!**********************************************!*\ 24701 !*** ./node_modules/lodash/_baseIsNative.js ***! 24702 \**********************************************/ 24703/*! no static exports found */ 24704/***/ (function(module, exports, __webpack_require__) { 24705 24706var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/lodash/isFunction.js"), 24707 isMasked = __webpack_require__(/*! ./_isMasked */ "./node_modules/lodash/_isMasked.js"), 24708 isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), 24709 toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/lodash/_toSource.js"); 24710 24711/** 24712 * Used to match `RegExp` 24713 * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). 24714 */ 24715var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; 24716 24717/** Used to detect host constructors (Safari). */ 24718var reIsHostCtor = /^\[object .+?Constructor\]$/; 24719 24720/** Used for built-in method references. */ 24721var funcProto = Function.prototype, 24722 objectProto = Object.prototype; 24723 24724/** Used to resolve the decompiled source of functions. */ 24725var funcToString = funcProto.toString; 24726 24727/** Used to check objects for own properties. */ 24728var hasOwnProperty = objectProto.hasOwnProperty; 24729 24730/** Used to detect if a method is native. */ 24731var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&').replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'); 24732 24733/** 24734 * The base implementation of `_.isNative` without bad shim checks. 24735 * 24736 * @private 24737 * @param {*} value The value to check. 24738 * @returns {boolean} Returns `true` if `value` is a native function, 24739 * else `false`. 24740 */ 24741function baseIsNative(value) { 24742 if (!isObject(value) || isMasked(value)) { 24743 return false; 24744 } 24745 var pattern = isFunction(value) ? reIsNative : reIsHostCtor; 24746 return pattern.test(toSource(value)); 24747} 24748module.exports = baseIsNative; 24749 24750/***/ }), 24751
vendor: 1,893 bytes, lines 24752-24805
24752/***/ "./node_modules/lodash/_baseSet.js": 24753/*!*****************************************!*\ 24754 !*** ./node_modules/lodash/_baseSet.js ***! 24755 \*****************************************/ 24756/*! no static exports found */ 24757/***/ (function(module, exports, __webpack_require__) { 24758 24759var assignValue = __webpack_require__(/*! ./_assignValue */ "./node_modules/lodash/_assignValue.js"), 24760 castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"), 24761 isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"), 24762 isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), 24763 toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js"); 24764 24765/** 24766 * The base implementation of `_.set`. 24767 * 24768 * @private 24769 * @param {Object} object The object to modify. 24770 * @param {Array|string} path The path of the property to set. 24771 * @param {*} value The value to set. 24772 * @param {Function} [customizer] The function to customize path creation. 24773 * @returns {Object} Returns `object`. 24774 */ 24775function baseSet(object, path, value, customizer) { 24776 if (!isObject(object)) { 24777 return object; 24778 } 24779 path = castPath(path, object); 24780 var index = -1, 24781 length = path.length, 24782 lastIndex = length - 1, 24783 nested = object; 24784 while (nested != null && ++index < length) { 24785 var key = toKey(path[index]), 24786 newValue = value; 24787 if (key === '__proto__' || key === 'constructor' || key === 'prototype') { 24788 return object; 24789 } 24790 if (index != lastIndex) { 24791 var objValue = nested[key]; 24792 newValue = customizer ? customizer(objValue, key, nested) : undefined; 24793 if (newValue === undefined) { 24794 newValue = isObject(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {}; 24795 } 24796 } 24797 assignValue(nested, key, newValue); 24798 nested = nested[key]; 24799 } 24800 return object; 24801} 24802module.exports = baseSet; 24803 24804/***/ }), 24805
vendor: 1,656 bytes, lines 24806-24851
24806/***/ "./node_modules/lodash/_baseToString.js": 24807/*!**********************************************!*\ 24808 !*** ./node_modules/lodash/_baseToString.js ***! 24809 \**********************************************/ 24810/*! no static exports found */ 24811/***/ (function(module, exports, __webpack_require__) { 24812 24813var _Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"), 24814 arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/lodash/_arrayMap.js"), 24815 isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), 24816 isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); 24817 24818/** Used as references for various `Number` constants. */ 24819var INFINITY = 1 / 0; 24820 24821/** Used to convert symbols to primitives and strings. */ 24822var symbolProto = _Symbol ? _Symbol.prototype : undefined, 24823 symbolToString = symbolProto ? symbolProto.toString : undefined; 24824 24825/** 24826 * The base implementation of `_.toString` which doesn't convert nullish 24827 * values to empty strings. 24828 * 24829 * @private 24830 * @param {*} value The value to process. 24831 * @returns {string} Returns the string. 24832 */ 24833function baseToString(value) { 24834 // Exit early for strings to avoid a performance hit in some environments. 24835 if (typeof value == 'string') { 24836 return value; 24837 } 24838 if (isArray(value)) { 24839 // Recursively convert values (susceptible to call stack limits). 24840 return arrayMap(value, baseToString) + ''; 24841 } 24842 if (isSymbol(value)) { 24843 return symbolToString ? symbolToString.call(value) : ''; 24844 } 24845 var result = value + ''; 24846 return result == '0' && 1 / value == -INFINITY ? '-0' : result; 24847} 24848module.exports = baseToString; 24849 24850/***/ }), 24851
vendor: 783 bytes, lines 24852-24877
24852/***/ "./node_modules/lodash/_baseTrim.js": 24853/*!******************************************!*\ 24854 !*** ./node_modules/lodash/_baseTrim.js ***! 24855 \******************************************/ 24856/*! no static exports found */ 24857/***/ (function(module, exports, __webpack_require__) { 24858 24859var trimmedEndIndex = __webpack_require__(/*! ./_trimmedEndIndex */ "./node_modules/lodash/_trimmedEndIndex.js"); 24860 24861/** Used to match leading whitespace. */ 24862var reTrimStart = /^\s+/; 24863 24864/** 24865 * The base implementation of `_.trim`. 24866 * 24867 * @private 24868 * @param {string} string The string to trim. 24869 * @returns {string} Returns the trimmed string. 24870 */ 24871function baseTrim(string) { 24872 return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') : string; 24873} 24874module.exports = baseTrim; 24875 24876/***/ }), 24877
vendor: 1,063 bytes, lines 24878-24907
24878/***/ "./node_modules/lodash/_castPath.js": 24879/*!******************************************!*\ 24880 !*** ./node_modules/lodash/_castPath.js ***! 24881 \******************************************/ 24882/*! no static exports found */ 24883/***/ (function(module, exports, __webpack_require__) { 24884 24885var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), 24886 isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/lodash/_isKey.js"), 24887 stringToPath = __webpack_require__(/*! ./_stringToPath */ "./node_modules/lodash/_stringToPath.js"), 24888 toString = __webpack_require__(/*! ./toString */ "./node_modules/lodash/toString.js"); 24889 24890/** 24891 * Casts `value` to a path array if it's not one. 24892 * 24893 * @private 24894 * @param {*} value The value to inspect. 24895 * @param {Object} [object] The object to query keys on. 24896 * @returns {Array} Returns the cast property path array. 24897 */ 24898function castPath(value, object) { 24899 if (isArray(value)) { 24900 return value; 24901 } 24902 return isKey(value, object) ? [value] : stringToPath(toString(value)); 24903} 24904module.exports = castPath; 24905 24906/***/ }), 24907
vendor: 501 bytes, lines 24908-24922
24908/***/ "./node_modules/lodash/_coreJsData.js": 24909/*!********************************************!*\ 24910 !*** ./node_modules/lodash/_coreJsData.js ***! 24911 \********************************************/ 24912/*! no static exports found */ 24913/***/ (function(module, exports, __webpack_require__) { 24914 24915var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); 24916 24917/** Used to detect overreaching core-js shims. */ 24918var coreJsData = root['__core-js_shared__']; 24919module.exports = coreJsData; 24920 24921/***/ }), 24922
vendor: 596 bytes, lines 24923-24941
24923/***/ "./node_modules/lodash/_defineProperty.js": 24924/*!************************************************!*\ 24925 !*** ./node_modules/lodash/_defineProperty.js ***! 24926 \************************************************/ 24927/*! no static exports found */ 24928/***/ (function(module, exports, __webpack_require__) { 24929 24930var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"); 24931var defineProperty = function () { 24932 try { 24933 var func = getNative(Object, 'defineProperty'); 24934 func({}, '', {}); 24935 return func; 24936 } catch (e) {} 24937}(); 24938module.exports = defineProperty; 24939 24940/***/ }), 24941
vendor: 1,044 bytes, lines 24942-24956
24942/***/ "./node_modules/lodash/_freeGlobal.js": 24943/*!********************************************!*\ 24944 !*** ./node_modules/lodash/_freeGlobal.js ***! 24945 \********************************************/ 24946/*! no static exports found */ 24947/***/ (function(module, exports, __webpack_require__) { 24948 24949/* WEBPACK VAR INJECTION */(function(global) {function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 24950/** Detect free variable `global` from Node.js. */ 24951var freeGlobal = (typeof global === "undefined" ? "undefined" : _typeof(global)) == 'object' && global && global.Object === Object && global; 24952module.exports = freeGlobal; 24953/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) 24954 24955/***/ }), 24956
vendor: 741 bytes, lines 24957-24981
24957/***/ "./node_modules/lodash/_getMapData.js": 24958/*!********************************************!*\ 24959 !*** ./node_modules/lodash/_getMapData.js ***! 24960 \********************************************/ 24961/*! no static exports found */ 24962/***/ (function(module, exports, __webpack_require__) { 24963 24964var isKeyable = __webpack_require__(/*! ./_isKeyable */ "./node_modules/lodash/_isKeyable.js"); 24965 24966/** 24967 * Gets the data for `map`. 24968 * 24969 * @private 24970 * @param {Object} map The map to query. 24971 * @param {string} key The reference key. 24972 * @returns {*} Returns the map data. 24973 */ 24974function getMapData(map, key) { 24975 var data = map.__data__; 24976 return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map; 24977} 24978module.exports = getMapData; 24979 24980/***/ }), 24981
vendor: 883 bytes, lines 24982-25007
24982/***/ "./node_modules/lodash/_getNative.js": 24983/*!*******************************************!*\ 24984 !*** ./node_modules/lodash/_getNative.js ***! 24985 \*******************************************/ 24986/*! no static exports found */ 24987/***/ (function(module, exports, __webpack_require__) { 24988 24989var baseIsNative = __webpack_require__(/*! ./_baseIsNative */ "./node_modules/lodash/_baseIsNative.js"), 24990 getValue = __webpack_require__(/*! ./_getValue */ "./node_modules/lodash/_getValue.js"); 24991 24992/** 24993 * Gets the native function at `key` of `object`. 24994 * 24995 * @private 24996 * @param {Object} object The object to query. 24997 * @param {string} key The key of the method to get. 24998 * @returns {*} Returns the function if it's native, else `undefined`. 24999 */ 25000function getNative(object, key) { 25001 var value = getValue(object, key); 25002 return baseIsNative(value) ? value : undefined; 25003} 25004module.exports = getNative; 25005 25006/***/ }), 25007
vendor: 1,480 bytes, lines 25008-25060
25008/***/ "./node_modules/lodash/_getRawTag.js": 25009/*!*******************************************!*\ 25010 !*** ./node_modules/lodash/_getRawTag.js ***! 25011 \*******************************************/ 25012/*! no static exports found */ 25013/***/ (function(module, exports, __webpack_require__) { 25014 25015var _Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"); 25016 25017/** Used for built-in method references. */ 25018var objectProto = Object.prototype; 25019 25020/** Used to check objects for own properties. */ 25021var hasOwnProperty = objectProto.hasOwnProperty; 25022 25023/** 25024 * Used to resolve the 25025 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) 25026 * of values. 25027 */ 25028var nativeObjectToString = objectProto.toString; 25029 25030/** Built-in value references. */ 25031var symToStringTag = _Symbol ? _Symbol.toStringTag : undefined; 25032 25033/** 25034 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. 25035 * 25036 * @private 25037 * @param {*} value The value to query. 25038 * @returns {string} Returns the raw `toStringTag`. 25039 */ 25040function getRawTag(value) { 25041 var isOwn = hasOwnProperty.call(value, symToStringTag), 25042 tag = value[symToStringTag]; 25043 try { 25044 value[symToStringTag] = undefined; 25045 var unmasked = true; 25046 } catch (e) {} 25047 var result = nativeObjectToString.call(value); 25048 if (unmasked) { 25049 if (isOwn) { 25050 value[symToStringTag] = tag; 25051 } else { 25052 delete value[symToStringTag]; 25053 } 25054 } 25055 return result; 25056} 25057module.exports = getRawTag; 25058 25059/***/ }), 25060
vendor: 590 bytes, lines 25061-25082
25061/***/ "./node_modules/lodash/_getValue.js": 25062/*!******************************************!*\ 25063 !*** ./node_modules/lodash/_getValue.js ***! 25064 \******************************************/ 25065/*! no static exports found */ 25066/***/ (function(module, exports) { 25067 25068/** 25069 * Gets the value at `key` of `object`. 25070 * 25071 * @private 25072 * @param {Object} [object] The object to query. 25073 * @param {string} key The key of the property to get. 25074 * @returns {*} Returns the property value. 25075 */ 25076function getValue(object, key) { 25077 return object == null ? undefined : object[key]; 25078} 25079module.exports = getValue; 25080 25081/***/ }), 25082
vendor: 629 bytes, lines 25083-25106
25083/***/ "./node_modules/lodash/_hashClear.js": 25084/*!*******************************************!*\ 25085 !*** ./node_modules/lodash/_hashClear.js ***! 25086 \*******************************************/ 25087/*! no static exports found */ 25088/***/ (function(module, exports, __webpack_require__) { 25089 25090var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js"); 25091 25092/** 25093 * Removes all key-value entries from the hash. 25094 * 25095 * @private 25096 * @name clear 25097 * @memberOf Hash 25098 */ 25099function hashClear() { 25100 this.__data__ = nativeCreate ? nativeCreate(null) : {}; 25101 this.size = 0; 25102} 25103module.exports = hashClear; 25104 25105/***/ }), 25106
vendor: 718 bytes, lines 25107-25132
25107/***/ "./node_modules/lodash/_hashDelete.js": 25108/*!********************************************!*\ 25109 !*** ./node_modules/lodash/_hashDelete.js ***! 25110 \********************************************/ 25111/*! no static exports found */ 25112/***/ (function(module, exports) { 25113 25114/** 25115 * Removes `key` and its value from the hash. 25116 * 25117 * @private 25118 * @name delete 25119 * @memberOf Hash 25120 * @param {Object} hash The hash to modify. 25121 * @param {string} key The key of the value to remove. 25122 * @returns {boolean} Returns `true` if the entry was removed, else `false`. 25123 */ 25124function hashDelete(key) { 25125 var result = this.has(key) && delete this.__data__[key]; 25126 this.size -= result ? 1 : 0; 25127 return result; 25128} 25129module.exports = hashDelete; 25130 25131/***/ }), 25132
vendor: 1,112 bytes, lines 25133-25171
25133/***/ "./node_modules/lodash/_hashGet.js": 25134/*!*****************************************!*\ 25135 !*** ./node_modules/lodash/_hashGet.js ***! 25136 \*****************************************/ 25137/*! no static exports found */ 25138/***/ (function(module, exports, __webpack_require__) { 25139 25140var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js"); 25141 25142/** Used to stand-in for `undefined` hash values. */ 25143var HASH_UNDEFINED = '__lodash_hash_undefined__'; 25144 25145/** Used for built-in method references. */ 25146var objectProto = Object.prototype; 25147 25148/** Used to check objects for own properties. */ 25149var hasOwnProperty = objectProto.hasOwnProperty; 25150 25151/** 25152 * Gets the hash value for `key`. 25153 * 25154 * @private 25155 * @name get 25156 * @memberOf Hash 25157 * @param {string} key The key of the value to get. 25158 * @returns {*} Returns the entry value. 25159 */ 25160function hashGet(key) { 25161 var data = this.__data__; 25162 if (nativeCreate) { 25163 var result = data[key]; 25164 return result === HASH_UNDEFINED ? undefined : result; 25165 } 25166 return hasOwnProperty.call(data, key) ? data[key] : undefined; 25167} 25168module.exports = hashGet; 25169 25170/***/ }), 25171
vendor: 964 bytes, lines 25172-25203
25172/***/ "./node_modules/lodash/_hashHas.js": 25173/*!*****************************************!*\ 25174 !*** ./node_modules/lodash/_hashHas.js ***! 25175 \*****************************************/ 25176/*! no static exports found */ 25177/***/ (function(module, exports, __webpack_require__) { 25178 25179var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js"); 25180 25181/** Used for built-in method references. */ 25182var objectProto = Object.prototype; 25183 25184/** Used to check objects for own properties. */ 25185var hasOwnProperty = objectProto.hasOwnProperty; 25186 25187/** 25188 * Checks if a hash value for `key` exists. 25189 * 25190 * @private 25191 * @name has 25192 * @memberOf Hash 25193 * @param {string} key The key of the entry to check. 25194 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 25195 */ 25196function hashHas(key) { 25197 var data = this.__data__; 25198 return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); 25199} 25200module.exports = hashHas; 25201 25202/***/ }), 25203
vendor: 936 bytes, lines 25204-25235
25204/***/ "./node_modules/lodash/_hashSet.js": 25205/*!*****************************************!*\ 25206 !*** ./node_modules/lodash/_hashSet.js ***! 25207 \*****************************************/ 25208/*! no static exports found */ 25209/***/ (function(module, exports, __webpack_require__) { 25210 25211var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js"); 25212 25213/** Used to stand-in for `undefined` hash values. */ 25214var HASH_UNDEFINED = '__lodash_hash_undefined__'; 25215 25216/** 25217 * Sets the hash `key` to `value`. 25218 * 25219 * @private 25220 * @name set 25221 * @memberOf Hash 25222 * @param {string} key The key of the value to set. 25223 * @param {*} value The value to set. 25224 * @returns {Object} Returns the hash instance. 25225 */ 25226function hashSet(key, value) { 25227 var data = this.__data__; 25228 this.size += this.has(key) ? 0 : 1; 25229 data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value; 25230 return this; 25231} 25232module.exports = hashSet; 25233 25234/***/ }), 25235
vendor: 1,336 bytes, lines 25236-25266
25236/***/ "./node_modules/lodash/_isIndex.js": 25237/*!*****************************************!*\ 25238 !*** ./node_modules/lodash/_isIndex.js ***! 25239 \*****************************************/ 25240/*! no static exports found */ 25241/***/ (function(module, exports) { 25242 25243function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 25244/** Used as references for various `Number` constants. */ 25245var MAX_SAFE_INTEGER = 9007199254740991; 25246 25247/** Used to detect unsigned integer values. */ 25248var reIsUint = /^(?:0|[1-9]\d*)$/; 25249 25250/** 25251 * Checks if `value` is a valid array-like index. 25252 * 25253 * @private 25254 * @param {*} value The value to check. 25255 * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. 25256 * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. 25257 */ 25258function isIndex(value, length) { 25259 var type = _typeof(value); 25260 length = length == null ? MAX_SAFE_INTEGER : length; 25261 return !!length && (type == 'number' || type != 'symbol' && reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length; 25262} 25263module.exports = isIndex; 25264 25265/***/ }), 25266
vendor: 1,582 bytes, lines 25267-25303
25267/***/ "./node_modules/lodash/_isKey.js": 25268/*!***************************************!*\ 25269 !*** ./node_modules/lodash/_isKey.js ***! 25270 \***************************************/ 25271/*! no static exports found */ 25272/***/ (function(module, exports, __webpack_require__) { 25273 25274function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 25275var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), 25276 isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); 25277 25278/** Used to match property names within property paths. */ 25279var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, 25280 reIsPlainProp = /^\w*$/; 25281 25282/** 25283 * Checks if `value` is a property name and not a property path. 25284 * 25285 * @private 25286 * @param {*} value The value to check. 25287 * @param {Object} [object] The object to query keys on. 25288 * @returns {boolean} Returns `true` if `value` is a property name, else `false`. 25289 */ 25290function isKey(value, object) { 25291 if (isArray(value)) { 25292 return false; 25293 } 25294 var type = _typeof(value); 25295 if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) { 25296 return true; 25297 } 25298 return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object); 25299} 25300module.exports = isKey; 25301 25302/***/ }), 25303
vendor: 1,024 bytes, lines 25304-25326
25304/***/ "./node_modules/lodash/_isKeyable.js": 25305/*!*******************************************!*\ 25306 !*** ./node_modules/lodash/_isKeyable.js ***! 25307 \*******************************************/ 25308/*! no static exports found */ 25309/***/ (function(module, exports) { 25310 25311function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 25312/** 25313 * Checks if `value` is suitable for use as unique object key. 25314 * 25315 * @private 25316 * @param {*} value The value to check. 25317 * @returns {boolean} Returns `true` if `value` is suitable, else `false`. 25318 */ 25319function isKeyable(value) { 25320 var type = _typeof(value); 25321 return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null; 25322} 25323module.exports = isKeyable; 25324 25325/***/ }), 25326
vendor: 901 bytes, lines 25327-25355
25327/***/ "./node_modules/lodash/_isMasked.js": 25328/*!******************************************!*\ 25329 !*** ./node_modules/lodash/_isMasked.js ***! 25330 \******************************************/ 25331/*! no static exports found */ 25332/***/ (function(module, exports, __webpack_require__) { 25333 25334var coreJsData = __webpack_require__(/*! ./_coreJsData */ "./node_modules/lodash/_coreJsData.js"); 25335 25336/** Used to detect methods masquerading as native. */ 25337var maskSrcKey = function () { 25338 var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); 25339 return uid ? 'Symbol(src)_1.' + uid : ''; 25340}(); 25341 25342/** 25343 * Checks if `func` has its source masked. 25344 * 25345 * @private 25346 * @param {Function} func The function to check. 25347 * @returns {boolean} Returns `true` if `func` is masked, else `false`. 25348 */ 25349function isMasked(func) { 25350 return !!maskSrcKey && maskSrcKey in func; 25351} 25352module.exports = isMasked; 25353 25354/***/ }), 25355
vendor: 507 bytes, lines 25356-25377
25356/***/ "./node_modules/lodash/_listCacheClear.js": 25357/*!************************************************!*\ 25358 !*** ./node_modules/lodash/_listCacheClear.js ***! 25359 \************************************************/ 25360/*! no static exports found */ 25361/***/ (function(module, exports) { 25362 25363/** 25364 * Removes all key-value entries from the list cache. 25365 * 25366 * @private 25367 * @name clear 25368 * @memberOf ListCache 25369 */ 25370function listCacheClear() { 25371 this.__data__ = []; 25372 this.size = 0; 25373} 25374module.exports = listCacheClear; 25375 25376/***/ }), 25377
vendor: 1,144 bytes, lines 25378-25420
25378/***/ "./node_modules/lodash/_listCacheDelete.js": 25379/*!*************************************************!*\ 25380 !*** ./node_modules/lodash/_listCacheDelete.js ***! 25381 \*************************************************/ 25382/*! no static exports found */ 25383/***/ (function(module, exports, __webpack_require__) { 25384 25385var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js"); 25386 25387/** Used for built-in method references. */ 25388var arrayProto = Array.prototype; 25389 25390/** Built-in value references. */ 25391var splice = arrayProto.splice; 25392 25393/** 25394 * Removes `key` and its value from the list cache. 25395 * 25396 * @private 25397 * @name delete 25398 * @memberOf ListCache 25399 * @param {string} key The key of the value to remove. 25400 * @returns {boolean} Returns `true` if the entry was removed, else `false`. 25401 */ 25402function listCacheDelete(key) { 25403 var data = this.__data__, 25404 index = assocIndexOf(data, key); 25405 if (index < 0) { 25406 return false; 25407 } 25408 var lastIndex = data.length - 1; 25409 if (index == lastIndex) { 25410 data.pop(); 25411 } else { 25412 splice.call(data, index, 1); 25413 } 25414 --this.size; 25415 return true; 25416} 25417module.exports = listCacheDelete; 25418 25419/***/ }), 25420
vendor: 777 bytes, lines 25421-25447
25421/***/ "./node_modules/lodash/_listCacheGet.js": 25422/*!**********************************************!*\ 25423 !*** ./node_modules/lodash/_listCacheGet.js ***! 25424 \**********************************************/ 25425/*! no static exports found */ 25426/***/ (function(module, exports, __webpack_require__) { 25427 25428var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js"); 25429 25430/** 25431 * Gets the list cache value for `key`. 25432 * 25433 * @private 25434 * @name get 25435 * @memberOf ListCache 25436 * @param {string} key The key of the value to get. 25437 * @returns {*} Returns the entry value. 25438 */ 25439function listCacheGet(key) { 25440 var data = this.__data__, 25441 index = assocIndexOf(data, key); 25442 return index < 0 ? undefined : data[index][1]; 25443} 25444module.exports = listCacheGet; 25445 25446/***/ }), 25447
vendor: 763 bytes, lines 25448-25472
25448/***/ "./node_modules/lodash/_listCacheHas.js": 25449/*!**********************************************!*\ 25450 !*** ./node_modules/lodash/_listCacheHas.js ***! 25451 \**********************************************/ 25452/*! no static exports found */ 25453/***/ (function(module, exports, __webpack_require__) { 25454 25455var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js"); 25456 25457/** 25458 * Checks if a list cache value for `key` exists. 25459 * 25460 * @private 25461 * @name has 25462 * @memberOf ListCache 25463 * @param {string} key The key of the entry to check. 25464 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 25465 */ 25466function listCacheHas(key) { 25467 return assocIndexOf(this.__data__, key) > -1; 25468} 25469module.exports = listCacheHas; 25470 25471/***/ }), 25472
vendor: 910 bytes, lines 25473-25506
25473/***/ "./node_modules/lodash/_listCacheSet.js": 25474/*!**********************************************!*\ 25475 !*** ./node_modules/lodash/_listCacheSet.js ***! 25476 \**********************************************/ 25477/*! no static exports found */ 25478/***/ (function(module, exports, __webpack_require__) { 25479 25480var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js"); 25481 25482/** 25483 * Sets the list cache `key` to `value`. 25484 * 25485 * @private 25486 * @name set 25487 * @memberOf ListCache 25488 * @param {string} key The key of the value to set. 25489 * @param {*} value The value to set. 25490 * @returns {Object} Returns the list cache instance. 25491 */ 25492function listCacheSet(key, value) { 25493 var data = this.__data__, 25494 index = assocIndexOf(data, key); 25495 if (index < 0) { 25496 ++this.size; 25497 data.push([key, value]); 25498 } else { 25499 data[index][1] = value; 25500 } 25501 return this; 25502} 25503module.exports = listCacheSet; 25504 25505/***/ }), 25506
vendor: 855 bytes, lines 25507-25536
25507/***/ "./node_modules/lodash/_mapCacheClear.js": 25508/*!***********************************************!*\ 25509 !*** ./node_modules/lodash/_mapCacheClear.js ***! 25510 \***********************************************/ 25511/*! no static exports found */ 25512/***/ (function(module, exports, __webpack_require__) { 25513 25514var Hash = __webpack_require__(/*! ./_Hash */ "./node_modules/lodash/_Hash.js"), 25515 ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"), 25516 Map = __webpack_require__(/*! ./_Map */ "./node_modules/lodash/_Map.js"); 25517 25518/** 25519 * Removes all key-value entries from the map. 25520 * 25521 * @private 25522 * @name clear 25523 * @memberOf MapCache 25524 */ 25525function mapCacheClear() { 25526 this.size = 0; 25527 this.__data__ = { 25528 'hash': new Hash(), 25529 'map': new (Map || ListCache)(), 25530 'string': new Hash() 25531 }; 25532} 25533module.exports = mapCacheClear; 25534 25535/***/ }), 25536
vendor: 816 bytes, lines 25537-25563
25537/***/ "./node_modules/lodash/_mapCacheDelete.js": 25538/*!************************************************!*\ 25539 !*** ./node_modules/lodash/_mapCacheDelete.js ***! 25540 \************************************************/ 25541/*! no static exports found */ 25542/***/ (function(module, exports, __webpack_require__) { 25543 25544var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js"); 25545 25546/** 25547 * Removes `key` and its value from the map. 25548 * 25549 * @private 25550 * @name delete 25551 * @memberOf MapCache 25552 * @param {string} key The key of the value to remove. 25553 * @returns {boolean} Returns `true` if the entry was removed, else `false`. 25554 */ 25555function mapCacheDelete(key) { 25556 var result = getMapData(this, key)['delete'](key); 25557 this.size -= result ? 1 : 0; 25558 return result; 25559} 25560module.exports = mapCacheDelete; 25561 25562/***/ }), 25563
vendor: 684 bytes, lines 25564-25588
25564/***/ "./node_modules/lodash/_mapCacheGet.js": 25565/*!*********************************************!*\ 25566 !*** ./node_modules/lodash/_mapCacheGet.js ***! 25567 \*********************************************/ 25568/*! no static exports found */ 25569/***/ (function(module, exports, __webpack_require__) { 25570 25571var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js"); 25572 25573/** 25574 * Gets the map value for `key`. 25575 * 25576 * @private 25577 * @name get 25578 * @memberOf MapCache 25579 * @param {string} key The key of the value to get. 25580 * @returns {*} Returns the entry value. 25581 */ 25582function mapCacheGet(key) { 25583 return getMapData(this, key).get(key); 25584} 25585module.exports = mapCacheGet; 25586 25587/***/ }), 25588
vendor: 736 bytes, lines 25589-25613
25589/***/ "./node_modules/lodash/_mapCacheHas.js": 25590/*!*********************************************!*\ 25591 !*** ./node_modules/lodash/_mapCacheHas.js ***! 25592 \*********************************************/ 25593/*! no static exports found */ 25594/***/ (function(module, exports, __webpack_require__) { 25595 25596var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js"); 25597 25598/** 25599 * Checks if a map value for `key` exists. 25600 * 25601 * @private 25602 * @name has 25603 * @memberOf MapCache 25604 * @param {string} key The key of the entry to check. 25605 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 25606 */ 25607function mapCacheHas(key) { 25608 return getMapData(this, key).has(key); 25609} 25610module.exports = mapCacheHas; 25611 25612/***/ }), 25613
vendor: 840 bytes, lines 25614-25643
25614/***/ "./node_modules/lodash/_mapCacheSet.js": 25615/*!*********************************************!*\ 25616 !*** ./node_modules/lodash/_mapCacheSet.js ***! 25617 \*********************************************/ 25618/*! no static exports found */ 25619/***/ (function(module, exports, __webpack_require__) { 25620 25621var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js"); 25622 25623/** 25624 * Sets the map `key` to `value`. 25625 * 25626 * @private 25627 * @name set 25628 * @memberOf MapCache 25629 * @param {string} key The key of the value to set. 25630 * @param {*} value The value to set. 25631 * @returns {Object} Returns the map cache instance. 25632 */ 25633function mapCacheSet(key, value) { 25634 var data = getMapData(this, key), 25635 size = data.size; 25636 data.set(key, value); 25637 this.size += data.size == size ? 0 : 1; 25638 return this; 25639} 25640module.exports = mapCacheSet; 25641 25642/***/ }), 25643
vendor: 991 bytes, lines 25644-25677
25644/***/ "./node_modules/lodash/_memoizeCapped.js": 25645/*!***********************************************!*\ 25646 !*** ./node_modules/lodash/_memoizeCapped.js ***! 25647 \***********************************************/ 25648/*! no static exports found */ 25649/***/ (function(module, exports, __webpack_require__) { 25650 25651var memoize = __webpack_require__(/*! ./memoize */ "./node_modules/lodash/memoize.js"); 25652 25653/** Used as the maximum memoize cache size. */ 25654var MAX_MEMOIZE_SIZE = 500; 25655 25656/** 25657 * A specialized version of `_.memoize` which clears the memoized function's 25658 * cache when it exceeds `MAX_MEMOIZE_SIZE`. 25659 * 25660 * @private 25661 * @param {Function} func The function to have its output memoized. 25662 * @returns {Function} Returns the new memoized function. 25663 */ 25664function memoizeCapped(func) { 25665 var result = memoize(func, function (key) { 25666 if (cache.size === MAX_MEMOIZE_SIZE) { 25667 cache.clear(); 25668 } 25669 return key; 25670 }); 25671 var cache = result.cache; 25672 return result; 25673} 25674module.exports = memoizeCapped; 25675 25676/***/ }), 25677
vendor: 544 bytes, lines 25678-25692
25678/***/ "./node_modules/lodash/_nativeCreate.js": 25679/*!**********************************************!*\ 25680 !*** ./node_modules/lodash/_nativeCreate.js ***! 25681 \**********************************************/ 25682/*! no static exports found */ 25683/***/ (function(module, exports, __webpack_require__) { 25684 25685var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"); 25686 25687/* Built-in method references that are verified to be native. */ 25688var nativeCreate = getNative(Object, 'create'); 25689module.exports = nativeCreate; 25690 25691/***/ }), 25692
vendor: 854 bytes, lines 25693-25723
25693/***/ "./node_modules/lodash/_objectToString.js": 25694/*!************************************************!*\ 25695 !*** ./node_modules/lodash/_objectToString.js ***! 25696 \************************************************/ 25697/*! no static exports found */ 25698/***/ (function(module, exports) { 25699 25700/** Used for built-in method references. */ 25701var objectProto = Object.prototype; 25702 25703/** 25704 * Used to resolve the 25705 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) 25706 * of values. 25707 */ 25708var nativeObjectToString = objectProto.toString; 25709 25710/** 25711 * Converts `value` to a string using `Object.prototype.toString`. 25712 * 25713 * @private 25714 * @param {*} value The value to convert. 25715 * @returns {string} Returns the converted string. 25716 */ 25717function objectToString(value) { 25718 return nativeObjectToString.call(value); 25719} 25720module.exports = objectToString; 25721 25722/***/ }), 25723
vendor: 1,011 bytes, lines 25724-25742
25724/***/ "./node_modules/lodash/_root.js": 25725/*!**************************************!*\ 25726 !*** ./node_modules/lodash/_root.js ***! 25727 \**************************************/ 25728/*! no static exports found */ 25729/***/ (function(module, exports, __webpack_require__) { 25730 25731function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 25732var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/lodash/_freeGlobal.js"); 25733 25734/** Detect free variable `self`. */ 25735var freeSelf = (typeof self === "undefined" ? "undefined" : _typeof(self)) == 'object' && self && self.Object === Object && self; 25736 25737/** Used as a reference to the global object. */ 25738var root = freeGlobal || freeSelf || Function('return this')(); 25739module.exports = root; 25740 25741/***/ }), 25742
vendor: 1,201 bytes, lines 25743-25778
25743/***/ "./node_modules/lodash/_stringToPath.js": 25744/*!**********************************************!*\ 25745 !*** ./node_modules/lodash/_stringToPath.js ***! 25746 \**********************************************/ 25747/*! no static exports found */ 25748/***/ (function(module, exports, __webpack_require__) { 25749 25750var memoizeCapped = __webpack_require__(/*! ./_memoizeCapped */ "./node_modules/lodash/_memoizeCapped.js"); 25751 25752/** Used to match property names within property paths. */ 25753var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; 25754 25755/** Used to match backslashes in property paths. */ 25756var reEscapeChar = /\\(\\)?/g; 25757 25758/** 25759 * Converts `string` to a property path array. 25760 * 25761 * @private 25762 * @param {string} string The string to convert. 25763 * @returns {Array} Returns the property path array. 25764 */ 25765var stringToPath = memoizeCapped(function (string) { 25766 var result = []; 25767 if (string.charCodeAt(0) === 46 /* . */) { 25768 result.push(''); 25769 } 25770 string.replace(rePropName, function (match, number, quote, subString) { 25771 result.push(quote ? subString.replace(reEscapeChar, '$1') : number || match); 25772 }); 25773 return result; 25774}); 25775module.exports = stringToPath; 25776 25777/***/ }), 25778
vendor: 844 bytes, lines 25779-25808
25779/***/ "./node_modules/lodash/_toKey.js": 25780/*!***************************************!*\ 25781 !*** ./node_modules/lodash/_toKey.js ***! 25782 \***************************************/ 25783/*! no static exports found */ 25784/***/ (function(module, exports, __webpack_require__) { 25785 25786var isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); 25787 25788/** Used as references for various `Number` constants. */ 25789var INFINITY = 1 / 0; 25790 25791/** 25792 * Converts `value` to a string key if it's not a string or symbol. 25793 * 25794 * @private 25795 * @param {*} value The value to inspect. 25796 * @returns {string|symbol} Returns the key. 25797 */ 25798function toKey(value) { 25799 if (typeof value == 'string' || isSymbol(value)) { 25800 return value; 25801 } 25802 var result = value + ''; 25803 return result == '0' && 1 / value == -INFINITY ? '-0' : result; 25804} 25805module.exports = toKey; 25806 25807/***/ }), 25808
vendor: 819 bytes, lines 25809-25843
25809/***/ "./node_modules/lodash/_toSource.js": 25810/*!******************************************!*\ 25811 !*** ./node_modules/lodash/_toSource.js ***! 25812 \******************************************/ 25813/*! no static exports found */ 25814/***/ (function(module, exports) { 25815 25816/** Used for built-in method references. */ 25817var funcProto = Function.prototype; 25818 25819/** Used to resolve the decompiled source of functions. */ 25820var funcToString = funcProto.toString; 25821 25822/** 25823 * Converts `func` to its source code. 25824 * 25825 * @private 25826 * @param {Function} func The function to convert. 25827 * @returns {string} Returns the source code. 25828 */ 25829function toSource(func) { 25830 if (func != null) { 25831 try { 25832 return funcToString.call(func); 25833 } catch (e) {} 25834 try { 25835 return func + ''; 25836 } catch (e) {} 25837 } 25838 return ''; 25839} 25840module.exports = toSource; 25841 25842/***/ }), 25843
vendor: 807 bytes, lines 25844-25870
25844/***/ "./node_modules/lodash/_trimmedEndIndex.js": 25845/*!*************************************************!*\ 25846 !*** ./node_modules/lodash/_trimmedEndIndex.js ***! 25847 \*************************************************/ 25848/*! no static exports found */ 25849/***/ (function(module, exports) { 25850 25851/** Used to match a single whitespace character. */ 25852var reWhitespace = /\s/; 25853 25854/** 25855 * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace 25856 * character of `string`. 25857 * 25858 * @private 25859 * @param {string} string The string to inspect. 25860 * @returns {number} Returns the index of the last non-whitespace character. 25861 */ 25862function trimmedEndIndex(string) { 25863 var index = string.length; 25864 while (index-- && reWhitespace.test(string.charAt(index))) {} 25865 return index; 25866} 25867module.exports = trimmedEndIndex; 25868 25869/***/ }), 25870
vendor: 6,462 bytes, lines 25871-26053
25871/***/ "./node_modules/lodash/debounce.js": 25872/*!*****************************************!*\ 25873 !*** ./node_modules/lodash/debounce.js ***! 25874 \*****************************************/ 25875/*! no static exports found */ 25876/***/ (function(module, exports, __webpack_require__) { 25877 25878var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), 25879 now = __webpack_require__(/*! ./now */ "./node_modules/lodash/now.js"), 25880 toNumber = __webpack_require__(/*! ./toNumber */ "./node_modules/lodash/toNumber.js"); 25881 25882/** Error message constants. */ 25883var FUNC_ERROR_TEXT = 'Expected a function'; 25884 25885/* Built-in method references for those with the same name as other `lodash` methods. */ 25886var nativeMax = Math.max, 25887 nativeMin = Math.min; 25888 25889/** 25890 * Creates a debounced function that delays invoking `func` until after `wait` 25891 * milliseconds have elapsed since the last time the debounced function was 25892 * invoked. The debounced function comes with a `cancel` method to cancel 25893 * delayed `func` invocations and a `flush` method to immediately invoke them. 25894 * Provide `options` to indicate whether `func` should be invoked on the 25895 * leading and/or trailing edge of the `wait` timeout. The `func` is invoked 25896 * with the last arguments provided to the debounced function. Subsequent 25897 * calls to the debounced function return the result of the last `func` 25898 * invocation. 25899 * 25900 * **Note:** If `leading` and `trailing` options are `true`, `func` is 25901 * invoked on the trailing edge of the timeout only if the debounced function 25902 * is invoked more than once during the `wait` timeout. 25903 * 25904 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred 25905 * until to the next tick, similar to `setTimeout` with a timeout of `0`. 25906 * 25907 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) 25908 * for details over the differences between `_.debounce` and `_.throttle`. 25909 * 25910 * @static 25911 * @memberOf _ 25912 * @since 0.1.0 25913 * @category Function 25914 * @param {Function} func The function to debounce. 25915 * @param {number} [wait=0] The number of milliseconds to delay. 25916 * @param {Object} [options={}] The options object. 25917 * @param {boolean} [options.leading=false] 25918 * Specify invoking on the leading edge of the timeout. 25919 * @param {number} [options.maxWait] 25920 * The maximum time `func` is allowed to be delayed before it's invoked. 25921 * @param {boolean} [options.trailing=true] 25922 * Specify invoking on the trailing edge of the timeout. 25923 * @returns {Function} Returns the new debounced function. 25924 * @example 25925 * 25926 * // Avoid costly calculations while the window size is in flux. 25927 * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); 25928 * 25929 * // Invoke `sendMail` when clicked, debouncing subsequent calls. 25930 * jQuery(element).on('click', _.debounce(sendMail, 300, { 25931 * 'leading': true, 25932 * 'trailing': false 25933 * })); 25934 * 25935 * // Ensure `batchLog` is invoked once after 1 second of debounced calls. 25936 * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); 25937 * var source = new EventSource('/stream'); 25938 * jQuery(source).on('message', debounced); 25939 * 25940 * // Cancel the trailing debounced invocation. 25941 * jQuery(window).on('popstate', debounced.cancel); 25942 */ 25943function debounce(func, wait, options) { 25944 var lastArgs, 25945 lastThis, 25946 maxWait, 25947 result, 25948 timerId, 25949 lastCallTime, 25950 lastInvokeTime = 0, 25951 leading = false, 25952 maxing = false, 25953 trailing = true; 25954 if (typeof func != 'function') { 25955 throw new TypeError(FUNC_ERROR_TEXT); 25956 } 25957 wait = toNumber(wait) || 0; 25958 if (isObject(options)) { 25959 leading = !!options.leading; 25960 maxing = 'maxWait' in options; 25961 maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; 25962 trailing = 'trailing' in options ? !!options.trailing : trailing; 25963 } 25964 function invokeFunc(time) { 25965 var args = lastArgs, 25966 thisArg = lastThis; 25967 lastArgs = lastThis = undefined; 25968 lastInvokeTime = time; 25969 result = func.apply(thisArg, args); 25970 return result; 25971 } 25972 function leadingEdge(time) { 25973 // Reset any `maxWait` timer. 25974 lastInvokeTime = time; 25975 // Start the timer for the trailing edge. 25976 timerId = setTimeout(timerExpired, wait); 25977 // Invoke the leading edge. 25978 return leading ? invokeFunc(time) : result; 25979 } 25980 function remainingWait(time) { 25981 var timeSinceLastCall = time - lastCallTime, 25982 timeSinceLastInvoke = time - lastInvokeTime, 25983 timeWaiting = wait - timeSinceLastCall; 25984 return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting; 25985 } 25986 function shouldInvoke(time) { 25987 var timeSinceLastCall = time - lastCallTime, 25988 timeSinceLastInvoke = time - lastInvokeTime; 25989 25990 // Either this is the first call, activity has stopped and we're at the 25991 // trailing edge, the system time has gone backwards and we're treating 25992 // it as the trailing edge, or we've hit the `maxWait` limit. 25993 return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait; 25994 } 25995 function timerExpired() { 25996 var time = now(); 25997 if (shouldInvoke(time)) { 25998 return trailingEdge(time); 25999 } 26000 // Restart the timer. 26001 timerId = setTimeout(timerExpired, remainingWait(time)); 26002 } 26003 function trailingEdge(time) { 26004 timerId = undefined; 26005 26006 // Only invoke if we have `lastArgs` which means `func` has been 26007 // debounced at least once. 26008 if (trailing && lastArgs) { 26009 return invokeFunc(time); 26010 } 26011 lastArgs = lastThis = undefined; 26012 return result; 26013 } 26014 function cancel() { 26015 if (timerId !== undefined) { 26016 clearTimeout(timerId); 26017 } 26018 lastInvokeTime = 0; 26019 lastArgs = lastCallTime = lastThis = timerId = undefined; 26020 } 26021 function flush() { 26022 return timerId === undefined ? result : trailingEdge(now()); 26023 } 26024 function debounced() { 26025 var time = now(), 26026 isInvoking = shouldInvoke(time); 26027 lastArgs = arguments; 26028 lastThis = this; 26029 lastCallTime = time; 26030 if (isInvoking) { 26031 if (timerId === undefined) { 26032 return leadingEdge(lastCallTime); 26033 } 26034 if (maxing) { 26035 // Handle invocations in a tight loop. 26036 clearTimeout(timerId); 26037 timerId = setTimeout(timerExpired, wait); 26038 return invokeFunc(lastCallTime); 26039 } 26040 } 26041 if (timerId === undefined) { 26042 timerId = setTimeout(timerExpired, wait); 26043 } 26044 return result; 26045 } 26046 debounced.cancel = cancel; 26047 debounced.flush = flush; 26048 return debounced; 26049} 26050module.exports = debounce; 26051 26052/***/ }), 26053
vendor: 1,034 bytes, lines 26054-26099
26054/***/ "./node_modules/lodash/eq.js": 26055/*!***********************************!*\ 26056 !*** ./node_modules/lodash/eq.js ***! 26057 \***********************************/ 26058/*! no static exports found */ 26059/***/ (function(module, exports) { 26060 26061/** 26062 * Performs a 26063 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 26064 * comparison between two values to determine if they are equivalent. 26065 * 26066 * @static 26067 * @memberOf _ 26068 * @since 4.0.0 26069 * @category Lang 26070 * @param {*} value The value to compare. 26071 * @param {*} other The other value to compare. 26072 * @returns {boolean} Returns `true` if the values are equivalent, else `false`. 26073 * @example 26074 * 26075 * var object = { 'a': 1 }; 26076 * var other = { 'a': 1 }; 26077 * 26078 * _.eq(object, object); 26079 * // => true 26080 * 26081 * _.eq(object, other); 26082 * // => false 26083 * 26084 * _.eq('a', 'a'); 26085 * // => true 26086 * 26087 * _.eq('a', Object('a')); 26088 * // => false 26089 * 26090 * _.eq(NaN, NaN); 26091 * // => true 26092 */ 26093function eq(value, other) { 26094 return value === other || value !== value && other !== other; 26095} 26096module.exports = eq; 26097 26098/***/ }), 26099
vendor: 745 bytes, lines 26100-26134
26100/***/ "./node_modules/lodash/isArray.js": 26101/*!****************************************!*\ 26102 !*** ./node_modules/lodash/isArray.js ***! 26103 \****************************************/ 26104/*! no static exports found */ 26105/***/ (function(module, exports) { 26106 26107/** 26108 * Checks if `value` is classified as an `Array` object. 26109 * 26110 * @static 26111 * @memberOf _ 26112 * @since 0.1.0 26113 * @category Lang 26114 * @param {*} value The value to check. 26115 * @returns {boolean} Returns `true` if `value` is an array, else `false`. 26116 * @example 26117 * 26118 * _.isArray([1, 2, 3]); 26119 * // => true 26120 * 26121 * _.isArray(document.body.children); 26122 * // => false 26123 * 26124 * _.isArray('abc'); 26125 * // => false 26126 * 26127 * _.isArray(_.noop); 26128 * // => false 26129 */ 26130var isArray = Array.isArray; 26131module.exports = isArray; 26132 26133/***/ }), 26134
vendor: 1,384 bytes, lines 26135-26180
26135/***/ "./node_modules/lodash/isFunction.js": 26136/*!*******************************************!*\ 26137 !*** ./node_modules/lodash/isFunction.js ***! 26138 \*******************************************/ 26139/*! no static exports found */ 26140/***/ (function(module, exports, __webpack_require__) { 26141 26142var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), 26143 isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"); 26144 26145/** `Object#toString` result references. */ 26146var asyncTag = '[object AsyncFunction]', 26147 funcTag = '[object Function]', 26148 genTag = '[object GeneratorFunction]', 26149 proxyTag = '[object Proxy]'; 26150 26151/** 26152 * Checks if `value` is classified as a `Function` object. 26153 * 26154 * @static 26155 * @memberOf _ 26156 * @since 0.1.0 26157 * @category Lang 26158 * @param {*} value The value to check. 26159 * @returns {boolean} Returns `true` if `value` is a function, else `false`. 26160 * @example 26161 * 26162 * _.isFunction(_); 26163 * // => true 26164 * 26165 * _.isFunction(/abc/); 26166 * // => false 26167 */ 26168function isFunction(value) { 26169 if (!isObject(value)) { 26170 return false; 26171 } 26172 // The use of `Object#toString` avoids issues with the `typeof` operator 26173 // in Safari 9 which returns 'object' for typed arrays and other constructors. 26174 var tag = baseGetTag(value); 26175 return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; 26176} 26177module.exports = isFunction; 26178 26179/***/ }), 26180
vendor: 1,333 bytes, lines 26181-26221
26181/***/ "./node_modules/lodash/isObject.js": 26182/*!*****************************************!*\ 26183 !*** ./node_modules/lodash/isObject.js ***! 26184 \*****************************************/ 26185/*! no static exports found */ 26186/***/ (function(module, exports) { 26187 26188function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 26189/** 26190 * Checks if `value` is the 26191 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) 26192 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) 26193 * 26194 * @static 26195 * @memberOf _ 26196 * @since 0.1.0 26197 * @category Lang 26198 * @param {*} value The value to check. 26199 * @returns {boolean} Returns `true` if `value` is an object, else `false`. 26200 * @example 26201 * 26202 * _.isObject({}); 26203 * // => true 26204 * 26205 * _.isObject([1, 2, 3]); 26206 * // => true 26207 * 26208 * _.isObject(_.noop); 26209 * // => true 26210 * 26211 * _.isObject(null); 26212 * // => false 26213 */ 26214function isObject(value) { 26215 var type = _typeof(value); 26216 return value != null && (type == 'object' || type == 'function'); 26217} 26218module.exports = isObject; 26219 26220/***/ }), 26221
vendor: 1,230 bytes, lines 26222-26260
26222/***/ "./node_modules/lodash/isObjectLike.js": 26223/*!*********************************************!*\ 26224 !*** ./node_modules/lodash/isObjectLike.js ***! 26225 \*********************************************/ 26226/*! no static exports found */ 26227/***/ (function(module, exports) { 26228 26229function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 26230/** 26231 * Checks if `value` is object-like. A value is object-like if it's not `null` 26232 * and has a `typeof` result of "object". 26233 * 26234 * @static 26235 * @memberOf _ 26236 * @since 4.0.0 26237 * @category Lang 26238 * @param {*} value The value to check. 26239 * @returns {boolean} Returns `true` if `value` is object-like, else `false`. 26240 * @example 26241 * 26242 * _.isObjectLike({}); 26243 * // => true 26244 * 26245 * _.isObjectLike([1, 2, 3]); 26246 * // => true 26247 * 26248 * _.isObjectLike(_.noop); 26249 * // => false 26250 * 26251 * _.isObjectLike(null); 26252 * // => false 26253 */ 26254function isObjectLike(value) { 26255 return value != null && _typeof(value) == 'object'; 26256} 26257module.exports = isObjectLike; 26258 26259/***/ }), 26260
vendor: 1,408 bytes, lines 26261-26298
26261/***/ "./node_modules/lodash/isSymbol.js": 26262/*!*****************************************!*\ 26263 !*** ./node_modules/lodash/isSymbol.js ***! 26264 \*****************************************/ 26265/*! no static exports found */ 26266/***/ (function(module, exports, __webpack_require__) { 26267 26268function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 26269var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), 26270 isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); 26271 26272/** `Object#toString` result references. */ 26273var symbolTag = '[object Symbol]'; 26274 26275/** 26276 * Checks if `value` is classified as a `Symbol` primitive or object. 26277 * 26278 * @static 26279 * @memberOf _ 26280 * @since 4.0.0 26281 * @category Lang 26282 * @param {*} value The value to check. 26283 * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. 26284 * @example 26285 * 26286 * _.isSymbol(Symbol.iterator); 26287 * // => true 26288 * 26289 * _.isSymbol('abc'); 26290 * // => false 26291 */ 26292function isSymbol(value) { 26293 return _typeof(value) == 'symbol' || isObjectLike(value) && baseGetTag(value) == symbolTag; 26294} 26295module.exports = isSymbol; 26296 26297/***/ }), 26298
vendor: 2,560 bytes, lines 26299-26379
26299/***/ "./node_modules/lodash/memoize.js": 26300/*!****************************************!*\ 26301 !*** ./node_modules/lodash/memoize.js ***! 26302 \****************************************/ 26303/*! no static exports found */ 26304/***/ (function(module, exports, __webpack_require__) { 26305 26306var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/lodash/_MapCache.js"); 26307 26308/** Error message constants. */ 26309var FUNC_ERROR_TEXT = 'Expected a function'; 26310 26311/** 26312 * Creates a function that memoizes the result of `func`. If `resolver` is 26313 * provided, it determines the cache key for storing the result based on the 26314 * arguments provided to the memoized function. By default, the first argument 26315 * provided to the memoized function is used as the map cache key. The `func` 26316 * is invoked with the `this` binding of the memoized function. 26317 * 26318 * **Note:** The cache is exposed as the `cache` property on the memoized 26319 * function. Its creation may be customized by replacing the `_.memoize.Cache` 26320 * constructor with one whose instances implement the 26321 * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) 26322 * method interface of `clear`, `delete`, `get`, `has`, and `set`. 26323 * 26324 * @static 26325 * @memberOf _ 26326 * @since 0.1.0 26327 * @category Function 26328 * @param {Function} func The function to have its output memoized. 26329 * @param {Function} [resolver] The function to resolve the cache key. 26330 * @returns {Function} Returns the new memoized function. 26331 * @example 26332 * 26333 * var object = { 'a': 1, 'b': 2 }; 26334 * var other = { 'c': 3, 'd': 4 }; 26335 * 26336 * var values = _.memoize(_.values); 26337 * values(object); 26338 * // => [1, 2] 26339 * 26340 * values(other); 26341 * // => [3, 4] 26342 * 26343 * object.a = 2; 26344 * values(object); 26345 * // => [1, 2] 26346 * 26347 * // Modify the result cache. 26348 * values.cache.set(object, ['a', 'b']); 26349 * values(object); 26350 * // => ['a', 'b'] 26351 * 26352 * // Replace `_.memoize.Cache`. 26353 * _.memoize.Cache = WeakMap; 26354 */ 26355function memoize(func, resolver) { 26356 if (typeof func != 'function' || resolver != null && typeof resolver != 'function') { 26357 throw new TypeError(FUNC_ERROR_TEXT); 26358 } 26359 var memoized = function memoized() { 26360 var args = arguments, 26361 key = resolver ? resolver.apply(this, args) : args[0], 26362 cache = memoized.cache; 26363 if (cache.has(key)) { 26364 return cache.get(key); 26365 } 26366 var result = func.apply(this, args); 26367 memoized.cache = cache.set(key, result) || cache; 26368 return result; 26369 }; 26370 memoized.cache = new (memoize.Cache || MapCache)(); 26371 return memoized; 26372} 26373 26374// Expose `MapCache`. 26375memoize.Cache = MapCache; 26376module.exports = memoize; 26377 26378/***/ }), 26379
vendor: 836 bytes, lines 26380-26411
26380/***/ "./node_modules/lodash/now.js": 26381/*!************************************!*\ 26382 !*** ./node_modules/lodash/now.js ***! 26383 \************************************/ 26384/*! no static exports found */ 26385/***/ (function(module, exports, __webpack_require__) { 26386 26387var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); 26388 26389/** 26390 * Gets the timestamp of the number of milliseconds that have elapsed since 26391 * the Unix epoch (1 January 1970 00:00:00 UTC). 26392 * 26393 * @static 26394 * @memberOf _ 26395 * @since 2.4.0 26396 * @category Date 26397 * @returns {number} Returns the timestamp. 26398 * @example 26399 * 26400 * _.defer(function(stamp) { 26401 * console.log(_.now() - stamp); 26402 * }, _.now()); 26403 * // => Logs the number of milliseconds it took for the deferred invocation. 26404 */ 26405var now = function now() { 26406 return root.Date.now(); 26407}; 26408module.exports = now; 26409 26410/***/ }), 26411
vendor: 1,275 bytes, lines 26412-26455
26412/***/ "./node_modules/lodash/set.js": 26413/*!************************************!*\ 26414 !*** ./node_modules/lodash/set.js ***! 26415 \************************************/ 26416/*! no static exports found */ 26417/***/ (function(module, exports, __webpack_require__) { 26418 26419var baseSet = __webpack_require__(/*! ./_baseSet */ "./node_modules/lodash/_baseSet.js"); 26420 26421/** 26422 * Sets the value at `path` of `object`. If a portion of `path` doesn't exist, 26423 * it's created. Arrays are created for missing index properties while objects 26424 * are created for all other missing properties. Use `_.setWith` to customize 26425 * `path` creation. 26426 * 26427 * **Note:** This method mutates `object`. 26428 * 26429 * @static 26430 * @memberOf _ 26431 * @since 3.7.0 26432 * @category Object 26433 * @param {Object} object The object to modify. 26434 * @param {Array|string} path The path of the property to set. 26435 * @param {*} value The value to set. 26436 * @returns {Object} Returns `object`. 26437 * @example 26438 * 26439 * var object = { 'a': [{ 'b': { 'c': 3 } }] }; 26440 * 26441 * _.set(object, 'a[0].b.c', 4); 26442 * console.log(object.a[0].b.c); 26443 * // => 4 26444 * 26445 * _.set(object, ['x', '0', 'y', 'z'], 5); 26446 * console.log(object.x[0].y.z); 26447 * // => 5 26448 */ 26449function set(object, path, value) { 26450 return object == null ? object : baseSet(object, path, value); 26451} 26452module.exports = set; 26453 26454/***/ }), 26455
vendor: 1,943 bytes, lines 26456-26526
26456/***/ "./node_modules/lodash/toNumber.js": 26457/*!*****************************************!*\ 26458 !*** ./node_modules/lodash/toNumber.js ***! 26459 \*****************************************/ 26460/*! no static exports found */ 26461/***/ (function(module, exports, __webpack_require__) { 26462 26463var baseTrim = __webpack_require__(/*! ./_baseTrim */ "./node_modules/lodash/_baseTrim.js"), 26464 isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), 26465 isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); 26466 26467/** Used as references for various `Number` constants. */ 26468var NAN = 0 / 0; 26469 26470/** Used to detect bad signed hexadecimal string values. */ 26471var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; 26472 26473/** Used to detect binary string values. */ 26474var reIsBinary = /^0b[01]+$/i; 26475 26476/** Used to detect octal string values. */ 26477var reIsOctal = /^0o[0-7]+$/i; 26478 26479/** Built-in method references without a dependency on `root`. */ 26480var freeParseInt = parseInt; 26481 26482/** 26483 * Converts `value` to a number. 26484 * 26485 * @static 26486 * @memberOf _ 26487 * @since 4.0.0 26488 * @category Lang 26489 * @param {*} value The value to process. 26490 * @returns {number} Returns the number. 26491 * @example 26492 * 26493 * _.toNumber(3.2); 26494 * // => 3.2 26495 * 26496 * _.toNumber(Number.MIN_VALUE); 26497 * // => 5e-324 26498 * 26499 * _.toNumber(Infinity); 26500 * // => Infinity 26501 * 26502 * _.toNumber('3.2'); 26503 * // => 3.2 26504 */ 26505function toNumber(value) { 26506 if (typeof value == 'number') { 26507 return value; 26508 } 26509 if (isSymbol(value)) { 26510 return NAN; 26511 } 26512 if (isObject(value)) { 26513 var other = typeof value.valueOf == 'function' ? value.valueOf() : value; 26514 value = isObject(other) ? other + '' : other; 26515 } 26516 if (typeof value != 'string') { 26517 return value === 0 ? value : +value; 26518 } 26519 value = baseTrim(value); 26520 var isBinary = reIsBinary.test(value); 26521 return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value; 26522} 26523module.exports = toNumber; 26524 26525/***/ }), 26526
vendor: 920 bytes, lines 26527-26563
26527/***/ "./node_modules/lodash/toString.js": 26528/*!*****************************************!*\ 26529 !*** ./node_modules/lodash/toString.js ***! 26530 \*****************************************/ 26531/*! no static exports found */ 26532/***/ (function(module, exports, __webpack_require__) { 26533 26534var baseToString = __webpack_require__(/*! ./_baseToString */ "./node_modules/lodash/_baseToString.js"); 26535 26536/** 26537 * Converts `value` to a string. An empty string is returned for `null` 26538 * and `undefined` values. The sign of `-0` is preserved. 26539 * 26540 * @static 26541 * @memberOf _ 26542 * @since 4.0.0 26543 * @category Lang 26544 * @param {*} value The value to convert. 26545 * @returns {string} Returns the converted string. 26546 * @example 26547 * 26548 * _.toString(null); 26549 * // => '' 26550 * 26551 * _.toString(-0); 26552 * // => '-0' 26553 * 26554 * _.toString([1, 2, 3]); 26555 * // => '1,2,3' 26556 */ 26557function toString(value) { 26558 return value == null ? '' : baseToString(value); 26559} 26560module.exports = toString; 26561 26562/***/ }), 26563
vendor: 88,937 bytes, lines 26564-29033
26564/***/ "./node_modules/popper.js/dist/esm/popper.js": 26565/*!***************************************************!*\ 26566 !*** ./node_modules/popper.js/dist/esm/popper.js ***! 26567 \***************************************************/ 26568/*! exports provided: default */ 26569/***/ (function(module, __webpack_exports__, __webpack_require__) { 26570 26571"use strict"; 26572__webpack_require__.r(__webpack_exports__); 26573/* WEBPACK VAR INJECTION */(function(global) {/**! 26574 * @fileOverview Kickass library to create and place poppers near their reference elements. 26575 * @version 1.16.1 26576 * @license 26577 * Copyright (c) 2016 Federico Zivolo and contributors 26578 * 26579 * Permission is hereby granted, free of charge, to any person obtaining a copy 26580 * of this software and associated documentation files (the "Software"), to deal 26581 * in the Software without restriction, including without limitation the rights 26582 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 26583 * copies of the Software, and to permit persons to whom the Software is 26584 * furnished to do so, subject to the following conditions: 26585 * 26586 * The above copyright notice and this permission notice shall be included in all 26587 * copies or substantial portions of the Software. 26588 * 26589 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 26590 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 26591 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 26592 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 26593 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 26594 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 26595 * SOFTWARE. 26596 */ 26597var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined'; 26598var timeoutDuration = function () { 26599 var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox']; 26600 for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) { 26601 if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) { 26602 return 1; 26603 } 26604 } 26605 return 0; 26606}(); 26607function microtaskDebounce(fn) { 26608 var called = false; 26609 return function () { 26610 if (called) { 26611 return; 26612 } 26613 called = true; 26614 window.Promise.resolve().then(function () { 26615 called = false; 26616 fn(); 26617 }); 26618 }; 26619} 26620function taskDebounce(fn) { 26621 var scheduled = false; 26622 return function () { 26623 if (!scheduled) { 26624 scheduled = true; 26625 setTimeout(function () { 26626 scheduled = false; 26627 fn(); 26628 }, timeoutDuration); 26629 } 26630 }; 26631} 26632var supportsMicroTasks = isBrowser && window.Promise; 26633 26634/** 26635* Create a debounced version of a method, that's asynchronously deferred 26636* but called in the minimum time possible. 26637* 26638* @method 26639* @memberof Popper.Utils 26640* @argument {Function} fn 26641* @returns {Function} 26642*/ 26643var debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce; 26644 26645/** 26646 * Check if the given variable is a function 26647 * @method 26648 * @memberof Popper.Utils 26649 * @argument {Any} functionToCheck - variable to check 26650 * @returns {Boolean} answer to: is a function? 26651 */ 26652function isFunction(functionToCheck) { 26653 var getType = {}; 26654 return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]'; 26655} 26656 26657/** 26658 * Get CSS computed property of the given element 26659 * @method 26660 * @memberof Popper.Utils 26661 * @argument {Eement} element 26662 * @argument {String} property 26663 */ 26664function getStyleComputedProperty(element, property) { 26665 if (element.nodeType !== 1) { 26666 return []; 26667 } 26668 // NOTE: 1 DOM access here 26669 var window = element.ownerDocument.defaultView; 26670 var css = window.getComputedStyle(element, null); 26671 return property ? css[property] : css; 26672} 26673 26674/** 26675 * Returns the parentNode or the host of the element 26676 * @method 26677 * @memberof Popper.Utils 26678 * @argument {Element} element 26679 * @returns {Element} parent 26680 */ 26681function getParentNode(element) { 26682 if (element.nodeName === 'HTML') { 26683 return element; 26684 } 26685 return element.parentNode || element.host; 26686} 26687 26688/** 26689 * Returns the scrolling parent of the given element 26690 * @method 26691 * @memberof Popper.Utils 26692 * @argument {Element} element 26693 * @returns {Element} scroll parent 26694 */ 26695function getScrollParent(element) { 26696 // Return body, `getScroll` will take care to get the correct `scrollTop` from it 26697 if (!element) { 26698 return document.body; 26699 } 26700 switch (element.nodeName) { 26701 case 'HTML': 26702 case 'BODY': 26703 return element.ownerDocument.body; 26704 case '#document': 26705 return element.body; 26706 } 26707 26708 // Firefox want us to check `-x` and `-y` variations as well 26709 26710 var _getStyleComputedProp = getStyleComputedProperty(element), 26711 overflow = _getStyleComputedProp.overflow, 26712 overflowX = _getStyleComputedProp.overflowX, 26713 overflowY = _getStyleComputedProp.overflowY; 26714 if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) { 26715 return element; 26716 } 26717 return getScrollParent(getParentNode(element)); 26718} 26719 26720/** 26721 * Returns the reference node of the reference object, or the reference object itself. 26722 * @method 26723 * @memberof Popper.Utils 26724 * @param {Element|Object} reference - the reference element (the popper will be relative to this) 26725 * @returns {Element} parent 26726 */ 26727function getReferenceNode(reference) { 26728 return reference && reference.referenceNode ? reference.referenceNode : reference; 26729} 26730var isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode); 26731var isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent); 26732 26733/** 26734 * Determines if the browser is Internet Explorer 26735 * @method 26736 * @memberof Popper.Utils 26737 * @param {Number} version to check 26738 * @returns {Boolean} isIE 26739 */ 26740function isIE(version) { 26741 if (version === 11) { 26742 return isIE11; 26743 } 26744 if (version === 10) { 26745 return isIE10; 26746 } 26747 return isIE11 || isIE10; 26748} 26749 26750/** 26751 * Returns the offset parent of the given element 26752 * @method 26753 * @memberof Popper.Utils 26754 * @argument {Element} element 26755 * @returns {Element} offset parent 26756 */ 26757function getOffsetParent(element) { 26758 if (!element) { 26759 return document.documentElement; 26760 } 26761 var noOffsetParent = isIE(10) ? document.body : null; 26762 26763 // NOTE: 1 DOM access here 26764 var offsetParent = element.offsetParent || null; 26765 // Skip hidden elements which don't have an offsetParent 26766 while (offsetParent === noOffsetParent && element.nextElementSibling) { 26767 offsetParent = (element = element.nextElementSibling).offsetParent; 26768 } 26769 var nodeName = offsetParent && offsetParent.nodeName; 26770 if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') { 26771 return element ? element.ownerDocument.documentElement : document.documentElement; 26772 } 26773 26774 // .offsetParent will return the closest TH, TD or TABLE in case 26775 // no offsetParent is present, I hate this job... 26776 if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') { 26777 return getOffsetParent(offsetParent); 26778 } 26779 return offsetParent; 26780} 26781function isOffsetContainer(element) { 26782 var nodeName = element.nodeName; 26783 if (nodeName === 'BODY') { 26784 return false; 26785 } 26786 return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element; 26787} 26788 26789/** 26790 * Finds the root node (document, shadowDOM root) of the given element 26791 * @method 26792 * @memberof Popper.Utils 26793 * @argument {Element} node 26794 * @returns {Element} root node 26795 */ 26796function getRoot(node) { 26797 if (node.parentNode !== null) { 26798 return getRoot(node.parentNode); 26799 } 26800 return node; 26801} 26802 26803/** 26804 * Finds the offset parent common to the two provided nodes 26805 * @method 26806 * @memberof Popper.Utils 26807 * @argument {Element} element1 26808 * @argument {Element} element2 26809 * @returns {Element} common offset parent 26810 */ 26811function findCommonOffsetParent(element1, element2) { 26812 // This check is needed to avoid errors in case one of the elements isn't defined for any reason 26813 if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) { 26814 return document.documentElement; 26815 } 26816 26817 // Here we make sure to give as "start" the element that comes first in the DOM 26818 var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING; 26819 var start = order ? element1 : element2; 26820 var end = order ? element2 : element1; 26821 26822 // Get common ancestor container 26823 var range = document.createRange(); 26824 range.setStart(start, 0); 26825 range.setEnd(end, 0); 26826 var commonAncestorContainer = range.commonAncestorContainer; 26827 26828 // Both nodes are inside #document 26829 26830 if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) { 26831 if (isOffsetContainer(commonAncestorContainer)) { 26832 return commonAncestorContainer; 26833 } 26834 return getOffsetParent(commonAncestorContainer); 26835 } 26836 26837 // one of the nodes is inside shadowDOM, find which one 26838 var element1root = getRoot(element1); 26839 if (element1root.host) { 26840 return findCommonOffsetParent(element1root.host, element2); 26841 } else { 26842 return findCommonOffsetParent(element1, getRoot(element2).host); 26843 } 26844} 26845 26846/** 26847 * Gets the scroll value of the given element in the given side (top and left) 26848 * @method 26849 * @memberof Popper.Utils 26850 * @argument {Element} element 26851 * @argument {String} side `top` or `left` 26852 * @returns {number} amount of scrolled pixels 26853 */ 26854function getScroll(element) { 26855 var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top'; 26856 var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft'; 26857 var nodeName = element.nodeName; 26858 if (nodeName === 'BODY' || nodeName === 'HTML') { 26859 var html = element.ownerDocument.documentElement; 26860 var scrollingElement = element.ownerDocument.scrollingElement || html; 26861 return scrollingElement[upperSide]; 26862 } 26863 return element[upperSide]; 26864} 26865 26866/* 26867 * Sum or subtract the element scroll values (left and top) from a given rect object 26868 * @method 26869 * @memberof Popper.Utils 26870 * @param {Object} rect - Rect object you want to change 26871 * @param {HTMLElement} element - The element from the function reads the scroll values 26872 * @param {Boolean} subtract - set to true if you want to subtract the scroll values 26873 * @return {Object} rect - The modifier rect object 26874 */ 26875function includeScroll(rect, element) { 26876 var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; 26877 var scrollTop = getScroll(element, 'top'); 26878 var scrollLeft = getScroll(element, 'left'); 26879 var modifier = subtract ? -1 : 1; 26880 rect.top += scrollTop * modifier; 26881 rect.bottom += scrollTop * modifier; 26882 rect.left += scrollLeft * modifier; 26883 rect.right += scrollLeft * modifier; 26884 return rect; 26885} 26886 26887/* 26888 * Helper to detect borders of a given element 26889 * @method 26890 * @memberof Popper.Utils 26891 * @param {CSSStyleDeclaration} styles 26892 * Result of `getStyleComputedProperty` on the given element 26893 * @param {String} axis - `x` or `y` 26894 * @return {number} borders - The borders size of the given axis 26895 */ 26896 26897function getBordersSize(styles, axis) { 26898 var sideA = axis === 'x' ? 'Left' : 'Top'; 26899 var sideB = sideA === 'Left' ? 'Right' : 'Bottom'; 26900 return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']); 26901} 26902function getSize(axis, body, html, computedStyle) { 26903 return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0); 26904} 26905function getWindowSizes(document) { 26906 var body = document.body; 26907 var html = document.documentElement; 26908 var computedStyle = isIE(10) && getComputedStyle(html); 26909 return { 26910 height: getSize('Height', body, html, computedStyle), 26911 width: getSize('Width', body, html, computedStyle) 26912 }; 26913} 26914var classCallCheck = function classCallCheck(instance, Constructor) { 26915 if (!(instance instanceof Constructor)) { 26916 throw new TypeError("Cannot call a class as a function"); 26917 } 26918}; 26919var createClass = function () { 26920 function defineProperties(target, props) { 26921 for (var i = 0; i < props.length; i++) { 26922 var descriptor = props[i]; 26923 descriptor.enumerable = descriptor.enumerable || false; 26924 descriptor.configurable = true; 26925 if ("value" in descriptor) descriptor.writable = true; 26926 Object.defineProperty(target, descriptor.key, descriptor); 26927 } 26928 } 26929 return function (Constructor, protoProps, staticProps) { 26930 if (protoProps) defineProperties(Constructor.prototype, protoProps); 26931 if (staticProps) defineProperties(Constructor, staticProps); 26932 return Constructor; 26933 }; 26934}(); 26935var defineProperty = function defineProperty(obj, key, value) { 26936 if (key in obj) { 26937 Object.defineProperty(obj, key, { 26938 value: value, 26939 enumerable: true, 26940 configurable: true, 26941 writable: true 26942 }); 26943 } else { 26944 obj[key] = value; 26945 } 26946 return obj; 26947}; 26948var _extends = Object.assign || function (target) { 26949 for (var i = 1; i < arguments.length; i++) { 26950 var source = arguments[i]; 26951 for (var key in source) { 26952 if (Object.prototype.hasOwnProperty.call(source, key)) { 26953 target[key] = source[key]; 26954 } 26955 } 26956 } 26957 return target; 26958}; 26959 26960/** 26961 * Given element offsets, generate an output similar to getBoundingClientRect 26962 * @method 26963 * @memberof Popper.Utils 26964 * @argument {Object} offsets 26965 * @returns {Object} ClientRect like output 26966 */ 26967function getClientRect(offsets) { 26968 return _extends({}, offsets, { 26969 right: offsets.left + offsets.width, 26970 bottom: offsets.top + offsets.height 26971 }); 26972} 26973 26974/** 26975 * Get bounding client rect of given element 26976 * @method 26977 * @memberof Popper.Utils 26978 * @param {HTMLElement} element 26979 * @return {Object} client rect 26980 */ 26981function getBoundingClientRect(element) { 26982 var rect = {}; 26983 26984 // IE10 10 FIX: Please, don't ask, the element isn't 26985 // considered in DOM in some circumstances... 26986 // This isn't reproducible in IE10 compatibility mode of IE11 26987 try { 26988 if (isIE(10)) { 26989 rect = element.getBoundingClientRect(); 26990 var scrollTop = getScroll(element, 'top'); 26991 var scrollLeft = getScroll(element, 'left'); 26992 rect.top += scrollTop; 26993 rect.left += scrollLeft; 26994 rect.bottom += scrollTop; 26995 rect.right += scrollLeft; 26996 } else { 26997 rect = element.getBoundingClientRect(); 26998 } 26999 } catch (e) {} 27000 var result = { 27001 left: rect.left, 27002 top: rect.top, 27003 width: rect.right - rect.left, 27004 height: rect.bottom - rect.top 27005 }; 27006 27007 // subtract scrollbar size from sizes 27008 var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {}; 27009 var width = sizes.width || element.clientWidth || result.width; 27010 var height = sizes.height || element.clientHeight || result.height; 27011 var horizScrollbar = element.offsetWidth - width; 27012 var vertScrollbar = element.offsetHeight - height; 27013 27014 // if an hypothetical scrollbar is detected, we must be sure it's not a `border` 27015 // we make this check conditional for performance reasons 27016 if (horizScrollbar || vertScrollbar) { 27017 var styles = getStyleComputedProperty(element); 27018 horizScrollbar -= getBordersSize(styles, 'x'); 27019 vertScrollbar -= getBordersSize(styles, 'y'); 27020 result.width -= horizScrollbar; 27021 result.height -= vertScrollbar; 27022 } 27023 return getClientRect(result); 27024} 27025function getOffsetRectRelativeToArbitraryNode(children, parent) { 27026 var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; 27027 var isIE10 = isIE(10); 27028 var isHTML = parent.nodeName === 'HTML'; 27029 var childrenRect = getBoundingClientRect(children); 27030 var parentRect = getBoundingClientRect(parent); 27031 var scrollParent = getScrollParent(children); 27032 var styles = getStyleComputedProperty(parent); 27033 var borderTopWidth = parseFloat(styles.borderTopWidth); 27034 var borderLeftWidth = parseFloat(styles.borderLeftWidth); 27035 27036 // In cases where the parent is fixed, we must ignore negative scroll in offset calc 27037 if (fixedPosition && isHTML) { 27038 parentRect.top = Math.max(parentRect.top, 0); 27039 parentRect.left = Math.max(parentRect.left, 0); 27040 } 27041 var offsets = getClientRect({ 27042 top: childrenRect.top - parentRect.top - borderTopWidth, 27043 left: childrenRect.left - parentRect.left - borderLeftWidth, 27044 width: childrenRect.width, 27045 height: childrenRect.height 27046 }); 27047 offsets.marginTop = 0; 27048 offsets.marginLeft = 0; 27049 27050 // Subtract margins of documentElement in case it's being used as parent 27051 // we do this only on HTML because it's the only element that behaves 27052 // differently when margins are applied to it. The margins are included in 27053 // the box of the documentElement, in the other cases not. 27054 if (!isIE10 && isHTML) { 27055 var marginTop = parseFloat(styles.marginTop); 27056 var marginLeft = parseFloat(styles.marginLeft); 27057 offsets.top -= borderTopWidth - marginTop; 27058 offsets.bottom -= borderTopWidth - marginTop; 27059 offsets.left -= borderLeftWidth - marginLeft; 27060 offsets.right -= borderLeftWidth - marginLeft; 27061 27062 // Attach marginTop and marginLeft because in some circumstances we may need them 27063 offsets.marginTop = marginTop; 27064 offsets.marginLeft = marginLeft; 27065 } 27066 if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') { 27067 offsets = includeScroll(offsets, parent); 27068 } 27069 return offsets; 27070} 27071function getViewportOffsetRectRelativeToArtbitraryNode(element) { 27072 var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; 27073 var html = element.ownerDocument.documentElement; 27074 var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html); 27075 var width = Math.max(html.clientWidth, window.innerWidth || 0); 27076 var height = Math.max(html.clientHeight, window.innerHeight || 0); 27077 var scrollTop = !excludeScroll ? getScroll(html) : 0; 27078 var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0; 27079 var offset = { 27080 top: scrollTop - relativeOffset.top + relativeOffset.marginTop, 27081 left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft, 27082 width: width, 27083 height: height 27084 }; 27085 return getClientRect(offset); 27086} 27087 27088/** 27089 * Check if the given element is fixed or is inside a fixed parent 27090 * @method 27091 * @memberof Popper.Utils 27092 * @argument {Element} element 27093 * @argument {Element} customContainer 27094 * @returns {Boolean} answer to "isFixed?" 27095 */ 27096function isFixed(element) { 27097 var nodeName = element.nodeName; 27098 if (nodeName === 'BODY' || nodeName === 'HTML') { 27099 return false; 27100 } 27101 if (getStyleComputedProperty(element, 'position') === 'fixed') { 27102 return true; 27103 } 27104 var parentNode = getParentNode(element); 27105 if (!parentNode) { 27106 return false; 27107 } 27108 return isFixed(parentNode); 27109} 27110 27111/** 27112 * Finds the first parent of an element that has a transformed property defined 27113 * @method 27114 * @memberof Popper.Utils 27115 * @argument {Element} element 27116 * @returns {Element} first transformed parent or documentElement 27117 */ 27118 27119function getFixedPositionOffsetParent(element) { 27120 // This check is needed to avoid errors in case one of the elements isn't defined for any reason 27121 if (!element || !element.parentElement || isIE()) { 27122 return document.documentElement; 27123 } 27124 var el = element.parentElement; 27125 while (el && getStyleComputedProperty(el, 'transform') === 'none') { 27126 el = el.parentElement; 27127 } 27128 return el || document.documentElement; 27129} 27130 27131/** 27132 * Computed the boundaries limits and return them 27133 * @method 27134 * @memberof Popper.Utils 27135 * @param {HTMLElement} popper 27136 * @param {HTMLElement} reference 27137 * @param {number} padding 27138 * @param {HTMLElement} boundariesElement - Element used to define the boundaries 27139 * @param {Boolean} fixedPosition - Is in fixed position mode 27140 * @returns {Object} Coordinates of the boundaries 27141 */ 27142function getBoundaries(popper, reference, padding, boundariesElement) { 27143 var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; 27144 27145 // NOTE: 1 DOM access here 27146 27147 var boundaries = { 27148 top: 0, 27149 left: 0 27150 }; 27151 var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference)); 27152 27153 // Handle viewport case 27154 if (boundariesElement === 'viewport') { 27155 boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition); 27156 } else { 27157 // Handle other cases based on DOM element used as boundaries 27158 var boundariesNode = void 0; 27159 if (boundariesElement === 'scrollParent') { 27160 boundariesNode = getScrollParent(getParentNode(reference)); 27161 if (boundariesNode.nodeName === 'BODY') { 27162 boundariesNode = popper.ownerDocument.documentElement; 27163 } 27164 } else if (boundariesElement === 'window') { 27165 boundariesNode = popper.ownerDocument.documentElement; 27166 } else { 27167 boundariesNode = boundariesElement; 27168 } 27169 var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition); 27170 27171 // In case of HTML, we need a different computation 27172 if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) { 27173 var _getWindowSizes = getWindowSizes(popper.ownerDocument), 27174 height = _getWindowSizes.height, 27175 width = _getWindowSizes.width; 27176 boundaries.top += offsets.top - offsets.marginTop; 27177 boundaries.bottom = height + offsets.top; 27178 boundaries.left += offsets.left - offsets.marginLeft; 27179 boundaries.right = width + offsets.left; 27180 } else { 27181 // for all the other DOM elements, this one is good 27182 boundaries = offsets; 27183 } 27184 } 27185 27186 // Add paddings 27187 padding = padding || 0; 27188 var isPaddingNumber = typeof padding === 'number'; 27189 boundaries.left += isPaddingNumber ? padding : padding.left || 0; 27190 boundaries.top += isPaddingNumber ? padding : padding.top || 0; 27191 boundaries.right -= isPaddingNumber ? padding : padding.right || 0; 27192 boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; 27193 return boundaries; 27194} 27195function getArea(_ref) { 27196 var width = _ref.width, 27197 height = _ref.height; 27198 return width * height; 27199} 27200 27201/** 27202 * Utility used to transform the `auto` placement to the placement with more 27203 * available space. 27204 * @method 27205 * @memberof Popper.Utils 27206 * @argument {Object} data - The data object generated by update method 27207 * @argument {Object} options - Modifiers configuration and options 27208 * @returns {Object} The data object, properly modified 27209 */ 27210function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) { 27211 var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0; 27212 if (placement.indexOf('auto') === -1) { 27213 return placement; 27214 } 27215 var boundaries = getBoundaries(popper, reference, padding, boundariesElement); 27216 var rects = { 27217 top: { 27218 width: boundaries.width, 27219 height: refRect.top - boundaries.top 27220 }, 27221 right: { 27222 width: boundaries.right - refRect.right, 27223 height: boundaries.height 27224 }, 27225 bottom: { 27226 width: boundaries.width, 27227 height: boundaries.bottom - refRect.bottom 27228 }, 27229 left: { 27230 width: refRect.left - boundaries.left, 27231 height: boundaries.height 27232 } 27233 }; 27234 var sortedAreas = Object.keys(rects).map(function (key) { 27235 return _extends({ 27236 key: key 27237 }, rects[key], { 27238 area: getArea(rects[key]) 27239 }); 27240 }).sort(function (a, b) { 27241 return b.area - a.area; 27242 }); 27243 var filteredAreas = sortedAreas.filter(function (_ref2) { 27244 var width = _ref2.width, 27245 height = _ref2.height; 27246 return width >= popper.clientWidth && height >= popper.clientHeight; 27247 }); 27248 var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key; 27249 var variation = placement.split('-')[1]; 27250 return computedPlacement + (variation ? '-' + variation : ''); 27251} 27252 27253/** 27254 * Get offsets to the reference element 27255 * @method 27256 * @memberof Popper.Utils 27257 * @param {Object} state 27258 * @param {Element} popper - the popper element 27259 * @param {Element} reference - the reference element (the popper will be relative to this) 27260 * @param {Element} fixedPosition - is in fixed position mode 27261 * @returns {Object} An object containing the offsets which will be applied to the popper 27262 */ 27263function getReferenceOffsets(state, popper, reference) { 27264 var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; 27265 var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference)); 27266 return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition); 27267} 27268 27269/** 27270 * Get the outer sizes of the given element (offset size + margins) 27271 * @method 27272 * @memberof Popper.Utils 27273 * @argument {Element} element 27274 * @returns {Object} object containing width and height properties 27275 */ 27276function getOuterSizes(element) { 27277 var window = element.ownerDocument.defaultView; 27278 var styles = window.getComputedStyle(element); 27279 var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0); 27280 var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0); 27281 var result = { 27282 width: element.offsetWidth + y, 27283 height: element.offsetHeight + x 27284 }; 27285 return result; 27286} 27287 27288/** 27289 * Get the opposite placement of the given one 27290 * @method 27291 * @memberof Popper.Utils 27292 * @argument {String} placement 27293 * @returns {String} flipped placement 27294 */ 27295function getOppositePlacement(placement) { 27296 var hash = { 27297 left: 'right', 27298 right: 'left', 27299 bottom: 'top', 27300 top: 'bottom' 27301 }; 27302 return placement.replace(/left|right|bottom|top/g, function (matched) { 27303 return hash[matched]; 27304 }); 27305} 27306 27307/** 27308 * Get offsets to the popper 27309 * @method 27310 * @memberof Popper.Utils 27311 * @param {Object} position - CSS position the Popper will get applied 27312 * @param {HTMLElement} popper - the popper element 27313 * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this) 27314 * @param {String} placement - one of the valid placement options 27315 * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper 27316 */ 27317function getPopperOffsets(popper, referenceOffsets, placement) { 27318 placement = placement.split('-')[0]; 27319 27320 // Get popper node sizes 27321 var popperRect = getOuterSizes(popper); 27322 27323 // Add position, width and height to our offsets object 27324 var popperOffsets = { 27325 width: popperRect.width, 27326 height: popperRect.height 27327 }; 27328 27329 // depending by the popper placement we have to compute its offsets slightly differently 27330 var isHoriz = ['right', 'left'].indexOf(placement) !== -1; 27331 var mainSide = isHoriz ? 'top' : 'left'; 27332 var secondarySide = isHoriz ? 'left' : 'top'; 27333 var measurement = isHoriz ? 'height' : 'width'; 27334 var secondaryMeasurement = !isHoriz ? 'height' : 'width'; 27335 popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2; 27336 if (placement === secondarySide) { 27337 popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement]; 27338 } else { 27339 popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)]; 27340 } 27341 return popperOffsets; 27342} 27343 27344/** 27345 * Mimics the `find` method of Array 27346 * @method 27347 * @memberof Popper.Utils 27348 * @argument {Array} arr 27349 * @argument prop 27350 * @argument value 27351 * @returns index or -1 27352 */ 27353function find(arr, check) { 27354 // use native find if supported 27355 if (Array.prototype.find) { 27356 return arr.find(check); 27357 } 27358 27359 // use `filter` to obtain the same behavior of `find` 27360 return arr.filter(check)[0]; 27361} 27362 27363/** 27364 * Return the index of the matching object 27365 * @method 27366 * @memberof Popper.Utils 27367 * @argument {Array} arr 27368 * @argument prop 27369 * @argument value 27370 * @returns index or -1 27371 */ 27372function findIndex(arr, prop, value) { 27373 // use native findIndex if supported 27374 if (Array.prototype.findIndex) { 27375 return arr.findIndex(function (cur) { 27376 return cur[prop] === value; 27377 }); 27378 } 27379 27380 // use `find` + `indexOf` if `findIndex` isn't supported 27381 var match = find(arr, function (obj) { 27382 return obj[prop] === value; 27383 }); 27384 return arr.indexOf(match); 27385} 27386 27387/** 27388 * Loop trough the list of modifiers and run them in order, 27389 * each of them will then edit the data object. 27390 * @method 27391 * @memberof Popper.Utils 27392 * @param {dataObject} data 27393 * @param {Array} modifiers 27394 * @param {String} ends - Optional modifier name used as stopper 27395 * @returns {dataObject} 27396 */ 27397function runModifiers(modifiers, data, ends) { 27398 var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends)); 27399 modifiersToRun.forEach(function (modifier) { 27400 if (modifier['function']) { 27401 // eslint-disable-line dot-notation 27402 console.warn('`modifier.function` is deprecated, use `modifier.fn`!'); 27403 } 27404 var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation 27405 if (modifier.enabled && isFunction(fn)) { 27406 // Add properties to offsets to make them a complete clientRect object 27407 // we do this before each modifier to make sure the previous one doesn't 27408 // mess with these values 27409 data.offsets.popper = getClientRect(data.offsets.popper); 27410 data.offsets.reference = getClientRect(data.offsets.reference); 27411 data = fn(data, modifier); 27412 } 27413 }); 27414 return data; 27415} 27416 27417/** 27418 * Updates the position of the popper, computing the new offsets and applying 27419 * the new style.<br /> 27420 * Prefer `scheduleUpdate` over `update` because of performance reasons. 27421 * @method 27422 * @memberof Popper 27423 */ 27424function update() { 27425 // if popper is destroyed, don't perform any further update 27426 if (this.state.isDestroyed) { 27427 return; 27428 } 27429 var data = { 27430 instance: this, 27431 styles: {}, 27432 arrowStyles: {}, 27433 attributes: {}, 27434 flipped: false, 27435 offsets: {} 27436 }; 27437 27438 // compute reference element offsets 27439 data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed); 27440 27441 // compute auto placement, store placement inside the data object, 27442 // modifiers will be able to edit `placement` if needed 27443 // and refer to originalPlacement to know the original value 27444 data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding); 27445 27446 // store the computed placement inside `originalPlacement` 27447 data.originalPlacement = data.placement; 27448 data.positionFixed = this.options.positionFixed; 27449 27450 // compute the popper offsets 27451 data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement); 27452 data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute'; 27453 27454 // run the modifiers 27455 data = runModifiers(this.modifiers, data); 27456 27457 // the first `update` will call `onCreate` callback 27458 // the other ones will call `onUpdate` callback 27459 if (!this.state.isCreated) { 27460 this.state.isCreated = true; 27461 this.options.onCreate(data); 27462 } else { 27463 this.options.onUpdate(data); 27464 } 27465} 27466 27467/** 27468 * Helper used to know if the given modifier is enabled. 27469 * @method 27470 * @memberof Popper.Utils 27471 * @returns {Boolean} 27472 */ 27473function isModifierEnabled(modifiers, modifierName) { 27474 return modifiers.some(function (_ref) { 27475 var name = _ref.name, 27476 enabled = _ref.enabled; 27477 return enabled && name === modifierName; 27478 }); 27479} 27480 27481/** 27482 * Get the prefixed supported property name 27483 * @method 27484 * @memberof Popper.Utils 27485 * @argument {String} property (camelCase) 27486 * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix) 27487 */ 27488function getSupportedPropertyName(property) { 27489 var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O']; 27490 var upperProp = property.charAt(0).toUpperCase() + property.slice(1); 27491 for (var i = 0; i < prefixes.length; i++) { 27492 var prefix = prefixes[i]; 27493 var toCheck = prefix ? '' + prefix + upperProp : property; 27494 if (typeof document.body.style[toCheck] !== 'undefined') { 27495 return toCheck; 27496 } 27497 } 27498 return null; 27499} 27500 27501/** 27502 * Destroys the popper. 27503 * @method 27504 * @memberof Popper 27505 */ 27506function destroy() { 27507 this.state.isDestroyed = true; 27508 27509 // touch DOM only if `applyStyle` modifier is enabled 27510 if (isModifierEnabled(this.modifiers, 'applyStyle')) { 27511 this.popper.removeAttribute('x-placement'); 27512 this.popper.style.position = ''; 27513 this.popper.style.top = ''; 27514 this.popper.style.left = ''; 27515 this.popper.style.right = ''; 27516 this.popper.style.bottom = ''; 27517 this.popper.style.willChange = ''; 27518 this.popper.style[getSupportedPropertyName('transform')] = ''; 27519 } 27520 this.disableEventListeners(); 27521 27522 // remove the popper if user explicitly asked for the deletion on destroy 27523 // do not use `remove` because IE11 doesn't support it 27524 if (this.options.removeOnDestroy) { 27525 this.popper.parentNode.removeChild(this.popper); 27526 } 27527 return this; 27528} 27529 27530/** 27531 * Get the window associated with the element 27532 * @argument {Element} element 27533 * @returns {Window} 27534 */ 27535function getWindow(element) { 27536 var ownerDocument = element.ownerDocument; 27537 return ownerDocument ? ownerDocument.defaultView : window; 27538} 27539function attachToScrollParents(scrollParent, event, callback, scrollParents) { 27540 var isBody = scrollParent.nodeName === 'BODY'; 27541 var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent; 27542 target.addEventListener(event, callback, { 27543 passive: true 27544 }); 27545 if (!isBody) { 27546 attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents); 27547 } 27548 scrollParents.push(target); 27549} 27550 27551/** 27552 * Setup needed event listeners used to update the popper position 27553 * @method 27554 * @memberof Popper.Utils 27555 * @private 27556 */ 27557function setupEventListeners(reference, options, state, updateBound) { 27558 // Resize event listener on window 27559 state.updateBound = updateBound; 27560 getWindow(reference).addEventListener('resize', state.updateBound, { 27561 passive: true 27562 }); 27563 27564 // Scroll event listener on scroll parents 27565 var scrollElement = getScrollParent(reference); 27566 attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents); 27567 state.scrollElement = scrollElement; 27568 state.eventsEnabled = true; 27569 return state; 27570} 27571 27572/** 27573 * It will add resize/scroll events and start recalculating 27574 * position of the popper element when they are triggered. 27575 * @method 27576 * @memberof Popper 27577 */ 27578function enableEventListeners() { 27579 if (!this.state.eventsEnabled) { 27580 this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate); 27581 } 27582} 27583 27584/** 27585 * Remove event listeners used to update the popper position 27586 * @method 27587 * @memberof Popper.Utils 27588 * @private 27589 */ 27590function removeEventListeners(reference, state) { 27591 // Remove resize event listener on window 27592 getWindow(reference).removeEventListener('resize', state.updateBound); 27593 27594 // Remove scroll event listener on scroll parents 27595 state.scrollParents.forEach(function (target) { 27596 target.removeEventListener('scroll', state.updateBound); 27597 }); 27598 27599 // Reset state 27600 state.updateBound = null; 27601 state.scrollParents = []; 27602 state.scrollElement = null; 27603 state.eventsEnabled = false; 27604 return state; 27605} 27606 27607/** 27608 * It will remove resize/scroll events and won't recalculate popper position 27609 * when they are triggered. It also won't trigger `onUpdate` callback anymore, 27610 * unless you call `update` method manually. 27611 * @method 27612 * @memberof Popper 27613 */ 27614function disableEventListeners() { 27615 if (this.state.eventsEnabled) { 27616 cancelAnimationFrame(this.scheduleUpdate); 27617 this.state = removeEventListeners(this.reference, this.state); 27618 } 27619} 27620 27621/** 27622 * Tells if a given input is a number 27623 * @method 27624 * @memberof Popper.Utils 27625 * @param {*} input to check 27626 * @return {Boolean} 27627 */ 27628function isNumeric(n) { 27629 return n !== '' && !isNaN(parseFloat(n)) && isFinite(n); 27630} 27631 27632/** 27633 * Set the style to the given popper 27634 * @method 27635 * @memberof Popper.Utils 27636 * @argument {Element} element - Element to apply the style to 27637 * @argument {Object} styles 27638 * Object with a list of properties and values which will be applied to the element 27639 */ 27640function setStyles(element, styles) { 27641 Object.keys(styles).forEach(function (prop) { 27642 var unit = ''; 27643 // add unit if the value is numeric and is one of the following 27644 if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) { 27645 unit = 'px'; 27646 } 27647 element.style[prop] = styles[prop] + unit; 27648 }); 27649} 27650 27651/** 27652 * Set the attributes to the given popper 27653 * @method 27654 * @memberof Popper.Utils 27655 * @argument {Element} element - Element to apply the attributes to 27656 * @argument {Object} styles 27657 * Object with a list of properties and values which will be applied to the element 27658 */ 27659function setAttributes(element, attributes) { 27660 Object.keys(attributes).forEach(function (prop) { 27661 var value = attributes[prop]; 27662 if (value !== false) { 27663 element.setAttribute(prop, attributes[prop]); 27664 } else { 27665 element.removeAttribute(prop); 27666 } 27667 }); 27668} 27669 27670/** 27671 * @function 27672 * @memberof Modifiers 27673 * @argument {Object} data - The data object generated by `update` method 27674 * @argument {Object} data.styles - List of style properties - values to apply to popper element 27675 * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element 27676 * @argument {Object} options - Modifiers configuration and options 27677 * @returns {Object} The same data object 27678 */ 27679function applyStyle(data) { 27680 // any property present in `data.styles` will be applied to the popper, 27681 // in this way we can make the 3rd party modifiers add custom styles to it 27682 // Be aware, modifiers could override the properties defined in the previous 27683 // lines of this modifier! 27684 setStyles(data.instance.popper, data.styles); 27685 27686 // any property present in `data.attributes` will be applied to the popper, 27687 // they will be set as HTML attributes of the element 27688 setAttributes(data.instance.popper, data.attributes); 27689 27690 // if arrowElement is defined and arrowStyles has some properties 27691 if (data.arrowElement && Object.keys(data.arrowStyles).length) { 27692 setStyles(data.arrowElement, data.arrowStyles); 27693 } 27694 return data; 27695} 27696 27697/** 27698 * Set the x-placement attribute before everything else because it could be used 27699 * to add margins to the popper margins needs to be calculated to get the 27700 * correct popper offsets. 27701 * @method 27702 * @memberof Popper.modifiers 27703 * @param {HTMLElement} reference - The reference element used to position the popper 27704 * @param {HTMLElement} popper - The HTML element used as popper 27705 * @param {Object} options - Popper.js options 27706 */ 27707function applyStyleOnLoad(reference, popper, options, modifierOptions, state) { 27708 // compute reference element offsets 27709 var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed); 27710 27711 // compute auto placement, store placement inside the data object, 27712 // modifiers will be able to edit `placement` if needed 27713 // and refer to originalPlacement to know the original value 27714 var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding); 27715 popper.setAttribute('x-placement', placement); 27716 27717 // Apply `position` to popper before anything else because 27718 // without the position applied we can't guarantee correct computations 27719 setStyles(popper, { 27720 position: options.positionFixed ? 'fixed' : 'absolute' 27721 }); 27722 return options; 27723} 27724 27725/** 27726 * @function 27727 * @memberof Popper.Utils 27728 * @argument {Object} data - The data object generated by `update` method 27729 * @argument {Boolean} shouldRound - If the offsets should be rounded at all 27730 * @returns {Object} The popper's position offsets rounded 27731 * 27732 * The tale of pixel-perfect positioning. It's still not 100% perfect, but as 27733 * good as it can be within reason. 27734 * Discussion here: https://github.com/FezVrasta/popper.js/pull/715 27735 * 27736 * Low DPI screens cause a popper to be blurry if not using full pixels (Safari 27737 * as well on High DPI screens). 27738 * 27739 * Firefox prefers no rounding for positioning and does not have blurriness on 27740 * high DPI screens. 27741 * 27742 * Only horizontal placement and left/right values need to be considered. 27743 */ 27744function getRoundedOffsets(data, shouldRound) { 27745 var _data$offsets = data.offsets, 27746 popper = _data$offsets.popper, 27747 reference = _data$offsets.reference; 27748 var round = Math.round, 27749 floor = Math.floor; 27750 var noRound = function noRound(v) { 27751 return v; 27752 }; 27753 var referenceWidth = round(reference.width); 27754 var popperWidth = round(popper.width); 27755 var isVertical = ['left', 'right'].indexOf(data.placement) !== -1; 27756 var isVariation = data.placement.indexOf('-') !== -1; 27757 var sameWidthParity = referenceWidth % 2 === popperWidth % 2; 27758 var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1; 27759 var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor; 27760 var verticalToInteger = !shouldRound ? noRound : round; 27761 return { 27762 left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left), 27763 top: verticalToInteger(popper.top), 27764 bottom: verticalToInteger(popper.bottom), 27765 right: horizontalToInteger(popper.right) 27766 }; 27767} 27768var isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent); 27769 27770/** 27771 * @function 27772 * @memberof Modifiers 27773 * @argument {Object} data - The data object generated by `update` method 27774 * @argument {Object} options - Modifiers configuration and options 27775 * @returns {Object} The data object, properly modified 27776 */ 27777function computeStyle(data, options) { 27778 var x = options.x, 27779 y = options.y; 27780 var popper = data.offsets.popper; 27781 27782 // Remove this legacy support in Popper.js v2 27783 27784 var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) { 27785 return modifier.name === 'applyStyle'; 27786 }).gpuAcceleration; 27787 if (legacyGpuAccelerationOption !== undefined) { 27788 console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'); 27789 } 27790 var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration; 27791 var offsetParent = getOffsetParent(data.instance.popper); 27792 var offsetParentRect = getBoundingClientRect(offsetParent); 27793 27794 // Styles 27795 var styles = { 27796 position: popper.position 27797 }; 27798 var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox); 27799 var sideA = x === 'bottom' ? 'top' : 'bottom'; 27800 var sideB = y === 'right' ? 'left' : 'right'; 27801 27802 // if gpuAcceleration is set to `true` and transform is supported, 27803 // we use `translate3d` to apply the position to the popper we 27804 // automatically use the supported prefixed version if needed 27805 var prefixedProperty = getSupportedPropertyName('transform'); 27806 27807 // now, let's make a step back and look at this code closely (wtf?) 27808 // If the content of the popper grows once it's been positioned, it 27809 // may happen that the popper gets misplaced because of the new content 27810 // overflowing its reference element 27811 // To avoid this problem, we provide two options (x and y), which allow 27812 // the consumer to define the offset origin. 27813 // If we position a popper on top of a reference element, we can set 27814 // `x` to `top` to make the popper grow towards its top instead of 27815 // its bottom. 27816 var left = void 0, 27817 top = void 0; 27818 if (sideA === 'bottom') { 27819 // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar) 27820 // and not the bottom of the html element 27821 if (offsetParent.nodeName === 'HTML') { 27822 top = -offsetParent.clientHeight + offsets.bottom; 27823 } else { 27824 top = -offsetParentRect.height + offsets.bottom; 27825 } 27826 } else { 27827 top = offsets.top; 27828 } 27829 if (sideB === 'right') { 27830 if (offsetParent.nodeName === 'HTML') { 27831 left = -offsetParent.clientWidth + offsets.right; 27832 } else { 27833 left = -offsetParentRect.width + offsets.right; 27834 } 27835 } else { 27836 left = offsets.left; 27837 } 27838 if (gpuAcceleration && prefixedProperty) { 27839 styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)'; 27840 styles[sideA] = 0; 27841 styles[sideB] = 0; 27842 styles.willChange = 'transform'; 27843 } else { 27844 // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties 27845 var invertTop = sideA === 'bottom' ? -1 : 1; 27846 var invertLeft = sideB === 'right' ? -1 : 1; 27847 styles[sideA] = top * invertTop; 27848 styles[sideB] = left * invertLeft; 27849 styles.willChange = sideA + ', ' + sideB; 27850 } 27851 27852 // Attributes 27853 var attributes = { 27854 'x-placement': data.placement 27855 }; 27856 27857 // Update `data` attributes, styles and arrowStyles 27858 data.attributes = _extends({}, attributes, data.attributes); 27859 data.styles = _extends({}, styles, data.styles); 27860 data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles); 27861 return data; 27862} 27863 27864/** 27865 * Helper used to know if the given modifier depends from another one.<br /> 27866 * It checks if the needed modifier is listed and enabled. 27867 * @method 27868 * @memberof Popper.Utils 27869 * @param {Array} modifiers - list of modifiers 27870 * @param {String} requestingName - name of requesting modifier 27871 * @param {String} requestedName - name of requested modifier 27872 * @returns {Boolean} 27873 */ 27874function isModifierRequired(modifiers, requestingName, requestedName) { 27875 var requesting = find(modifiers, function (_ref) { 27876 var name = _ref.name; 27877 return name === requestingName; 27878 }); 27879 var isRequired = !!requesting && modifiers.some(function (modifier) { 27880 return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order; 27881 }); 27882 if (!isRequired) { 27883 var _requesting = '`' + requestingName + '`'; 27884 var requested = '`' + requestedName + '`'; 27885 console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!'); 27886 } 27887 return isRequired; 27888} 27889 27890/** 27891 * @function 27892 * @memberof Modifiers 27893 * @argument {Object} data - The data object generated by update method 27894 * @argument {Object} options - Modifiers configuration and options 27895 * @returns {Object} The data object, properly modified 27896 */ 27897function arrow(data, options) { 27898 var _data$offsets$arrow; 27899 27900 // arrow depends on keepTogether in order to work 27901 if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) { 27902 return data; 27903 } 27904 var arrowElement = options.element; 27905 27906 // if arrowElement is a string, suppose it's a CSS selector 27907 if (typeof arrowElement === 'string') { 27908 arrowElement = data.instance.popper.querySelector(arrowElement); 27909 27910 // if arrowElement is not found, don't run the modifier 27911 if (!arrowElement) { 27912 return data; 27913 } 27914 } else { 27915 // if the arrowElement isn't a query selector we must check that the 27916 // provided DOM node is child of its popper node 27917 if (!data.instance.popper.contains(arrowElement)) { 27918 console.warn('WARNING: `arrow.element` must be child of its popper element!'); 27919 return data; 27920 } 27921 } 27922 var placement = data.placement.split('-')[0]; 27923 var _data$offsets = data.offsets, 27924 popper = _data$offsets.popper, 27925 reference = _data$offsets.reference; 27926 var isVertical = ['left', 'right'].indexOf(placement) !== -1; 27927 var len = isVertical ? 'height' : 'width'; 27928 var sideCapitalized = isVertical ? 'Top' : 'Left'; 27929 var side = sideCapitalized.toLowerCase(); 27930 var altSide = isVertical ? 'left' : 'top'; 27931 var opSide = isVertical ? 'bottom' : 'right'; 27932 var arrowElementSize = getOuterSizes(arrowElement)[len]; 27933 27934 // 27935 // extends keepTogether behavior making sure the popper and its 27936 // reference have enough pixels in conjunction 27937 // 27938 27939 // top/left side 27940 if (reference[opSide] - arrowElementSize < popper[side]) { 27941 data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize); 27942 } 27943 // bottom/right side 27944 if (reference[side] + arrowElementSize > popper[opSide]) { 27945 data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide]; 27946 } 27947 data.offsets.popper = getClientRect(data.offsets.popper); 27948 27949 // compute center of the popper 27950 var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; 27951 27952 // Compute the sideValue using the updated popper offsets 27953 // take popper margin in account because we don't have this info available 27954 var css = getStyleComputedProperty(data.instance.popper); 27955 var popperMarginSide = parseFloat(css['margin' + sideCapitalized]); 27956 var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']); 27957 var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; 27958 27959 // prevent arrowElement from being placed not contiguously to its popper 27960 sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0); 27961 data.arrowElement = arrowElement; 27962 data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow); 27963 return data; 27964} 27965 27966/** 27967 * Get the opposite placement variation of the given one 27968 * @method 27969 * @memberof Popper.Utils 27970 * @argument {String} placement variation 27971 * @returns {String} flipped placement variation 27972 */ 27973function getOppositeVariation(variation) { 27974 if (variation === 'end') { 27975 return 'start'; 27976 } else if (variation === 'start') { 27977 return 'end'; 27978 } 27979 return variation; 27980} 27981 27982/** 27983 * List of accepted placements to use as values of the `placement` option.<br /> 27984 * Valid placements are: 27985 * - `auto` 27986 * - `top` 27987 * - `right` 27988 * - `bottom` 27989 * - `left` 27990 * 27991 * Each placement can have a variation from this list: 27992 * - `-start` 27993 * - `-end` 27994 * 27995 * Variations are interpreted easily if you think of them as the left to right 27996 * written languages. Horizontally (`top` and `bottom`), `start` is left and `end` 27997 * is right.<br /> 27998 * Vertically (`left` and `right`), `start` is top and `end` is bottom. 27999 * 28000 * Some valid examples are: 28001 * - `top-end` (on top of reference, right aligned) 28002 * - `right-start` (on right of reference, top aligned) 28003 * - `bottom` (on bottom, centered) 28004 * - `auto-end` (on the side with more space available, alignment depends by placement) 28005 * 28006 * @static 28007 * @type {Array} 28008 * @enum {String} 28009 * @readonly 28010 * @method placements 28011 * @memberof Popper 28012 */ 28013var placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']; 28014 28015// Get rid of `auto` `auto-start` and `auto-end` 28016var validPlacements = placements.slice(3); 28017 28018/** 28019 * Given an initial placement, returns all the subsequent placements 28020 * clockwise (or counter-clockwise). 28021 * 28022 * @method 28023 * @memberof Popper.Utils 28024 * @argument {String} placement - A valid placement (it accepts variations) 28025 * @argument {Boolean} counter - Set to true to walk the placements counterclockwise 28026 * @returns {Array} placements including their variations 28027 */ 28028function clockwise(placement) { 28029 var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; 28030 var index = validPlacements.indexOf(placement); 28031 var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index)); 28032 return counter ? arr.reverse() : arr; 28033} 28034var BEHAVIORS = { 28035 FLIP: 'flip', 28036 CLOCKWISE: 'clockwise', 28037 COUNTERCLOCKWISE: 'counterclockwise' 28038}; 28039 28040/** 28041 * @function 28042 * @memberof Modifiers 28043 * @argument {Object} data - The data object generated by update method 28044 * @argument {Object} options - Modifiers configuration and options 28045 * @returns {Object} The data object, properly modified 28046 */ 28047function flip(data, options) { 28048 // if `inner` modifier is enabled, we can't use the `flip` modifier 28049 if (isModifierEnabled(data.instance.modifiers, 'inner')) { 28050 return data; 28051 } 28052 if (data.flipped && data.placement === data.originalPlacement) { 28053 // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides 28054 return data; 28055 } 28056 var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed); 28057 var placement = data.placement.split('-')[0]; 28058 var placementOpposite = getOppositePlacement(placement); 28059 var variation = data.placement.split('-')[1] || ''; 28060 var flipOrder = []; 28061 switch (options.behavior) { 28062 case BEHAVIORS.FLIP: 28063 flipOrder = [placement, placementOpposite]; 28064 break; 28065 case BEHAVIORS.CLOCKWISE: 28066 flipOrder = clockwise(placement); 28067 break; 28068 case BEHAVIORS.COUNTERCLOCKWISE: 28069 flipOrder = clockwise(placement, true); 28070 break; 28071 default: 28072 flipOrder = options.behavior; 28073 } 28074 flipOrder.forEach(function (step, index) { 28075 if (placement !== step || flipOrder.length === index + 1) { 28076 return data; 28077 } 28078 placement = data.placement.split('-')[0]; 28079 placementOpposite = getOppositePlacement(placement); 28080 var popperOffsets = data.offsets.popper; 28081 var refOffsets = data.offsets.reference; 28082 28083 // using floor because the reference offsets may contain decimals we are not going to consider here 28084 var floor = Math.floor; 28085 var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom); 28086 var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left); 28087 var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right); 28088 var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top); 28089 var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom); 28090 var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom; 28091 28092 // flip the variation if required 28093 var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; 28094 28095 // flips variation if reference element overflows boundaries 28096 var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom); 28097 28098 // flips variation if popper content overflows boundaries 28099 var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop); 28100 var flippedVariation = flippedVariationByRef || flippedVariationByContent; 28101 if (overlapsRef || overflowsBoundaries || flippedVariation) { 28102 // this boolean to detect any flip loop 28103 data.flipped = true; 28104 if (overlapsRef || overflowsBoundaries) { 28105 placement = flipOrder[index + 1]; 28106 } 28107 if (flippedVariation) { 28108 variation = getOppositeVariation(variation); 28109 } 28110 data.placement = placement + (variation ? '-' + variation : ''); 28111 28112 // this object contains `position`, we want to preserve it along with 28113 // any additional property we may add in the future 28114 data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement)); 28115 data = runModifiers(data.instance.modifiers, data, 'flip'); 28116 } 28117 }); 28118 return data; 28119} 28120 28121/** 28122 * @function 28123 * @memberof Modifiers 28124 * @argument {Object} data - The data object generated by update method 28125 * @argument {Object} options - Modifiers configuration and options 28126 * @returns {Object} The data object, properly modified 28127 */ 28128function keepTogether(data) { 28129 var _data$offsets = data.offsets, 28130 popper = _data$offsets.popper, 28131 reference = _data$offsets.reference; 28132 var placement = data.placement.split('-')[0]; 28133 var floor = Math.floor; 28134 var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; 28135 var side = isVertical ? 'right' : 'bottom'; 28136 var opSide = isVertical ? 'left' : 'top'; 28137 var measurement = isVertical ? 'width' : 'height'; 28138 if (popper[side] < floor(reference[opSide])) { 28139 data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement]; 28140 } 28141 if (popper[opSide] > floor(reference[side])) { 28142 data.offsets.popper[opSide] = floor(reference[side]); 28143 } 28144 return data; 28145} 28146 28147/** 28148 * Converts a string containing value + unit into a px value number 28149 * @function 28150 * @memberof {modifiers~offset} 28151 * @private 28152 * @argument {String} str - Value + unit string 28153 * @argument {String} measurement - `height` or `width` 28154 * @argument {Object} popperOffsets 28155 * @argument {Object} referenceOffsets 28156 * @returns {Number|String} 28157 * Value in pixels, or original string if no values were extracted 28158 */ 28159function toValue(str, measurement, popperOffsets, referenceOffsets) { 28160 // separate value from unit 28161 var split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/); 28162 var value = +split[1]; 28163 var unit = split[2]; 28164 28165 // If it's not a number it's an operator, I guess 28166 if (!value) { 28167 return str; 28168 } 28169 if (unit.indexOf('%') === 0) { 28170 var element = void 0; 28171 switch (unit) { 28172 case '%p': 28173 element = popperOffsets; 28174 break; 28175 case '%': 28176 case '%r': 28177 default: 28178 element = referenceOffsets; 28179 } 28180 var rect = getClientRect(element); 28181 return rect[measurement] / 100 * value; 28182 } else if (unit === 'vh' || unit === 'vw') { 28183 // if is a vh or vw, we calculate the size based on the viewport 28184 var size = void 0; 28185 if (unit === 'vh') { 28186 size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); 28187 } else { 28188 size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); 28189 } 28190 return size / 100 * value; 28191 } else { 28192 // if is an explicit pixel unit, we get rid of the unit and keep the value 28193 // if is an implicit unit, it's px, and we return just the value 28194 return value; 28195 } 28196} 28197 28198/** 28199 * Parse an `offset` string to extrapolate `x` and `y` numeric offsets. 28200 * @function 28201 * @memberof {modifiers~offset} 28202 * @private 28203 * @argument {String} offset 28204 * @argument {Object} popperOffsets 28205 * @argument {Object} referenceOffsets 28206 * @argument {String} basePlacement 28207 * @returns {Array} a two cells array with x and y offsets in numbers 28208 */ 28209function parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) { 28210 var offsets = [0, 0]; 28211 28212 // Use height if placement is left or right and index is 0 otherwise use width 28213 // in this way the first offset will use an axis and the second one 28214 // will use the other one 28215 var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1; 28216 28217 // Split the offset string to obtain a list of values and operands 28218 // The regex addresses values with the plus or minus sign in front (+10, -20, etc) 28219 var fragments = offset.split(/(\+|\-)/).map(function (frag) { 28220 return frag.trim(); 28221 }); 28222 28223 // Detect if the offset string contains a pair of values or a single one 28224 // they could be separated by comma or space 28225 var divider = fragments.indexOf(find(fragments, function (frag) { 28226 return frag.search(/,|\s/) !== -1; 28227 })); 28228 if (fragments[divider] && fragments[divider].indexOf(',') === -1) { 28229 console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.'); 28230 } 28231 28232 // If divider is found, we divide the list of values and operands to divide 28233 // them by ofset X and Y. 28234 var splitRegex = /\s*,\s*|\s+/; 28235 var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments]; 28236 28237 // Convert the values with units to absolute pixels to allow our computations 28238 ops = ops.map(function (op, index) { 28239 // Most of the units rely on the orientation of the popper 28240 var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width'; 28241 var mergeWithPrevious = false; 28242 return op 28243 // This aggregates any `+` or `-` sign that aren't considered operators 28244 // e.g.: 10 + +5 => [10, +, +5] 28245 .reduce(function (a, b) { 28246 if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) { 28247 a[a.length - 1] = b; 28248 mergeWithPrevious = true; 28249 return a; 28250 } else if (mergeWithPrevious) { 28251 a[a.length - 1] += b; 28252 mergeWithPrevious = false; 28253 return a; 28254 } else { 28255 return a.concat(b); 28256 } 28257 }, []) 28258 // Here we convert the string values into number values (in px) 28259 .map(function (str) { 28260 return toValue(str, measurement, popperOffsets, referenceOffsets); 28261 }); 28262 }); 28263 28264 // Loop trough the offsets arrays and execute the operations 28265 ops.forEach(function (op, index) { 28266 op.forEach(function (frag, index2) { 28267 if (isNumeric(frag)) { 28268 offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1); 28269 } 28270 }); 28271 }); 28272 return offsets; 28273} 28274 28275/** 28276 * @function 28277 * @memberof Modifiers 28278 * @argument {Object} data - The data object generated by update method 28279 * @argument {Object} options - Modifiers configuration and options 28280 * @argument {Number|String} options.offset=0 28281 * The offset value as described in the modifier description 28282 * @returns {Object} The data object, properly modified 28283 */ 28284function offset(data, _ref) { 28285 var offset = _ref.offset; 28286 var placement = data.placement, 28287 _data$offsets = data.offsets, 28288 popper = _data$offsets.popper, 28289 reference = _data$offsets.reference; 28290 var basePlacement = placement.split('-')[0]; 28291 var offsets = void 0; 28292 if (isNumeric(+offset)) { 28293 offsets = [+offset, 0]; 28294 } else { 28295 offsets = parseOffset(offset, popper, reference, basePlacement); 28296 } 28297 if (basePlacement === 'left') { 28298 popper.top += offsets[0]; 28299 popper.left -= offsets[1]; 28300 } else if (basePlacement === 'right') { 28301 popper.top += offsets[0]; 28302 popper.left += offsets[1]; 28303 } else if (basePlacement === 'top') { 28304 popper.left += offsets[0]; 28305 popper.top -= offsets[1]; 28306 } else if (basePlacement === 'bottom') { 28307 popper.left += offsets[0]; 28308 popper.top += offsets[1]; 28309 } 28310 data.popper = popper; 28311 return data; 28312} 28313 28314/** 28315 * @function 28316 * @memberof Modifiers 28317 * @argument {Object} data - The data object generated by `update` method 28318 * @argument {Object} options - Modifiers configuration and options 28319 * @returns {Object} The data object, properly modified 28320 */ 28321function preventOverflow(data, options) { 28322 var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper); 28323 28324 // If offsetParent is the reference element, we really want to 28325 // go one step up and use the next offsetParent as reference to 28326 // avoid to make this modifier completely useless and look like broken 28327 if (data.instance.reference === boundariesElement) { 28328 boundariesElement = getOffsetParent(boundariesElement); 28329 } 28330 28331 // NOTE: DOM access here 28332 // resets the popper's position so that the document size can be calculated excluding 28333 // the size of the popper element itself 28334 var transformProp = getSupportedPropertyName('transform'); 28335 var popperStyles = data.instance.popper.style; // assignment to help minification 28336 var top = popperStyles.top, 28337 left = popperStyles.left, 28338 transform = popperStyles[transformProp]; 28339 popperStyles.top = ''; 28340 popperStyles.left = ''; 28341 popperStyles[transformProp] = ''; 28342 var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed); 28343 28344 // NOTE: DOM access here 28345 // restores the original style properties after the offsets have been computed 28346 popperStyles.top = top; 28347 popperStyles.left = left; 28348 popperStyles[transformProp] = transform; 28349 options.boundaries = boundaries; 28350 var order = options.priority; 28351 var popper = data.offsets.popper; 28352 var check = { 28353 primary: function primary(placement) { 28354 var value = popper[placement]; 28355 if (popper[placement] < boundaries[placement] && !options.escapeWithReference) { 28356 value = Math.max(popper[placement], boundaries[placement]); 28357 } 28358 return defineProperty({}, placement, value); 28359 }, 28360 secondary: function secondary(placement) { 28361 var mainSide = placement === 'right' ? 'left' : 'top'; 28362 var value = popper[mainSide]; 28363 if (popper[placement] > boundaries[placement] && !options.escapeWithReference) { 28364 value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height)); 28365 } 28366 return defineProperty({}, mainSide, value); 28367 } 28368 }; 28369 order.forEach(function (placement) { 28370 var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary'; 28371 popper = _extends({}, popper, check[side](placement)); 28372 }); 28373 data.offsets.popper = popper; 28374 return data; 28375} 28376 28377/** 28378 * @function 28379 * @memberof Modifiers 28380 * @argument {Object} data - The data object generated by `update` method 28381 * @argument {Object} options - Modifiers configuration and options 28382 * @returns {Object} The data object, properly modified 28383 */ 28384function shift(data) { 28385 var placement = data.placement; 28386 var basePlacement = placement.split('-')[0]; 28387 var shiftvariation = placement.split('-')[1]; 28388 28389 // if shift shiftvariation is specified, run the modifier 28390 if (shiftvariation) { 28391 var _data$offsets = data.offsets, 28392 reference = _data$offsets.reference, 28393 popper = _data$offsets.popper; 28394 var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1; 28395 var side = isVertical ? 'left' : 'top'; 28396 var measurement = isVertical ? 'width' : 'height'; 28397 var shiftOffsets = { 28398 start: defineProperty({}, side, reference[side]), 28399 end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement]) 28400 }; 28401 data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]); 28402 } 28403 return data; 28404} 28405 28406/** 28407 * @function 28408 * @memberof Modifiers 28409 * @argument {Object} data - The data object generated by update method 28410 * @argument {Object} options - Modifiers configuration and options 28411 * @returns {Object} The data object, properly modified 28412 */ 28413function hide(data) { 28414 if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) { 28415 return data; 28416 } 28417 var refRect = data.offsets.reference; 28418 var bound = find(data.instance.modifiers, function (modifier) { 28419 return modifier.name === 'preventOverflow'; 28420 }).boundaries; 28421 if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) { 28422 // Avoid unnecessary DOM access if visibility hasn't changed 28423 if (data.hide === true) { 28424 return data; 28425 } 28426 data.hide = true; 28427 data.attributes['x-out-of-boundaries'] = ''; 28428 } else { 28429 // Avoid unnecessary DOM access if visibility hasn't changed 28430 if (data.hide === false) { 28431 return data; 28432 } 28433 data.hide = false; 28434 data.attributes['x-out-of-boundaries'] = false; 28435 } 28436 return data; 28437} 28438 28439/** 28440 * @function 28441 * @memberof Modifiers 28442 * @argument {Object} data - The data object generated by `update` method 28443 * @argument {Object} options - Modifiers configuration and options 28444 * @returns {Object} The data object, properly modified 28445 */ 28446function inner(data) { 28447 var placement = data.placement; 28448 var basePlacement = placement.split('-')[0]; 28449 var _data$offsets = data.offsets, 28450 popper = _data$offsets.popper, 28451 reference = _data$offsets.reference; 28452 var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1; 28453 var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1; 28454 popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0); 28455 data.placement = getOppositePlacement(placement); 28456 data.offsets.popper = getClientRect(popper); 28457 return data; 28458} 28459 28460/** 28461 * Modifier function, each modifier can have a function of this type assigned 28462 * to its `fn` property.<br /> 28463 * These functions will be called on each update, this means that you must 28464 * make sure they are performant enough to avoid performance bottlenecks. 28465 * 28466 * @function ModifierFn 28467 * @argument {dataObject} data - The data object generated by `update` method 28468 * @argument {Object} options - Modifiers configuration and options 28469 * @returns {dataObject} The data object, properly modified 28470 */ 28471 28472/** 28473 * Modifiers are plugins used to alter the behavior of your poppers.<br /> 28474 * Popper.js uses a set of 9 modifiers to provide all the basic functionalities 28475 * needed by the library. 28476 * 28477 * Usually you don't want to override the `order`, `fn` and `onLoad` props. 28478 * All the other properties are configurations that could be tweaked. 28479 * @namespace modifiers 28480 */ 28481var modifiers = { 28482 /** 28483 * Modifier used to shift the popper on the start or end of its reference 28484 * element.<br /> 28485 * It will read the variation of the `placement` property.<br /> 28486 * It can be one either `-end` or `-start`. 28487 * @memberof modifiers 28488 * @inner 28489 */ 28490 shift: { 28491 /** @prop {number} order=100 - Index used to define the order of execution */ 28492 order: 100, 28493 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 28494 enabled: true, 28495 /** @prop {ModifierFn} */ 28496 fn: shift 28497 }, 28498 /** 28499 * The `offset` modifier can shift your popper on both its axis. 28500 * 28501 * It accepts the following units: 28502 * - `px` or unit-less, interpreted as pixels 28503 * - `%` or `%r`, percentage relative to the length of the reference element 28504 * - `%p`, percentage relative to the length of the popper element 28505 * - `vw`, CSS viewport width unit 28506 * - `vh`, CSS viewport height unit 28507 * 28508 * For length is intended the main axis relative to the placement of the popper.<br /> 28509 * This means that if the placement is `top` or `bottom`, the length will be the 28510 * `width`. In case of `left` or `right`, it will be the `height`. 28511 * 28512 * You can provide a single value (as `Number` or `String`), or a pair of values 28513 * as `String` divided by a comma or one (or more) white spaces.<br /> 28514 * The latter is a deprecated method because it leads to confusion and will be 28515 * removed in v2.<br /> 28516 * Additionally, it accepts additions and subtractions between different units. 28517 * Note that multiplications and divisions aren't supported. 28518 * 28519 * Valid examples are: 28520 * ``` 28521 * 10 28522 * '10%' 28523 * '10, 10' 28524 * '10%, 10' 28525 * '10 + 10%' 28526 * '10 - 5vh + 3%' 28527 * '-10px + 5vh, 5px - 6%' 28528 * ``` 28529 * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap 28530 * > with their reference element, unfortunately, you will have to disable the `flip` modifier. 28531 * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373). 28532 * 28533 * @memberof modifiers 28534 * @inner 28535 */ 28536 offset: { 28537 /** @prop {number} order=200 - Index used to define the order of execution */ 28538 order: 200, 28539 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 28540 enabled: true, 28541 /** @prop {ModifierFn} */ 28542 fn: offset, 28543 /** @prop {Number|String} offset=0 28544 * The offset value as described in the modifier description 28545 */ 28546 offset: 0 28547 }, 28548 /** 28549 * Modifier used to prevent the popper from being positioned outside the boundary. 28550 * 28551 * A scenario exists where the reference itself is not within the boundaries.<br /> 28552 * We can say it has "escaped the boundaries" â or just "escaped".<br /> 28553 * In this case we need to decide whether the popper should either: 28554 * 28555 * - detach from the reference and remain "trapped" in the boundaries, or 28556 * - if it should ignore the boundary and "escape with its reference" 28557 * 28558 * When `escapeWithReference` is set to`true` and reference is completely 28559 * outside its boundaries, the popper will overflow (or completely leave) 28560 * the boundaries in order to remain attached to the edge of the reference. 28561 * 28562 * @memberof modifiers 28563 * @inner 28564 */ 28565 preventOverflow: { 28566 /** @prop {number} order=300 - Index used to define the order of execution */ 28567 order: 300, 28568 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 28569 enabled: true, 28570 /** @prop {ModifierFn} */ 28571 fn: preventOverflow, 28572 /** 28573 * @prop {Array} [priority=['left','right','top','bottom']] 28574 * Popper will try to prevent overflow following these priorities by default, 28575 * then, it could overflow on the left and on top of the `boundariesElement` 28576 */ 28577 priority: ['left', 'right', 'top', 'bottom'], 28578 /** 28579 * @prop {number} padding=5 28580 * Amount of pixel used to define a minimum distance between the boundaries 28581 * and the popper. This makes sure the popper always has a little padding 28582 * between the edges of its container 28583 */ 28584 padding: 5, 28585 /** 28586 * @prop {String|HTMLElement} boundariesElement='scrollParent' 28587 * Boundaries used by the modifier. Can be `scrollParent`, `window`, 28588 * `viewport` or any DOM element. 28589 */ 28590 boundariesElement: 'scrollParent' 28591 }, 28592 /** 28593 * Modifier used to make sure the reference and its popper stay near each other 28594 * without leaving any gap between the two. Especially useful when the arrow is 28595 * enabled and you want to ensure that it points to its reference element. 28596 * It cares only about the first axis. You can still have poppers with margin 28597 * between the popper and its reference element. 28598 * @memberof modifiers 28599 * @inner 28600 */ 28601 keepTogether: { 28602 /** @prop {number} order=400 - Index used to define the order of execution */ 28603 order: 400, 28604 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 28605 enabled: true, 28606 /** @prop {ModifierFn} */ 28607 fn: keepTogether 28608 }, 28609 /** 28610 * This modifier is used to move the `arrowElement` of the popper to make 28611 * sure it is positioned between the reference element and its popper element. 28612 * It will read the outer size of the `arrowElement` node to detect how many 28613 * pixels of conjunction are needed. 28614 * 28615 * It has no effect if no `arrowElement` is provided. 28616 * @memberof modifiers 28617 * @inner 28618 */ 28619 arrow: { 28620 /** @prop {number} order=500 - Index used to define the order of execution */ 28621 order: 500, 28622 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 28623 enabled: true, 28624 /** @prop {ModifierFn} */ 28625 fn: arrow, 28626 /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */ 28627 element: '[x-arrow]' 28628 }, 28629 /** 28630 * Modifier used to flip the popper's placement when it starts to overlap its 28631 * reference element. 28632 * 28633 * Requires the `preventOverflow` modifier before it in order to work. 28634 * 28635 * **NOTE:** this modifier will interrupt the current update cycle and will 28636 * restart it if it detects the need to flip the placement. 28637 * @memberof modifiers 28638 * @inner 28639 */ 28640 flip: { 28641 /** @prop {number} order=600 - Index used to define the order of execution */ 28642 order: 600, 28643 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 28644 enabled: true, 28645 /** @prop {ModifierFn} */ 28646 fn: flip, 28647 /** 28648 * @prop {String|Array} behavior='flip' 28649 * The behavior used to change the popper's placement. It can be one of 28650 * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid 28651 * placements (with optional variations) 28652 */ 28653 behavior: 'flip', 28654 /** 28655 * @prop {number} padding=5 28656 * The popper will flip if it hits the edges of the `boundariesElement` 28657 */ 28658 padding: 5, 28659 /** 28660 * @prop {String|HTMLElement} boundariesElement='viewport' 28661 * The element which will define the boundaries of the popper position. 28662 * The popper will never be placed outside of the defined boundaries 28663 * (except if `keepTogether` is enabled) 28664 */ 28665 boundariesElement: 'viewport', 28666 /** 28667 * @prop {Boolean} flipVariations=false 28668 * The popper will switch placement variation between `-start` and `-end` when 28669 * the reference element overlaps its boundaries. 28670 * 28671 * The original placement should have a set variation. 28672 */ 28673 flipVariations: false, 28674 /** 28675 * @prop {Boolean} flipVariationsByContent=false 28676 * The popper will switch placement variation between `-start` and `-end` when 28677 * the popper element overlaps its reference boundaries. 28678 * 28679 * The original placement should have a set variation. 28680 */ 28681 flipVariationsByContent: false 28682 }, 28683 /** 28684 * Modifier used to make the popper flow toward the inner of the reference element. 28685 * By default, when this modifier is disabled, the popper will be placed outside 28686 * the reference element. 28687 * @memberof modifiers 28688 * @inner 28689 */ 28690 inner: { 28691 /** @prop {number} order=700 - Index used to define the order of execution */ 28692 order: 700, 28693 /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */ 28694 enabled: false, 28695 /** @prop {ModifierFn} */ 28696 fn: inner 28697 }, 28698 /** 28699 * Modifier used to hide the popper when its reference element is outside of the 28700 * popper boundaries. It will set a `x-out-of-boundaries` attribute which can 28701 * be used to hide with a CSS selector the popper when its reference is 28702 * out of boundaries. 28703 * 28704 * Requires the `preventOverflow` modifier before it in order to work. 28705 * @memberof modifiers 28706 * @inner 28707 */ 28708 hide: { 28709 /** @prop {number} order=800 - Index used to define the order of execution */ 28710 order: 800, 28711 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 28712 enabled: true, 28713 /** @prop {ModifierFn} */ 28714 fn: hide 28715 }, 28716 /** 28717 * Computes the style that will be applied to the popper element to gets 28718 * properly positioned. 28719 * 28720 * Note that this modifier will not touch the DOM, it just prepares the styles 28721 * so that `applyStyle` modifier can apply it. This separation is useful 28722 * in case you need to replace `applyStyle` with a custom implementation. 28723 * 28724 * This modifier has `850` as `order` value to maintain backward compatibility 28725 * with previous versions of Popper.js. Expect the modifiers ordering method 28726 * to change in future major versions of the library. 28727 * 28728 * @memberof modifiers 28729 * @inner 28730 */ 28731 computeStyle: { 28732 /** @prop {number} order=850 - Index used to define the order of execution */ 28733 order: 850, 28734 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 28735 enabled: true, 28736 /** @prop {ModifierFn} */ 28737 fn: computeStyle, 28738 /** 28739 * @prop {Boolean} gpuAcceleration=true 28740 * If true, it uses the CSS 3D transformation to position the popper. 28741 * Otherwise, it will use the `top` and `left` properties 28742 */ 28743 gpuAcceleration: true, 28744 /** 28745 * @prop {string} [x='bottom'] 28746 * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin. 28747 * Change this if your popper should grow in a direction different from `bottom` 28748 */ 28749 x: 'bottom', 28750 /** 28751 * @prop {string} [x='left'] 28752 * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin. 28753 * Change this if your popper should grow in a direction different from `right` 28754 */ 28755 y: 'right' 28756 }, 28757 /** 28758 * Applies the computed styles to the popper element. 28759 * 28760 * All the DOM manipulations are limited to this modifier. This is useful in case 28761 * you want to integrate Popper.js inside a framework or view library and you 28762 * want to delegate all the DOM manipulations to it. 28763 * 28764 * Note that if you disable this modifier, you must make sure the popper element 28765 * has its position set to `absolute` before Popper.js can do its work! 28766 * 28767 * Just disable this modifier and define your own to achieve the desired effect. 28768 * 28769 * @memberof modifiers 28770 * @inner 28771 */ 28772 applyStyle: { 28773 /** @prop {number} order=900 - Index used to define the order of execution */ 28774 order: 900, 28775 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 28776 enabled: true, 28777 /** @prop {ModifierFn} */ 28778 fn: applyStyle, 28779 /** @prop {Function} */ 28780 onLoad: applyStyleOnLoad, 28781 /** 28782 * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier 28783 * @prop {Boolean} gpuAcceleration=true 28784 * If true, it uses the CSS 3D transformation to position the popper. 28785 * Otherwise, it will use the `top` and `left` properties 28786 */ 28787 gpuAcceleration: undefined 28788 } 28789}; 28790 28791/** 28792 * The `dataObject` is an object containing all the information used by Popper.js. 28793 * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks. 28794 * @name dataObject 28795 * @property {Object} data.instance The Popper.js instance 28796 * @property {String} data.placement Placement applied to popper 28797 * @property {String} data.originalPlacement Placement originally defined on init 28798 * @property {Boolean} data.flipped True if popper has been flipped by flip modifier 28799 * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper 28800 * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier 28801 * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`) 28802 * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`) 28803 * @property {Object} data.boundaries Offsets of the popper boundaries 28804 * @property {Object} data.offsets The measurements of popper, reference and arrow elements 28805 * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values 28806 * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values 28807 * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0 28808 */ 28809 28810/** 28811 * Default options provided to Popper.js constructor.<br /> 28812 * These can be overridden using the `options` argument of Popper.js.<br /> 28813 * To override an option, simply pass an object with the same 28814 * structure of the `options` object, as the 3rd argument. For example: 28815 * ``` 28816 * new Popper(ref, pop, { 28817 * modifiers: { 28818 * preventOverflow: { enabled: false } 28819 * } 28820 * }) 28821 * ``` 28822 * @type {Object} 28823 * @static 28824 * @memberof Popper 28825 */ 28826var Defaults = { 28827 /** 28828 * Popper's placement. 28829 * @prop {Popper.placements} placement='bottom' 28830 */ 28831 placement: 'bottom', 28832 /** 28833 * Set this to true if you want popper to position it self in 'fixed' mode 28834 * @prop {Boolean} positionFixed=false 28835 */ 28836 positionFixed: false, 28837 /** 28838 * Whether events (resize, scroll) are initially enabled. 28839 * @prop {Boolean} eventsEnabled=true 28840 */ 28841 eventsEnabled: true, 28842 /** 28843 * Set to true if you want to automatically remove the popper when 28844 * you call the `destroy` method. 28845 * @prop {Boolean} removeOnDestroy=false 28846 */ 28847 removeOnDestroy: false, 28848 /** 28849 * Callback called when the popper is created.<br /> 28850 * By default, it is set to no-op.<br /> 28851 * Access Popper.js instance with `data.instance`. 28852 * @prop {onCreate} 28853 */ 28854 onCreate: function onCreate() {}, 28855 /** 28856 * Callback called when the popper is updated. This callback is not called 28857 * on the initialization/creation of the popper, but only on subsequent 28858 * updates.<br /> 28859 * By default, it is set to no-op.<br /> 28860 * Access Popper.js instance with `data.instance`. 28861 * @prop {onUpdate} 28862 */ 28863 onUpdate: function onUpdate() {}, 28864 /** 28865 * List of modifiers used to modify the offsets before they are applied to the popper. 28866 * They provide most of the functionalities of Popper.js. 28867 * @prop {modifiers} 28868 */ 28869 modifiers: modifiers 28870}; 28871 28872/** 28873 * @callback onCreate 28874 * @param {dataObject} data 28875 */ 28876 28877/** 28878 * @callback onUpdate 28879 * @param {dataObject} data 28880 */ 28881 28882// Utils 28883// Methods 28884var Popper = function () { 28885 /** 28886 * Creates a new Popper.js instance. 28887 * @class Popper 28888 * @param {Element|referenceObject} reference - The reference element used to position the popper 28889 * @param {Element} popper - The HTML / XML element used as the popper 28890 * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults) 28891 * @return {Object} instance - The generated Popper.js instance 28892 */ 28893 function Popper(reference, popper) { 28894 var _this = this; 28895 var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; 28896 classCallCheck(this, Popper); 28897 this.scheduleUpdate = function () { 28898 return requestAnimationFrame(_this.update); 28899 }; 28900 28901 // make update() debounced, so that it only runs at most once-per-tick 28902 this.update = debounce(this.update.bind(this)); 28903 28904 // with {} we create a new object with the options inside it 28905 this.options = _extends({}, Popper.Defaults, options); 28906 28907 // init state 28908 this.state = { 28909 isDestroyed: false, 28910 isCreated: false, 28911 scrollParents: [] 28912 }; 28913 28914 // get reference and popper elements (allow jQuery wrappers) 28915 this.reference = reference && reference.jquery ? reference[0] : reference; 28916 this.popper = popper && popper.jquery ? popper[0] : popper; 28917 28918 // Deep merge modifiers options 28919 this.options.modifiers = {}; 28920 Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) { 28921 _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {}); 28922 }); 28923 28924 // Refactoring modifiers' list (Object => Array) 28925 this.modifiers = Object.keys(this.options.modifiers).map(function (name) { 28926 return _extends({ 28927 name: name 28928 }, _this.options.modifiers[name]); 28929 }) 28930 // sort the modifiers by order 28931 .sort(function (a, b) { 28932 return a.order - b.order; 28933 }); 28934 28935 // modifiers have the ability to execute arbitrary code when Popper.js get inited 28936 // such code is executed in the same order of its modifier 28937 // they could add new properties to their options configuration 28938 // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`! 28939 this.modifiers.forEach(function (modifierOptions) { 28940 if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) { 28941 modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state); 28942 } 28943 }); 28944 28945 // fire the first update to position the popper in the right place 28946 this.update(); 28947 var eventsEnabled = this.options.eventsEnabled; 28948 if (eventsEnabled) { 28949 // setup event listeners, they will take care of update the position in specific situations 28950 this.enableEventListeners(); 28951 } 28952 this.state.eventsEnabled = eventsEnabled; 28953 } 28954 28955 // We can't use class properties because they don't get listed in the 28956 // class prototype and break stuff like Sinon stubs 28957 28958 createClass(Popper, [{ 28959 key: 'update', 28960 value: function update$$1() { 28961 return update.call(this); 28962 } 28963 }, { 28964 key: 'destroy', 28965 value: function destroy$$1() { 28966 return destroy.call(this); 28967 } 28968 }, { 28969 key: 'enableEventListeners', 28970 value: function enableEventListeners$$1() { 28971 return enableEventListeners.call(this); 28972 } 28973 }, { 28974 key: 'disableEventListeners', 28975 value: function disableEventListeners$$1() { 28976 return disableEventListeners.call(this); 28977 } 28978 28979 /** 28980 * Schedules an update. It will run on the next UI update available. 28981 * @method scheduleUpdate 28982 * @memberof Popper 28983 */ 28984 28985 /** 28986 * Collection of utilities useful when writing custom modifiers. 28987 * Starting from version 1.7, this method is available only if you 28988 * include `popper-utils.js` before `popper.js`. 28989 * 28990 * **DEPRECATION**: This way to access PopperUtils is deprecated 28991 * and will be removed in v2! Use the PopperUtils module directly instead. 28992 * Due to the high instability of the methods contained in Utils, we can't 28993 * guarantee them to follow semver. Use them at your own risk! 28994 * @static 28995 * @private 28996 * @type {Object} 28997 * @deprecated since version 1.8 28998 * @member Utils 28999 * @memberof Popper 29000 */ 29001 }]); 29002 29003 return Popper; 29004}(); 29005 29006/** 29007 * The `referenceObject` is an object that provides an interface compatible with Popper.js 29008 * and lets you use it as replacement of a real DOM node.<br /> 29009 * You can use this method to position a popper relatively to a set of coordinates 29010 * in case you don't have a DOM node to use as reference. 29011 * 29012 * ``` 29013 * new Popper(referenceObject, popperNode); 29014 * ``` 29015 * 29016 * NB: This feature isn't supported in Internet Explorer 10. 29017 * @name referenceObject 29018 * @property {Function} data.getBoundingClientRect 29019 * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method. 29020 * @property {number} data.clientWidth 29021 * An ES6 getter that will return the width of the virtual reference element. 29022 * @property {number} data.clientHeight 29023 * An ES6 getter that will return the height of the virtual reference element. 29024 */ 29025 29026Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils; 29027Popper.placements = placements; 29028Popper.Defaults = Defaults; 29029/* harmony default export */ __webpack_exports__["default"] = (Popper); 29030/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) 29031 29032/***/ }), 29033
vendor: 5,311 bytes, lines 29034-29218
29034/***/ "./node_modules/process/browser.js": 29035/*!*****************************************!*\ 29036 !*** ./node_modules/process/browser.js ***! 29037 \*****************************************/ 29038/*! no static exports found */ 29039/***/ (function(module, exports) { 29040 29041// shim for using process in browser 29042var process = module.exports = {}; 29043 29044// cached from whatever global is present so that test runners that stub it 29045// don't break things. But we need to wrap it in a try catch in case it is 29046// wrapped in strict mode code which doesn't define any globals. It's inside a 29047// function because try/catches deoptimize in certain engines. 29048 29049var cachedSetTimeout; 29050var cachedClearTimeout; 29051function defaultSetTimout() { 29052 throw new Error('setTimeout has not been defined'); 29053} 29054function defaultClearTimeout() { 29055 throw new Error('clearTimeout has not been defined'); 29056} 29057(function () { 29058 try { 29059 if (typeof setTimeout === 'function') { 29060 cachedSetTimeout = setTimeout; 29061 } else { 29062 cachedSetTimeout = defaultSetTimout; 29063 } 29064 } catch (e) { 29065 cachedSetTimeout = defaultSetTimout; 29066 } 29067 try { 29068 if (typeof clearTimeout === 'function') { 29069 cachedClearTimeout = clearTimeout; 29070 } else { 29071 cachedClearTimeout = defaultClearTimeout; 29072 } 29073 } catch (e) { 29074 cachedClearTimeout = defaultClearTimeout; 29075 } 29076})(); 29077function runTimeout(fun) { 29078 if (cachedSetTimeout === setTimeout) { 29079 //normal enviroments in sane situations 29080 return setTimeout(fun, 0); 29081 } 29082 // if setTimeout wasn't available but was latter defined 29083 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { 29084 cachedSetTimeout = setTimeout; 29085 return setTimeout(fun, 0); 29086 } 29087 try { 29088 // when when somebody has screwed with setTimeout but no I.E. maddness 29089 return cachedSetTimeout(fun, 0); 29090 } catch (e) { 29091 try { 29092 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally 29093 return cachedSetTimeout.call(null, fun, 0); 29094 } catch (e) { 29095 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error 29096 return cachedSetTimeout.call(this, fun, 0); 29097 } 29098 } 29099} 29100function runClearTimeout(marker) { 29101 if (cachedClearTimeout === clearTimeout) { 29102 //normal enviroments in sane situations 29103 return clearTimeout(marker); 29104 } 29105 // if clearTimeout wasn't available but was latter defined 29106 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { 29107 cachedClearTimeout = clearTimeout; 29108 return clearTimeout(marker); 29109 } 29110 try { 29111 // when when somebody has screwed with setTimeout but no I.E. maddness 29112 return cachedClearTimeout(marker); 29113 } catch (e) { 29114 try { 29115 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally 29116 return cachedClearTimeout.call(null, marker); 29117 } catch (e) { 29118 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. 29119 // Some versions of I.E. have different rules for clearTimeout vs setTimeout 29120 return cachedClearTimeout.call(this, marker); 29121 } 29122 } 29123} 29124var queue = []; 29125var draining = false; 29126var currentQueue; 29127var queueIndex = -1; 29128function cleanUpNextTick() { 29129 if (!draining || !currentQueue) { 29130 return; 29131 } 29132 draining = false; 29133 if (currentQueue.length) { 29134 queue = currentQueue.concat(queue); 29135 } else { 29136 queueIndex = -1; 29137 } 29138 if (queue.length) { 29139 drainQueue(); 29140 } 29141} 29142function drainQueue() { 29143 if (draining) { 29144 return; 29145 } 29146 var timeout = runTimeout(cleanUpNextTick); 29147 draining = true; 29148 var len = queue.length; 29149 while (len) { 29150 currentQueue = queue; 29151 queue = []; 29152 while (++queueIndex < len) { 29153 if (currentQueue) { 29154 currentQueue[queueIndex].run(); 29155 } 29156 } 29157 queueIndex = -1; 29158 len = queue.length; 29159 } 29160 currentQueue = null; 29161 draining = false; 29162 runClearTimeout(timeout); 29163} 29164process.nextTick = function (fun) { 29165 var args = new Array(arguments.length - 1); 29166 if (arguments.length > 1) { 29167 for (var i = 1; i < arguments.length; i++) { 29168 args[i - 1] = arguments[i]; 29169 } 29170 } 29171 queue.push(new Item(fun, args)); 29172 if (queue.length === 1 && !draining) { 29173 runTimeout(drainQueue); 29174 } 29175}; 29176 29177// v8 likes predictible objects 29178function Item(fun, array) { 29179 this.fun = fun; 29180 this.array = array; 29181} 29182Item.prototype.run = function () { 29183 this.fun.apply(null, this.array); 29184}; 29185process.title = 'browser'; 29186process.browser = true; 29187process.env = {}; 29188process.argv = []; 29189process.version = ''; // empty string to avoid regexp issues 29190process.versions = {}; 29191function noop() {} 29192process.on = noop; 29193process.addListener = noop; 29194process.once = noop; 29195process.off = noop; 29196process.removeListener = noop; 29197process.removeAllListeners = noop; 29198process.emit = noop; 29199process.prependListener = noop; 29200process.prependOnceListener = noop; 29201process.listeners = function (name) { 29202 return []; 29203}; 29204process.binding = function (name) { 29205 throw new Error('process.binding is not supported'); 29206}; 29207process.cwd = function () { 29208 return '/'; 29209}; 29210process.chdir = function (dir) { 29211 throw new Error('process.chdir is not supported'); 29212}; 29213process.umask = function () { 29214 return 0; 29215}; 29216 29217/***/ }), 29218
vendor: 6,537 bytes, lines 29219-29399
29219/***/ "./node_modules/setimmediate/setImmediate.js": 29220/*!***************************************************!*\ 29221 !*** ./node_modules/setimmediate/setImmediate.js ***! 29222 \***************************************************/ 29223/*! no static exports found */ 29224/***/ (function(module, exports, __webpack_require__) { 29225 29226/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) { 29227 "use strict"; 29228 29229 if (global.setImmediate) { 29230 return; 29231 } 29232 var nextHandle = 1; // Spec says greater than zero 29233 var tasksByHandle = {}; 29234 var currentlyRunningATask = false; 29235 var doc = global.document; 29236 var registerImmediate; 29237 function setImmediate(callback) { 29238 // Callback can either be a function or a string 29239 if (typeof callback !== "function") { 29240 callback = new Function("" + callback); 29241 } 29242 // Copy function arguments 29243 var args = new Array(arguments.length - 1); 29244 for (var i = 0; i < args.length; i++) { 29245 args[i] = arguments[i + 1]; 29246 } 29247 // Store and register the task 29248 var task = { 29249 callback: callback, 29250 args: args 29251 }; 29252 tasksByHandle[nextHandle] = task; 29253 registerImmediate(nextHandle); 29254 return nextHandle++; 29255 } 29256 function clearImmediate(handle) { 29257 delete tasksByHandle[handle]; 29258 } 29259 function run(task) { 29260 var callback = task.callback; 29261 var args = task.args; 29262 switch (args.length) { 29263 case 0: 29264 callback(); 29265 break; 29266 case 1: 29267 callback(args[0]); 29268 break; 29269 case 2: 29270 callback(args[0], args[1]); 29271 break; 29272 case 3: 29273 callback(args[0], args[1], args[2]); 29274 break; 29275 default: 29276 callback.apply(undefined, args); 29277 break; 29278 } 29279 } 29280 function runIfPresent(handle) { 29281 // From the spec: "Wait until any invocations of this algorithm started before this one have completed." 29282 // So if we're currently running a task, we'll need to delay this invocation. 29283 if (currentlyRunningATask) { 29284 // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a 29285 // "too much recursion" error. 29286 setTimeout(runIfPresent, 0, handle); 29287 } else { 29288 var task = tasksByHandle[handle]; 29289 if (task) { 29290 currentlyRunningATask = true; 29291 try { 29292 run(task); 29293 } finally { 29294 clearImmediate(handle); 29295 currentlyRunningATask = false; 29296 } 29297 } 29298 } 29299 } 29300 function installNextTickImplementation() { 29301 registerImmediate = function registerImmediate(handle) { 29302 process.nextTick(function () { 29303 runIfPresent(handle); 29304 }); 29305 }; 29306 } 29307 function canUsePostMessage() { 29308 // The test against `importScripts` prevents this implementation from being installed inside a web worker, 29309 // where `global.postMessage` means something completely different and can't be used for this purpose. 29310 if (global.postMessage && !global.importScripts) { 29311 var postMessageIsAsynchronous = true; 29312 var oldOnMessage = global.onmessage; 29313 global.onmessage = function () { 29314 postMessageIsAsynchronous = false; 29315 }; 29316 global.postMessage("", "*"); 29317 global.onmessage = oldOnMessage; 29318 return postMessageIsAsynchronous; 29319 } 29320 } 29321 function installPostMessageImplementation() { 29322 // Installs an event handler on `global` for the `message` event: see 29323 // * https://developer.mozilla.org/en/DOM/window.postMessage 29324 // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages 29325 29326 var messagePrefix = "setImmediate$" + Math.random() + "$"; 29327 var onGlobalMessage = function onGlobalMessage(event) { 29328 if (event.source === global && typeof event.data === "string" && event.data.indexOf(messagePrefix) === 0) { 29329 runIfPresent(+event.data.slice(messagePrefix.length)); 29330 } 29331 }; 29332 if (global.addEventListener) { 29333 global.addEventListener("message", onGlobalMessage, false); 29334 } else { 29335 global.attachEvent("onmessage", onGlobalMessage); 29336 } 29337 registerImmediate = function registerImmediate(handle) { 29338 global.postMessage(messagePrefix + handle, "*"); 29339 }; 29340 } 29341 function installMessageChannelImplementation() { 29342 var channel = new MessageChannel(); 29343 channel.port1.onmessage = function (event) { 29344 var handle = event.data; 29345 runIfPresent(handle); 29346 }; 29347 registerImmediate = function registerImmediate(handle) { 29348 channel.port2.postMessage(handle); 29349 }; 29350 } 29351 function installReadyStateChangeImplementation() { 29352 var html = doc.documentElement; 29353 registerImmediate = function registerImmediate(handle) { 29354 // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted 29355 // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called. 29356 var script = doc.createElement("script"); 29357 script.onreadystatechange = function () { 29358 runIfPresent(handle); 29359 script.onreadystatechange = null; 29360 html.removeChild(script); 29361 script = null; 29362 }; 29363 html.appendChild(script); 29364 }; 29365 } 29366 function installSetTimeoutImplementation() { 29367 registerImmediate = function registerImmediate(handle) { 29368 setTimeout(runIfPresent, 0, handle); 29369 }; 29370 } 29371 29372 // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live. 29373 var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global); 29374 attachTo = attachTo && attachTo.setTimeout ? attachTo : global; 29375 29376 // Don't get fooled by e.g. browserify environments. 29377 if ({}.toString.call(global.process) === "[object process]") { 29378 // For Node.js before 0.9 29379 installNextTickImplementation(); 29380 } else if (canUsePostMessage()) { 29381 // For non-IE10 modern browsers 29382 installPostMessageImplementation(); 29383 } else if (global.MessageChannel) { 29384 // For web workers, where supported 29385 installMessageChannelImplementation(); 29386 } else if (doc && "onreadystatechange" in doc.createElement("script")) { 29387 // For IE 6â8 29388 installReadyStateChangeImplementation(); 29389 } else { 29390 // For older browsers 29391 installSetTimeoutImplementation(); 29392 } 29393 attachTo.setImmediate = setImmediate; 29394 attachTo.clearImmediate = clearImmediate; 29395})(typeof self === "undefined" ? typeof global === "undefined" ? this : global : self); 29396/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"), __webpack_require__(/*! ./../process/browser.js */ "./node_modules/process/browser.js"))) 29397 29398/***/ }), 29399
vendor: 53,832 bytes, lines 29400-30185
29400/***/ "./node_modules/slick-carousel/slick/slick.min.js": 29401/*!********************************************************!*\ 29402 !*** ./node_modules/slick-carousel/slick/slick.min.js ***! 29403 \********************************************************/ 29404/*! no static exports found */ 29405/***/ (function(module, exports, __webpack_require__) { 29406 29407var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 29408!function (i) { 29409 "use strict"; 29410 29411 true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ "jquery")], __WEBPACK_AMD_DEFINE_FACTORY__ = (i), 29412 __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? 29413 (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), 29414 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined; 29415}(function (i) { 29416 "use strict"; 29417 29418 var e = window.Slick || {}; 29419 (e = function () { 29420 var e = 0; 29421 return function (t, o) { 29422 var s, 29423 n = this; 29424 n.defaults = { 29425 accessibility: !0, 29426 adaptiveHeight: !1, 29427 appendArrows: i(t), 29428 appendDots: i(t), 29429 arrows: !0, 29430 asNavFor: null, 29431 prevArrow: '<button class="slick-prev" aria-label="Previous" type="button">Previous</button>', 29432 nextArrow: '<button class="slick-next" aria-label="Next" type="button">Next</button>', 29433 autoplay: !1, 29434 autoplaySpeed: 3e3, 29435 centerMode: !1, 29436 centerPadding: "50px", 29437 cssEase: "ease", 29438 customPaging: function customPaging(e, t) { 29439 return i('<button type="button" />').text(t + 1); 29440 }, 29441 dots: !1, 29442 dotsClass: "slick-dots", 29443 draggable: !0, 29444 easing: "linear", 29445 edgeFriction: .35, 29446 fade: !1, 29447 focusOnSelect: !1, 29448 focusOnChange: !1, 29449 infinite: !0, 29450 initialSlide: 0, 29451 lazyLoad: "ondemand", 29452 mobileFirst: !1, 29453 pauseOnHover: !0, 29454 pauseOnFocus: !0, 29455 pauseOnDotsHover: !1, 29456 respondTo: "window", 29457 responsive: null, 29458 rows: 1, 29459 rtl: !1, 29460 slide: "", 29461 slidesPerRow: 1, 29462 slidesToShow: 1, 29463 slidesToScroll: 1, 29464 speed: 500, 29465 swipe: !0, 29466 swipeToSlide: !1, 29467 touchMove: !0, 29468 touchThreshold: 5, 29469 useCSS: !0, 29470 useTransform: !0, 29471 variableWidth: !1, 29472 vertical: !1, 29473 verticalSwiping: !1, 29474 waitForAnimate: !0, 29475 zIndex: 1e3 29476 }, n.initials = { 29477 animating: !1, 29478 dragging: !1, 29479 autoPlayTimer: null, 29480 currentDirection: 0, 29481 currentLeft: null, 29482 currentSlide: 0, 29483 direction: 1, 29484 $dots: null, 29485 listWidth: null, 29486 listHeight: null, 29487 loadIndex: 0, 29488 $nextArrow: null, 29489 $prevArrow: null, 29490 scrolling: !1, 29491 slideCount: null, 29492 slideWidth: null, 29493 $slideTrack: null, 29494 $slides: null, 29495 sliding: !1, 29496 slideOffset: 0, 29497 swipeLeft: null, 29498 swiping: !1, 29499 $list: null, 29500 touchObject: {}, 29501 transformsEnabled: !1, 29502 unslicked: !1 29503 }, i.extend(n, n.initials), n.activeBreakpoint = null, n.animType = null, n.animProp = null, n.breakpoints = [], n.breakpointSettings = [], n.cssTransitions = !1, n.focussed = !1, n.interrupted = !1, n.hidden = "hidden", n.paused = !0, n.positionProp = null, n.respondTo = null, n.rowCount = 1, n.shouldClick = !0, n.$slider = i(t), n.$slidesCache = null, n.transformType = null, n.transitionType = null, n.visibilityChange = "visibilitychange", n.windowWidth = 0, n.windowTimer = null, s = i(t).data("slick") || {}, n.options = i.extend({}, n.defaults, o, s), n.currentSlide = n.options.initialSlide, n.originalSettings = n.options, void 0 !== document.mozHidden ? (n.hidden = "mozHidden", n.visibilityChange = "mozvisibilitychange") : void 0 !== document.webkitHidden && (n.hidden = "webkitHidden", n.visibilityChange = "webkitvisibilitychange"), n.autoPlay = i.proxy(n.autoPlay, n), n.autoPlayClear = i.proxy(n.autoPlayClear, n), n.autoPlayIterator = i.proxy(n.autoPlayIterator, n), n.changeSlide = i.proxy(n.changeSlide, n), n.clickHandler = i.proxy(n.clickHandler, n), n.selectHandler = i.proxy(n.selectHandler, n), n.setPosition = i.proxy(n.setPosition, n), n.swipeHandler = i.proxy(n.swipeHandler, n), n.dragHandler = i.proxy(n.dragHandler, n), n.keyHandler = i.proxy(n.keyHandler, n), n.instanceUid = e++, n.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/, n.registerBreakpoints(), n.init(!0); 29504 }; 29505 }()).prototype.activateADA = function () { 29506 this.$slideTrack.find(".slick-active").attr({ 29507 "aria-hidden": "false" 29508 }).find("a, input, button, select").attr({ 29509 tabindex: "0" 29510 }); 29511 }, e.prototype.addSlide = e.prototype.slickAdd = function (e, t, o) { 29512 var s = this; 29513 if ("boolean" == typeof t) o = t, t = null;else if (t < 0 || t >= s.slideCount) return !1; 29514 s.unload(), "number" == typeof t ? 0 === t && 0 === s.$slides.length ? i(e).appendTo(s.$slideTrack) : o ? i(e).insertBefore(s.$slides.eq(t)) : i(e).insertAfter(s.$slides.eq(t)) : !0 === o ? i(e).prependTo(s.$slideTrack) : i(e).appendTo(s.$slideTrack), s.$slides = s.$slideTrack.children(this.options.slide), s.$slideTrack.children(this.options.slide).detach(), s.$slideTrack.append(s.$slides), s.$slides.each(function (e, t) { 29515 i(t).attr("data-slick-index", e); 29516 }), s.$slidesCache = s.$slides, s.reinit(); 29517 }, e.prototype.animateHeight = function () { 29518 var i = this; 29519 if (1 === i.options.slidesToShow && !0 === i.options.adaptiveHeight && !1 === i.options.vertical) { 29520 var e = i.$slides.eq(i.currentSlide).outerHeight(!0); 29521 i.$list.animate({ 29522 height: e 29523 }, i.options.speed); 29524 } 29525 }, e.prototype.animateSlide = function (e, t) { 29526 var o = {}, 29527 s = this; 29528 s.animateHeight(), !0 === s.options.rtl && !1 === s.options.vertical && (e = -e), !1 === s.transformsEnabled ? !1 === s.options.vertical ? s.$slideTrack.animate({ 29529 left: e 29530 }, s.options.speed, s.options.easing, t) : s.$slideTrack.animate({ 29531 top: e 29532 }, s.options.speed, s.options.easing, t) : !1 === s.cssTransitions ? (!0 === s.options.rtl && (s.currentLeft = -s.currentLeft), i({ 29533 animStart: s.currentLeft 29534 }).animate({ 29535 animStart: e 29536 }, { 29537 duration: s.options.speed, 29538 easing: s.options.easing, 29539 step: function step(i) { 29540 i = Math.ceil(i), !1 === s.options.vertical ? (o[s.animType] = "translate(" + i + "px, 0px)", s.$slideTrack.css(o)) : (o[s.animType] = "translate(0px," + i + "px)", s.$slideTrack.css(o)); 29541 }, 29542 complete: function complete() { 29543 t && t.call(); 29544 } 29545 })) : (s.applyTransition(), e = Math.ceil(e), !1 === s.options.vertical ? o[s.animType] = "translate3d(" + e + "px, 0px, 0px)" : o[s.animType] = "translate3d(0px," + e + "px, 0px)", s.$slideTrack.css(o), t && setTimeout(function () { 29546 s.disableTransition(), t.call(); 29547 }, s.options.speed)); 29548 }, e.prototype.getNavTarget = function () { 29549 var e = this, 29550 t = e.options.asNavFor; 29551 return t && null !== t && (t = i(t).not(e.$slider)), t; 29552 }, e.prototype.asNavFor = function (e) { 29553 var t = this.getNavTarget(); 29554 null !== t && "object" == _typeof(t) && t.each(function () { 29555 var t = i(this).slick("getSlick"); 29556 t.unslicked || t.slideHandler(e, !0); 29557 }); 29558 }, e.prototype.applyTransition = function (i) { 29559 var e = this, 29560 t = {}; 29561 !1 === e.options.fade ? t[e.transitionType] = e.transformType + " " + e.options.speed + "ms " + e.options.cssEase : t[e.transitionType] = "opacity " + e.options.speed + "ms " + e.options.cssEase, !1 === e.options.fade ? e.$slideTrack.css(t) : e.$slides.eq(i).css(t); 29562 }, e.prototype.autoPlay = function () { 29563 var i = this; 29564 i.autoPlayClear(), i.slideCount > i.options.slidesToShow && (i.autoPlayTimer = setInterval(i.autoPlayIterator, i.options.autoplaySpeed)); 29565 }, e.prototype.autoPlayClear = function () { 29566 var i = this; 29567 i.autoPlayTimer && clearInterval(i.autoPlayTimer); 29568 }, e.prototype.autoPlayIterator = function () { 29569 var i = this, 29570 e = i.currentSlide + i.options.slidesToScroll; 29571 i.paused || i.interrupted || i.focussed || (!1 === i.options.infinite && (1 === i.direction && i.currentSlide + 1 === i.slideCount - 1 ? i.direction = 0 : 0 === i.direction && (e = i.currentSlide - i.options.slidesToScroll, i.currentSlide - 1 == 0 && (i.direction = 1))), i.slideHandler(e)); 29572 }, e.prototype.buildArrows = function () { 29573 var e = this; 29574 !0 === e.options.arrows && (e.$prevArrow = i(e.options.prevArrow).addClass("slick-arrow"), e.$nextArrow = i(e.options.nextArrow).addClass("slick-arrow"), e.slideCount > e.options.slidesToShow ? (e.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"), e.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"), e.htmlExpr.test(e.options.prevArrow) && e.$prevArrow.prependTo(e.options.appendArrows), e.htmlExpr.test(e.options.nextArrow) && e.$nextArrow.appendTo(e.options.appendArrows), !0 !== e.options.infinite && e.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true")) : e.$prevArrow.add(e.$nextArrow).addClass("slick-hidden").attr({ 29575 "aria-disabled": "true", 29576 tabindex: "-1" 29577 })); 29578 }, e.prototype.buildDots = function () { 29579 var e, 29580 t, 29581 o = this; 29582 if (!0 === o.options.dots) { 29583 for (o.$slider.addClass("slick-dotted"), t = i("<ul />").addClass(o.options.dotsClass), e = 0; e <= o.getDotCount(); e += 1) { 29584 t.append(i("<li />").append(o.options.customPaging.call(this, o, e))); 29585 } 29586 o.$dots = t.appendTo(o.options.appendDots), o.$dots.find("li").first().addClass("slick-active"); 29587 } 29588 }, e.prototype.buildOut = function () { 29589 var e = this; 29590 e.$slides = e.$slider.children(e.options.slide + ":not(.slick-cloned)").addClass("slick-slide"), e.slideCount = e.$slides.length, e.$slides.each(function (e, t) { 29591 i(t).attr("data-slick-index", e).data("originalStyling", i(t).attr("style") || ""); 29592 }), e.$slider.addClass("slick-slider"), e.$slideTrack = 0 === e.slideCount ? i('<div class="slick-track"/>').appendTo(e.$slider) : e.$slides.wrapAll('<div class="slick-track"/>').parent(), e.$list = e.$slideTrack.wrap('<div class="slick-list"/>').parent(), e.$slideTrack.css("opacity", 0), !0 !== e.options.centerMode && !0 !== e.options.swipeToSlide || (e.options.slidesToScroll = 1), i("img[data-lazy]", e.$slider).not("[src]").addClass("slick-loading"), e.setupInfinite(), e.buildArrows(), e.buildDots(), e.updateDots(), e.setSlideClasses("number" == typeof e.currentSlide ? e.currentSlide : 0), !0 === e.options.draggable && e.$list.addClass("draggable"); 29593 }, e.prototype.buildRows = function () { 29594 var i, 29595 e, 29596 t, 29597 o, 29598 s, 29599 n, 29600 r, 29601 l = this; 29602 if (o = document.createDocumentFragment(), n = l.$slider.children(), l.options.rows > 1) { 29603 for (r = l.options.slidesPerRow * l.options.rows, s = Math.ceil(n.length / r), i = 0; i < s; i++) { 29604 var d = document.createElement("div"); 29605 for (e = 0; e < l.options.rows; e++) { 29606 var a = document.createElement("div"); 29607 for (t = 0; t < l.options.slidesPerRow; t++) { 29608 var c = i * r + (e * l.options.slidesPerRow + t); 29609 n.get(c) && a.appendChild(n.get(c)); 29610 } 29611 d.appendChild(a); 29612 } 29613 o.appendChild(d); 29614 } 29615 l.$slider.empty().append(o), l.$slider.children().children().children().css({ 29616 width: 100 / l.options.slidesPerRow + "%", 29617 display: "inline-block" 29618 }); 29619 } 29620 }, e.prototype.checkResponsive = function (e, t) { 29621 var o, 29622 s, 29623 n, 29624 r = this, 29625 l = !1, 29626 d = r.$slider.width(), 29627 a = window.innerWidth || i(window).width(); 29628 if ("window" === r.respondTo ? n = a : "slider" === r.respondTo ? n = d : "min" === r.respondTo && (n = Math.min(a, d)), r.options.responsive && r.options.responsive.length && null !== r.options.responsive) { 29629 s = null; 29630 for (o in r.breakpoints) { 29631 r.breakpoints.hasOwnProperty(o) && (!1 === r.originalSettings.mobileFirst ? n < r.breakpoints[o] && (s = r.breakpoints[o]) : n > r.breakpoints[o] && (s = r.breakpoints[o])); 29632 } 29633 null !== s ? null !== r.activeBreakpoint ? (s !== r.activeBreakpoint || t) && (r.activeBreakpoint = s, "unslick" === r.breakpointSettings[s] ? r.unslick(s) : (r.options = i.extend({}, r.originalSettings, r.breakpointSettings[s]), !0 === e && (r.currentSlide = r.options.initialSlide), r.refresh(e)), l = s) : (r.activeBreakpoint = s, "unslick" === r.breakpointSettings[s] ? r.unslick(s) : (r.options = i.extend({}, r.originalSettings, r.breakpointSettings[s]), !0 === e && (r.currentSlide = r.options.initialSlide), r.refresh(e)), l = s) : null !== r.activeBreakpoint && (r.activeBreakpoint = null, r.options = r.originalSettings, !0 === e && (r.currentSlide = r.options.initialSlide), r.refresh(e), l = s), e || !1 === l || r.$slider.trigger("breakpoint", [r, l]); 29634 } 29635 }, e.prototype.changeSlide = function (e, t) { 29636 var o, 29637 s, 29638 n, 29639 r = this, 29640 l = i(e.currentTarget); 29641 switch (l.is("a") && e.preventDefault(), l.is("li") || (l = l.closest("li")), n = r.slideCount % r.options.slidesToScroll != 0, o = n ? 0 : (r.slideCount - r.currentSlide) % r.options.slidesToScroll, e.data.message) { 29642 case "previous": 29643 s = 0 === o ? r.options.slidesToScroll : r.options.slidesToShow - o, r.slideCount > r.options.slidesToShow && r.slideHandler(r.currentSlide - s, !1, t); 29644 break; 29645 case "next": 29646 s = 0 === o ? r.options.slidesToScroll : o, r.slideCount > r.options.slidesToShow && r.slideHandler(r.currentSlide + s, !1, t); 29647 break; 29648 case "index": 29649 var d = 0 === e.data.index ? 0 : e.data.index || l.index() * r.options.slidesToScroll; 29650 r.slideHandler(r.checkNavigable(d), !1, t), l.children().trigger("focus"); 29651 break; 29652 default: 29653 return; 29654 } 29655 }, e.prototype.checkNavigable = function (i) { 29656 var e, t; 29657 if (e = this.getNavigableIndexes(), t = 0, i > e[e.length - 1]) i = e[e.length - 1];else for (var o in e) { 29658 if (i < e[o]) { 29659 i = t; 29660 break; 29661 } 29662 t = e[o]; 29663 } 29664 return i; 29665 }, e.prototype.cleanUpEvents = function () { 29666 var e = this; 29667 e.options.dots && null !== e.$dots && (i("li", e.$dots).off("click.slick", e.changeSlide).off("mouseenter.slick", i.proxy(e.interrupt, e, !0)).off("mouseleave.slick", i.proxy(e.interrupt, e, !1)), !0 === e.options.accessibility && e.$dots.off("keydown.slick", e.keyHandler)), e.$slider.off("focus.slick blur.slick"), !0 === e.options.arrows && e.slideCount > e.options.slidesToShow && (e.$prevArrow && e.$prevArrow.off("click.slick", e.changeSlide), e.$nextArrow && e.$nextArrow.off("click.slick", e.changeSlide), !0 === e.options.accessibility && (e.$prevArrow && e.$prevArrow.off("keydown.slick", e.keyHandler), e.$nextArrow && e.$nextArrow.off("keydown.slick", e.keyHandler))), e.$list.off("touchstart.slick mousedown.slick", e.swipeHandler), e.$list.off("touchmove.slick mousemove.slick", e.swipeHandler), e.$list.off("touchend.slick mouseup.slick", e.swipeHandler), e.$list.off("touchcancel.slick mouseleave.slick", e.swipeHandler), e.$list.off("click.slick", e.clickHandler), i(document).off(e.visibilityChange, e.visibility), e.cleanUpSlideEvents(), !0 === e.options.accessibility && e.$list.off("keydown.slick", e.keyHandler), !0 === e.options.focusOnSelect && i(e.$slideTrack).children().off("click.slick", e.selectHandler), i(window).off("orientationchange.slick.slick-" + e.instanceUid, e.orientationChange), i(window).off("resize.slick.slick-" + e.instanceUid, e.resize), i("[draggable!=true]", e.$slideTrack).off("dragstart", e.preventDefault), i(window).off("load.slick.slick-" + e.instanceUid, e.setPosition); 29668 }, e.prototype.cleanUpSlideEvents = function () { 29669 var e = this; 29670 e.$list.off("mouseenter.slick", i.proxy(e.interrupt, e, !0)), e.$list.off("mouseleave.slick", i.proxy(e.interrupt, e, !1)); 29671 }, e.prototype.cleanUpRows = function () { 29672 var i, 29673 e = this; 29674 e.options.rows > 1 && ((i = e.$slides.children().children()).removeAttr("style"), e.$slider.empty().append(i)); 29675 }, e.prototype.clickHandler = function (i) { 29676 !1 === this.shouldClick && (i.stopImmediatePropagation(), i.stopPropagation(), i.preventDefault()); 29677 }, e.prototype.destroy = function (e) { 29678 var t = this; 29679 t.autoPlayClear(), t.touchObject = {}, t.cleanUpEvents(), i(".slick-cloned", t.$slider).detach(), t.$dots && t.$dots.remove(), t.$prevArrow && t.$prevArrow.length && (t.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""), t.htmlExpr.test(t.options.prevArrow) && t.$prevArrow.remove()), t.$nextArrow && t.$nextArrow.length && (t.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""), t.htmlExpr.test(t.options.nextArrow) && t.$nextArrow.remove()), t.$slides && (t.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function () { 29680 i(this).attr("style", i(this).data("originalStyling")); 29681 }), t.$slideTrack.children(this.options.slide).detach(), t.$slideTrack.detach(), t.$list.detach(), t.$slider.append(t.$slides)), t.cleanUpRows(), t.$slider.removeClass("slick-slider"), t.$slider.removeClass("slick-initialized"), t.$slider.removeClass("slick-dotted"), t.unslicked = !0, e || t.$slider.trigger("destroy", [t]); 29682 }, e.prototype.disableTransition = function (i) { 29683 var e = this, 29684 t = {}; 29685 t[e.transitionType] = "", !1 === e.options.fade ? e.$slideTrack.css(t) : e.$slides.eq(i).css(t); 29686 }, e.prototype.fadeSlide = function (i, e) { 29687 var t = this; 29688 !1 === t.cssTransitions ? (t.$slides.eq(i).css({ 29689 zIndex: t.options.zIndex 29690 }), t.$slides.eq(i).animate({ 29691 opacity: 1 29692 }, t.options.speed, t.options.easing, e)) : (t.applyTransition(i), t.$slides.eq(i).css({ 29693 opacity: 1, 29694 zIndex: t.options.zIndex 29695 }), e && setTimeout(function () { 29696 t.disableTransition(i), e.call(); 29697 }, t.options.speed)); 29698 }, e.prototype.fadeSlideOut = function (i) { 29699 var e = this; 29700 !1 === e.cssTransitions ? e.$slides.eq(i).animate({ 29701 opacity: 0, 29702 zIndex: e.options.zIndex - 2 29703 }, e.options.speed, e.options.easing) : (e.applyTransition(i), e.$slides.eq(i).css({ 29704 opacity: 0, 29705 zIndex: e.options.zIndex - 2 29706 })); 29707 }, e.prototype.filterSlides = e.prototype.slickFilter = function (i) { 29708 var e = this; 29709 null !== i && (e.$slidesCache = e.$slides, e.unload(), e.$slideTrack.children(this.options.slide).detach(), e.$slidesCache.filter(i).appendTo(e.$slideTrack), e.reinit()); 29710 }, e.prototype.focusHandler = function () { 29711 var e = this; 29712 e.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick", "*", function (t) { 29713 t.stopImmediatePropagation(); 29714 var o = i(this); 29715 setTimeout(function () { 29716 e.options.pauseOnFocus && (e.focussed = o.is(":focus"), e.autoPlay()); 29717 }, 0); 29718 }); 29719 }, e.prototype.getCurrent = e.prototype.slickCurrentSlide = function () { 29720 return this.currentSlide; 29721 }, e.prototype.getDotCount = function () { 29722 var i = this, 29723 e = 0, 29724 t = 0, 29725 o = 0; 29726 if (!0 === i.options.infinite) { 29727 if (i.slideCount <= i.options.slidesToShow) ++o;else for (; e < i.slideCount;) { 29728 ++o, e = t + i.options.slidesToScroll, t += i.options.slidesToScroll <= i.options.slidesToShow ? i.options.slidesToScroll : i.options.slidesToShow; 29729 } 29730 } else if (!0 === i.options.centerMode) o = i.slideCount;else if (i.options.asNavFor) for (; e < i.slideCount;) { 29731 ++o, e = t + i.options.slidesToScroll, t += i.options.slidesToScroll <= i.options.slidesToShow ? i.options.slidesToScroll : i.options.slidesToShow; 29732 } else o = 1 + Math.ceil((i.slideCount - i.options.slidesToShow) / i.options.slidesToScroll); 29733 return o - 1; 29734 }, e.prototype.getLeft = function (i) { 29735 var e, 29736 t, 29737 o, 29738 s, 29739 n = this, 29740 r = 0; 29741 return n.slideOffset = 0, t = n.$slides.first().outerHeight(!0), !0 === n.options.infinite ? (n.slideCount > n.options.slidesToShow && (n.slideOffset = n.slideWidth * n.options.slidesToShow * -1, s = -1, !0 === n.options.vertical && !0 === n.options.centerMode && (2 === n.options.slidesToShow ? s = -1.5 : 1 === n.options.slidesToShow && (s = -2)), r = t * n.options.slidesToShow * s), n.slideCount % n.options.slidesToScroll != 0 && i + n.options.slidesToScroll > n.slideCount && n.slideCount > n.options.slidesToShow && (i > n.slideCount ? (n.slideOffset = (n.options.slidesToShow - (i - n.slideCount)) * n.slideWidth * -1, r = (n.options.slidesToShow - (i - n.slideCount)) * t * -1) : (n.slideOffset = n.slideCount % n.options.slidesToScroll * n.slideWidth * -1, r = n.slideCount % n.options.slidesToScroll * t * -1))) : i + n.options.slidesToShow > n.slideCount && (n.slideOffset = (i + n.options.slidesToShow - n.slideCount) * n.slideWidth, r = (i + n.options.slidesToShow - n.slideCount) * t), n.slideCount <= n.options.slidesToShow && (n.slideOffset = 0, r = 0), !0 === n.options.centerMode && n.slideCount <= n.options.slidesToShow ? n.slideOffset = n.slideWidth * Math.floor(n.options.slidesToShow) / 2 - n.slideWidth * n.slideCount / 2 : !0 === n.options.centerMode && !0 === n.options.infinite ? n.slideOffset += n.slideWidth * Math.floor(n.options.slidesToShow / 2) - n.slideWidth : !0 === n.options.centerMode && (n.slideOffset = 0, n.slideOffset += n.slideWidth * Math.floor(n.options.slidesToShow / 2)), e = !1 === n.options.vertical ? i * n.slideWidth * -1 + n.slideOffset : i * t * -1 + r, !0 === n.options.variableWidth && (o = n.slideCount <= n.options.slidesToShow || !1 === n.options.infinite ? n.$slideTrack.children(".slick-slide").eq(i) : n.$slideTrack.children(".slick-slide").eq(i + n.options.slidesToShow), e = !0 === n.options.rtl ? o[0] ? -1 * (n.$slideTrack.width() - o[0].offsetLeft - o.width()) : 0 : o[0] ? -1 * o[0].offsetLeft : 0, !0 === n.options.centerMode && (o = n.slideCount <= n.options.slidesToShow || !1 === n.options.infinite ? n.$slideTrack.children(".slick-slide").eq(i) : n.$slideTrack.children(".slick-slide").eq(i + n.options.slidesToShow + 1), e = !0 === n.options.rtl ? o[0] ? -1 * (n.$slideTrack.width() - o[0].offsetLeft - o.width()) : 0 : o[0] ? -1 * o[0].offsetLeft : 0, e += (n.$list.width() - o.outerWidth()) / 2)), e; 29742 }, e.prototype.getOption = e.prototype.slickGetOption = function (i) { 29743 return this.options[i]; 29744 }, e.prototype.getNavigableIndexes = function () { 29745 var i, 29746 e = this, 29747 t = 0, 29748 o = 0, 29749 s = []; 29750 for (!1 === e.options.infinite ? i = e.slideCount : (t = -1 * e.options.slidesToScroll, o = -1 * e.options.slidesToScroll, i = 2 * e.slideCount); t < i;) { 29751 s.push(t), t = o + e.options.slidesToScroll, o += e.options.slidesToScroll <= e.options.slidesToShow ? e.options.slidesToScroll : e.options.slidesToShow; 29752 } 29753 return s; 29754 }, e.prototype.getSlick = function () { 29755 return this; 29756 }, e.prototype.getSlideCount = function () { 29757 var e, 29758 t, 29759 o = this; 29760 return t = !0 === o.options.centerMode ? o.slideWidth * Math.floor(o.options.slidesToShow / 2) : 0, !0 === o.options.swipeToSlide ? (o.$slideTrack.find(".slick-slide").each(function (s, n) { 29761 if (n.offsetLeft - t + i(n).outerWidth() / 2 > -1 * o.swipeLeft) return e = n, !1; 29762 }), Math.abs(i(e).attr("data-slick-index") - o.currentSlide) || 1) : o.options.slidesToScroll; 29763 }, e.prototype.goTo = e.prototype.slickGoTo = function (i, e) { 29764 this.changeSlide({ 29765 data: { 29766 message: "index", 29767 index: parseInt(i) 29768 } 29769 }, e); 29770 }, e.prototype.init = function (e) { 29771 var t = this; 29772 i(t.$slider).hasClass("slick-initialized") || (i(t.$slider).addClass("slick-initialized"), t.buildRows(), t.buildOut(), t.setProps(), t.startLoad(), t.loadSlider(), t.initializeEvents(), t.updateArrows(), t.updateDots(), t.checkResponsive(!0), t.focusHandler()), e && t.$slider.trigger("init", [t]), !0 === t.options.accessibility && t.initADA(), t.options.autoplay && (t.paused = !1, t.autoPlay()); 29773 }, e.prototype.initADA = function () { 29774 var e = this, 29775 t = Math.ceil(e.slideCount / e.options.slidesToShow), 29776 o = e.getNavigableIndexes().filter(function (i) { 29777 return i >= 0 && i < e.slideCount; 29778 }); 29779 e.$slides.add(e.$slideTrack.find(".slick-cloned")).attr({ 29780 "aria-hidden": "true", 29781 tabindex: "-1" 29782 }).find("a, input, button, select").attr({ 29783 tabindex: "-1" 29784 }), null !== e.$dots && (e.$slides.not(e.$slideTrack.find(".slick-cloned")).each(function (t) { 29785 var s = o.indexOf(t); 29786 i(this).attr({ 29787 role: "tabpanel", 29788 id: "slick-slide" + e.instanceUid + t, 29789 tabindex: -1 29790 }), -1 !== s && i(this).attr({ 29791 "aria-describedby": "slick-slide-control" + e.instanceUid + s 29792 }); 29793 }), e.$dots.attr("role", "tablist").find("li").each(function (s) { 29794 var n = o[s]; 29795 i(this).attr({ 29796 role: "presentation" 29797 }), i(this).find("button").first().attr({ 29798 role: "tab", 29799 id: "slick-slide-control" + e.instanceUid + s, 29800 "aria-controls": "slick-slide" + e.instanceUid + n, 29801 "aria-label": s + 1 + " of " + t, 29802 "aria-selected": null, 29803 tabindex: "-1" 29804 }); 29805 }).eq(e.currentSlide).find("button").attr({ 29806 "aria-selected": "true", 29807 tabindex: "0" 29808 }).end()); 29809 for (var s = e.currentSlide, n = s + e.options.slidesToShow; s < n; s++) { 29810 e.$slides.eq(s).attr("tabindex", 0); 29811 } 29812 e.activateADA(); 29813 }, e.prototype.initArrowEvents = function () { 29814 var i = this; 29815 !0 === i.options.arrows && i.slideCount > i.options.slidesToShow && (i.$prevArrow.off("click.slick").on("click.slick", { 29816 message: "previous" 29817 }, i.changeSlide), i.$nextArrow.off("click.slick").on("click.slick", { 29818 message: "next" 29819 }, i.changeSlide), !0 === i.options.accessibility && (i.$prevArrow.on("keydown.slick", i.keyHandler), i.$nextArrow.on("keydown.slick", i.keyHandler))); 29820 }, e.prototype.initDotEvents = function () { 29821 var e = this; 29822 !0 === e.options.dots && (i("li", e.$dots).on("click.slick", { 29823 message: "index" 29824 }, e.changeSlide), !0 === e.options.accessibility && e.$dots.on("keydown.slick", e.keyHandler)), !0 === e.options.dots && !0 === e.options.pauseOnDotsHover && i("li", e.$dots).on("mouseenter.slick", i.proxy(e.interrupt, e, !0)).on("mouseleave.slick", i.proxy(e.interrupt, e, !1)); 29825 }, e.prototype.initSlideEvents = function () { 29826 var e = this; 29827 e.options.pauseOnHover && (e.$list.on("mouseenter.slick", i.proxy(e.interrupt, e, !0)), e.$list.on("mouseleave.slick", i.proxy(e.interrupt, e, !1))); 29828 }, e.prototype.initializeEvents = function () { 29829 var e = this; 29830 e.initArrowEvents(), e.initDotEvents(), e.initSlideEvents(), e.$list.on("touchstart.slick mousedown.slick", { 29831 action: "start" 29832 }, e.swipeHandler), e.$list.on("touchmove.slick mousemove.slick", { 29833 action: "move" 29834 }, e.swipeHandler), e.$list.on("touchend.slick mouseup.slick", { 29835 action: "end" 29836 }, e.swipeHandler), e.$list.on("touchcancel.slick mouseleave.slick", { 29837 action: "end" 29838 }, e.swipeHandler), e.$list.on("click.slick", e.clickHandler), i(document).on(e.visibilityChange, i.proxy(e.visibility, e)), !0 === e.options.accessibility && e.$list.on("keydown.slick", e.keyHandler), !0 === e.options.focusOnSelect && i(e.$slideTrack).children().on("click.slick", e.selectHandler), i(window).on("orientationchange.slick.slick-" + e.instanceUid, i.proxy(e.orientationChange, e)), i(window).on("resize.slick.slick-" + e.instanceUid, i.proxy(e.resize, e)), i("[draggable!=true]", e.$slideTrack).on("dragstart", e.preventDefault), i(window).on("load.slick.slick-" + e.instanceUid, e.setPosition), i(e.setPosition); 29839 }, e.prototype.initUI = function () { 29840 var i = this; 29841 !0 === i.options.arrows && i.slideCount > i.options.slidesToShow && (i.$prevArrow.show(), i.$nextArrow.show()), !0 === i.options.dots && i.slideCount > i.options.slidesToShow && i.$dots.show(); 29842 }, e.prototype.keyHandler = function (i) { 29843 var e = this; 29844 i.target.tagName.match("TEXTAREA|INPUT|SELECT") || (37 === i.keyCode && !0 === e.options.accessibility ? e.changeSlide({ 29845 data: { 29846 message: !0 === e.options.rtl ? "next" : "previous" 29847 } 29848 }) : 39 === i.keyCode && !0 === e.options.accessibility && e.changeSlide({ 29849 data: { 29850 message: !0 === e.options.rtl ? "previous" : "next" 29851 } 29852 })); 29853 }, e.prototype.lazyLoad = function () { 29854 function e(e) { 29855 i("img[data-lazy]", e).each(function () { 29856 var e = i(this), 29857 t = i(this).attr("data-lazy"), 29858 o = i(this).attr("data-srcset"), 29859 s = i(this).attr("data-sizes") || n.$slider.attr("data-sizes"), 29860 r = document.createElement("img"); 29861 r.onload = function () { 29862 e.animate({ 29863 opacity: 0 29864 }, 100, function () { 29865 o && (e.attr("srcset", o), s && e.attr("sizes", s)), e.attr("src", t).animate({ 29866 opacity: 1 29867 }, 200, function () { 29868 e.removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading"); 29869 }), n.$slider.trigger("lazyLoaded", [n, e, t]); 29870 }); 29871 }, r.onerror = function () { 29872 e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"), n.$slider.trigger("lazyLoadError", [n, e, t]); 29873 }, r.src = t; 29874 }); 29875 } 29876 var t, 29877 o, 29878 s, 29879 n = this; 29880 if (!0 === n.options.centerMode ? !0 === n.options.infinite ? s = (o = n.currentSlide + (n.options.slidesToShow / 2 + 1)) + n.options.slidesToShow + 2 : (o = Math.max(0, n.currentSlide - (n.options.slidesToShow / 2 + 1)), s = n.options.slidesToShow / 2 + 1 + 2 + n.currentSlide) : (o = n.options.infinite ? n.options.slidesToShow + n.currentSlide : n.currentSlide, s = Math.ceil(o + n.options.slidesToShow), !0 === n.options.fade && (o > 0 && o--, s <= n.slideCount && s++)), t = n.$slider.find(".slick-slide").slice(o, s), "anticipated" === n.options.lazyLoad) for (var r = o - 1, l = s, d = n.$slider.find(".slick-slide"), a = 0; a < n.options.slidesToScroll; a++) { 29881 r < 0 && (r = n.slideCount - 1), t = (t = t.add(d.eq(r))).add(d.eq(l)), r--, l++; 29882 } 29883 e(t), n.slideCount <= n.options.slidesToShow ? e(n.$slider.find(".slick-slide")) : n.currentSlide >= n.slideCount - n.options.slidesToShow ? e(n.$slider.find(".slick-cloned").slice(0, n.options.slidesToShow)) : 0 === n.currentSlide && e(n.$slider.find(".slick-cloned").slice(-1 * n.options.slidesToShow)); 29884 }, e.prototype.loadSlider = function () { 29885 var i = this; 29886 i.setPosition(), i.$slideTrack.css({ 29887 opacity: 1 29888 }), i.$slider.removeClass("slick-loading"), i.initUI(), "progressive" === i.options.lazyLoad && i.progressiveLazyLoad(); 29889 }, e.prototype.next = e.prototype.slickNext = function () { 29890 this.changeSlide({ 29891 data: { 29892 message: "next" 29893 } 29894 }); 29895 }, e.prototype.orientationChange = function () { 29896 var i = this; 29897 i.checkResponsive(), i.setPosition(); 29898 }, e.prototype.pause = e.prototype.slickPause = function () { 29899 var i = this; 29900 i.autoPlayClear(), i.paused = !0; 29901 }, e.prototype.play = e.prototype.slickPlay = function () { 29902 var i = this; 29903 i.autoPlay(), i.options.autoplay = !0, i.paused = !1, i.focussed = !1, i.interrupted = !1; 29904 }, e.prototype.postSlide = function (e) { 29905 var t = this; 29906 t.unslicked || (t.$slider.trigger("afterChange", [t, e]), t.animating = !1, t.slideCount > t.options.slidesToShow && t.setPosition(), t.swipeLeft = null, t.options.autoplay && t.autoPlay(), !0 === t.options.accessibility && (t.initADA(), t.options.focusOnChange && i(t.$slides.get(t.currentSlide)).attr("tabindex", 0).focus())); 29907 }, e.prototype.prev = e.prototype.slickPrev = function () { 29908 this.changeSlide({ 29909 data: { 29910 message: "previous" 29911 } 29912 }); 29913 }, e.prototype.preventDefault = function (i) { 29914 i.preventDefault(); 29915 }, e.prototype.progressiveLazyLoad = function (e) { 29916 e = e || 1; 29917 var t, 29918 o, 29919 s, 29920 n, 29921 r, 29922 l = this, 29923 d = i("img[data-lazy]", l.$slider); 29924 d.length ? (t = d.first(), o = t.attr("data-lazy"), s = t.attr("data-srcset"), n = t.attr("data-sizes") || l.$slider.attr("data-sizes"), (r = document.createElement("img")).onload = function () { 29925 s && (t.attr("srcset", s), n && t.attr("sizes", n)), t.attr("src", o).removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading"), !0 === l.options.adaptiveHeight && l.setPosition(), l.$slider.trigger("lazyLoaded", [l, t, o]), l.progressiveLazyLoad(); 29926 }, r.onerror = function () { 29927 e < 3 ? setTimeout(function () { 29928 l.progressiveLazyLoad(e + 1); 29929 }, 500) : (t.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"), l.$slider.trigger("lazyLoadError", [l, t, o]), l.progressiveLazyLoad()); 29930 }, r.src = o) : l.$slider.trigger("allImagesLoaded", [l]); 29931 }, e.prototype.refresh = function (e) { 29932 var t, 29933 o, 29934 s = this; 29935 o = s.slideCount - s.options.slidesToShow, !s.options.infinite && s.currentSlide > o && (s.currentSlide = o), s.slideCount <= s.options.slidesToShow && (s.currentSlide = 0), t = s.currentSlide, s.destroy(!0), i.extend(s, s.initials, { 29936 currentSlide: t 29937 }), s.init(), e || s.changeSlide({ 29938 data: { 29939 message: "index", 29940 index: t 29941 } 29942 }, !1); 29943 }, e.prototype.registerBreakpoints = function () { 29944 var e, 29945 t, 29946 o, 29947 s = this, 29948 n = s.options.responsive || null; 29949 if ("array" === i.type(n) && n.length) { 29950 s.respondTo = s.options.respondTo || "window"; 29951 for (e in n) { 29952 if (o = s.breakpoints.length - 1, n.hasOwnProperty(e)) { 29953 for (t = n[e].breakpoint; o >= 0;) { 29954 s.breakpoints[o] && s.breakpoints[o] === t && s.breakpoints.splice(o, 1), o--; 29955 } 29956 s.breakpoints.push(t), s.breakpointSettings[t] = n[e].settings; 29957 } 29958 } 29959 s.breakpoints.sort(function (i, e) { 29960 return s.options.mobileFirst ? i - e : e - i; 29961 }); 29962 } 29963 }, e.prototype.reinit = function () { 29964 var e = this; 29965 e.$slides = e.$slideTrack.children(e.options.slide).addClass("slick-slide"), e.slideCount = e.$slides.length, e.currentSlide >= e.slideCount && 0 !== e.currentSlide && (e.currentSlide = e.currentSlide - e.options.slidesToScroll), e.slideCount <= e.options.slidesToShow && (e.currentSlide = 0), e.registerBreakpoints(), e.setProps(), e.setupInfinite(), e.buildArrows(), e.updateArrows(), e.initArrowEvents(), e.buildDots(), e.updateDots(), e.initDotEvents(), e.cleanUpSlideEvents(), e.initSlideEvents(), e.checkResponsive(!1, !0), !0 === e.options.focusOnSelect && i(e.$slideTrack).children().on("click.slick", e.selectHandler), e.setSlideClasses("number" == typeof e.currentSlide ? e.currentSlide : 0), e.setPosition(), e.focusHandler(), e.paused = !e.options.autoplay, e.autoPlay(), e.$slider.trigger("reInit", [e]); 29966 }, e.prototype.resize = function () { 29967 var e = this; 29968 i(window).width() !== e.windowWidth && (clearTimeout(e.windowDelay), e.windowDelay = window.setTimeout(function () { 29969 e.windowWidth = i(window).width(), e.checkResponsive(), e.unslicked || e.setPosition(); 29970 }, 50)); 29971 }, e.prototype.removeSlide = e.prototype.slickRemove = function (i, e, t) { 29972 var o = this; 29973 if (i = "boolean" == typeof i ? !0 === (e = i) ? 0 : o.slideCount - 1 : !0 === e ? --i : i, o.slideCount < 1 || i < 0 || i > o.slideCount - 1) return !1; 29974 o.unload(), !0 === t ? o.$slideTrack.children().remove() : o.$slideTrack.children(this.options.slide).eq(i).remove(), o.$slides = o.$slideTrack.children(this.options.slide), o.$slideTrack.children(this.options.slide).detach(), o.$slideTrack.append(o.$slides), o.$slidesCache = o.$slides, o.reinit(); 29975 }, e.prototype.setCSS = function (i) { 29976 var e, 29977 t, 29978 o = this, 29979 s = {}; 29980 !0 === o.options.rtl && (i = -i), e = "left" == o.positionProp ? Math.ceil(i) + "px" : "0px", t = "top" == o.positionProp ? Math.ceil(i) + "px" : "0px", s[o.positionProp] = i, !1 === o.transformsEnabled ? o.$slideTrack.css(s) : (s = {}, !1 === o.cssTransitions ? (s[o.animType] = "translate(" + e + ", " + t + ")", o.$slideTrack.css(s)) : (s[o.animType] = "translate3d(" + e + ", " + t + ", 0px)", o.$slideTrack.css(s))); 29981 }, e.prototype.setDimensions = function () { 29982 var i = this; 29983 !1 === i.options.vertical ? !0 === i.options.centerMode && i.$list.css({ 29984 padding: "0px " + i.options.centerPadding 29985 }) : (i.$list.height(i.$slides.first().outerHeight(!0) * i.options.slidesToShow), !0 === i.options.centerMode && i.$list.css({ 29986 padding: i.options.centerPadding + " 0px" 29987 })), i.listWidth = i.$list.width(), i.listHeight = i.$list.height(), !1 === i.options.vertical && !1 === i.options.variableWidth ? (i.slideWidth = Math.ceil(i.listWidth / i.options.slidesToShow), i.$slideTrack.width(Math.ceil(i.slideWidth * i.$slideTrack.children(".slick-slide").length))) : !0 === i.options.variableWidth ? i.$slideTrack.width(5e3 * i.slideCount) : (i.slideWidth = Math.ceil(i.listWidth), i.$slideTrack.height(Math.ceil(i.$slides.first().outerHeight(!0) * i.$slideTrack.children(".slick-slide").length))); 29988 var e = i.$slides.first().outerWidth(!0) - i.$slides.first().width(); 29989 !1 === i.options.variableWidth && i.$slideTrack.children(".slick-slide").width(i.slideWidth - e); 29990 }, e.prototype.setFade = function () { 29991 var e, 29992 t = this; 29993 t.$slides.each(function (o, s) { 29994 e = t.slideWidth * o * -1, !0 === t.options.rtl ? i(s).css({ 29995 position: "relative", 29996 right: e, 29997 top: 0, 29998 zIndex: t.options.zIndex - 2, 29999 opacity: 0 30000 }) : i(s).css({ 30001 position: "relative", 30002 left: e, 30003 top: 0, 30004 zIndex: t.options.zIndex - 2, 30005 opacity: 0 30006 }); 30007 }), t.$slides.eq(t.currentSlide).css({ 30008 zIndex: t.options.zIndex - 1, 30009 opacity: 1 30010 }); 30011 }, e.prototype.setHeight = function () { 30012 var i = this; 30013 if (1 === i.options.slidesToShow && !0 === i.options.adaptiveHeight && !1 === i.options.vertical) { 30014 var e = i.$slides.eq(i.currentSlide).outerHeight(!0); 30015 i.$list.css("height", e); 30016 } 30017 }, e.prototype.setOption = e.prototype.slickSetOption = function () { 30018 var e, 30019 t, 30020 o, 30021 s, 30022 n, 30023 r = this, 30024 l = !1; 30025 if ("object" === i.type(arguments[0]) ? (o = arguments[0], l = arguments[1], n = "multiple") : "string" === i.type(arguments[0]) && (o = arguments[0], s = arguments[1], l = arguments[2], "responsive" === arguments[0] && "array" === i.type(arguments[1]) ? n = "responsive" : void 0 !== arguments[1] && (n = "single")), "single" === n) r.options[o] = s;else if ("multiple" === n) i.each(o, function (i, e) { 30026 r.options[i] = e; 30027 });else if ("responsive" === n) for (t in s) { 30028 if ("array" !== i.type(r.options.responsive)) r.options.responsive = [s[t]];else { 30029 for (e = r.options.responsive.length - 1; e >= 0;) { 30030 r.options.responsive[e].breakpoint === s[t].breakpoint && r.options.responsive.splice(e, 1), e--; 30031 } 30032 r.options.responsive.push(s[t]); 30033 } 30034 } 30035 l && (r.unload(), r.reinit()); 30036 }, e.prototype.setPosition = function () { 30037 var i = this; 30038 i.setDimensions(), i.setHeight(), !1 === i.options.fade ? i.setCSS(i.getLeft(i.currentSlide)) : i.setFade(), i.$slider.trigger("setPosition", [i]); 30039 }, e.prototype.setProps = function () { 30040 var i = this, 30041 e = document.body.style; 30042 i.positionProp = !0 === i.options.vertical ? "top" : "left", "top" === i.positionProp ? i.$slider.addClass("slick-vertical") : i.$slider.removeClass("slick-vertical"), void 0 === e.WebkitTransition && void 0 === e.MozTransition && void 0 === e.msTransition || !0 === i.options.useCSS && (i.cssTransitions = !0), i.options.fade && ("number" == typeof i.options.zIndex ? i.options.zIndex < 3 && (i.options.zIndex = 3) : i.options.zIndex = i.defaults.zIndex), void 0 !== e.OTransform && (i.animType = "OTransform", i.transformType = "-o-transform", i.transitionType = "OTransition", void 0 === e.perspectiveProperty && void 0 === e.webkitPerspective && (i.animType = !1)), void 0 !== e.MozTransform && (i.animType = "MozTransform", i.transformType = "-moz-transform", i.transitionType = "MozTransition", void 0 === e.perspectiveProperty && void 0 === e.MozPerspective && (i.animType = !1)), void 0 !== e.webkitTransform && (i.animType = "webkitTransform", i.transformType = "-webkit-transform", i.transitionType = "webkitTransition", void 0 === e.perspectiveProperty && void 0 === e.webkitPerspective && (i.animType = !1)), void 0 !== e.msTransform && (i.animType = "msTransform", i.transformType = "-ms-transform", i.transitionType = "msTransition", void 0 === e.msTransform && (i.animType = !1)), void 0 !== e.transform && !1 !== i.animType && (i.animType = "transform", i.transformType = "transform", i.transitionType = "transition"), i.transformsEnabled = i.options.useTransform && null !== i.animType && !1 !== i.animType; 30043 }, e.prototype.setSlideClasses = function (i) { 30044 var e, 30045 t, 30046 o, 30047 s, 30048 n = this; 30049 if (t = n.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden", "true"), n.$slides.eq(i).addClass("slick-current"), !0 === n.options.centerMode) { 30050 var r = n.options.slidesToShow % 2 == 0 ? 1 : 0; 30051 e = Math.floor(n.options.slidesToShow / 2), !0 === n.options.infinite && (i >= e && i <= n.slideCount - 1 - e ? n.$slides.slice(i - e + r, i + e + 1).addClass("slick-active").attr("aria-hidden", "false") : (o = n.options.slidesToShow + i, t.slice(o - e + 1 + r, o + e + 2).addClass("slick-active").attr("aria-hidden", "false")), 0 === i ? t.eq(t.length - 1 - n.options.slidesToShow).addClass("slick-center") : i === n.slideCount - 1 && t.eq(n.options.slidesToShow).addClass("slick-center")), n.$slides.eq(i).addClass("slick-center"); 30052 } else i >= 0 && i <= n.slideCount - n.options.slidesToShow ? n.$slides.slice(i, i + n.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false") : t.length <= n.options.slidesToShow ? t.addClass("slick-active").attr("aria-hidden", "false") : (s = n.slideCount % n.options.slidesToShow, o = !0 === n.options.infinite ? n.options.slidesToShow + i : i, n.options.slidesToShow == n.options.slidesToScroll && n.slideCount - i < n.options.slidesToShow ? t.slice(o - (n.options.slidesToShow - s), o + s).addClass("slick-active").attr("aria-hidden", "false") : t.slice(o, o + n.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false")); 30053 "ondemand" !== n.options.lazyLoad && "anticipated" !== n.options.lazyLoad || n.lazyLoad(); 30054 }, e.prototype.setupInfinite = function () { 30055 var e, 30056 t, 30057 o, 30058 s = this; 30059 if (!0 === s.options.fade && (s.options.centerMode = !1), !0 === s.options.infinite && !1 === s.options.fade && (t = null, s.slideCount > s.options.slidesToShow)) { 30060 for (o = !0 === s.options.centerMode ? s.options.slidesToShow + 1 : s.options.slidesToShow, e = s.slideCount; e > s.slideCount - o; e -= 1) { 30061 t = e - 1, i(s.$slides[t]).clone(!0).attr("id", "").attr("data-slick-index", t - s.slideCount).prependTo(s.$slideTrack).addClass("slick-cloned"); 30062 } 30063 for (e = 0; e < o + s.slideCount; e += 1) { 30064 t = e, i(s.$slides[t]).clone(!0).attr("id", "").attr("data-slick-index", t + s.slideCount).appendTo(s.$slideTrack).addClass("slick-cloned"); 30065 } 30066 s.$slideTrack.find(".slick-cloned").find("[id]").each(function () { 30067 i(this).attr("id", ""); 30068 }); 30069 } 30070 }, e.prototype.interrupt = function (i) { 30071 var e = this; 30072 i || e.autoPlay(), e.interrupted = i; 30073 }, e.prototype.selectHandler = function (e) { 30074 var t = this, 30075 o = i(e.target).is(".slick-slide") ? i(e.target) : i(e.target).parents(".slick-slide"), 30076 s = parseInt(o.attr("data-slick-index")); 30077 s || (s = 0), t.slideCount <= t.options.slidesToShow ? t.slideHandler(s, !1, !0) : t.slideHandler(s); 30078 }, e.prototype.slideHandler = function (i, e, t) { 30079 var o, 30080 s, 30081 n, 30082 r, 30083 l, 30084 d = null, 30085 a = this; 30086 if (e = e || !1, !(!0 === a.animating && !0 === a.options.waitForAnimate || !0 === a.options.fade && a.currentSlide === i)) if (!1 === e && a.asNavFor(i), o = i, d = a.getLeft(o), r = a.getLeft(a.currentSlide), a.currentLeft = null === a.swipeLeft ? r : a.swipeLeft, !1 === a.options.infinite && !1 === a.options.centerMode && (i < 0 || i > a.getDotCount() * a.options.slidesToScroll)) !1 === a.options.fade && (o = a.currentSlide, !0 !== t ? a.animateSlide(r, function () { 30087 a.postSlide(o); 30088 }) : a.postSlide(o));else if (!1 === a.options.infinite && !0 === a.options.centerMode && (i < 0 || i > a.slideCount - a.options.slidesToScroll)) !1 === a.options.fade && (o = a.currentSlide, !0 !== t ? a.animateSlide(r, function () { 30089 a.postSlide(o); 30090 }) : a.postSlide(o));else { 30091 if (a.options.autoplay && clearInterval(a.autoPlayTimer), s = o < 0 ? a.slideCount % a.options.slidesToScroll != 0 ? a.slideCount - a.slideCount % a.options.slidesToScroll : a.slideCount + o : o >= a.slideCount ? a.slideCount % a.options.slidesToScroll != 0 ? 0 : o - a.slideCount : o, a.animating = !0, a.$slider.trigger("beforeChange", [a, a.currentSlide, s]), n = a.currentSlide, a.currentSlide = s, a.setSlideClasses(a.currentSlide), a.options.asNavFor && (l = (l = a.getNavTarget()).slick("getSlick")).slideCount <= l.options.slidesToShow && l.setSlideClasses(a.currentSlide), a.updateDots(), a.updateArrows(), !0 === a.options.fade) return !0 !== t ? (a.fadeSlideOut(n), a.fadeSlide(s, function () { 30092 a.postSlide(s); 30093 })) : a.postSlide(s), void a.animateHeight(); 30094 !0 !== t ? a.animateSlide(d, function () { 30095 a.postSlide(s); 30096 }) : a.postSlide(s); 30097 } 30098 }, e.prototype.startLoad = function () { 30099 var i = this; 30100 !0 === i.options.arrows && i.slideCount > i.options.slidesToShow && (i.$prevArrow.hide(), i.$nextArrow.hide()), !0 === i.options.dots && i.slideCount > i.options.slidesToShow && i.$dots.hide(), i.$slider.addClass("slick-loading"); 30101 }, e.prototype.swipeDirection = function () { 30102 var i, 30103 e, 30104 t, 30105 o, 30106 s = this; 30107 return i = s.touchObject.startX - s.touchObject.curX, e = s.touchObject.startY - s.touchObject.curY, t = Math.atan2(e, i), (o = Math.round(180 * t / Math.PI)) < 0 && (o = 360 - Math.abs(o)), o <= 45 && o >= 0 ? !1 === s.options.rtl ? "left" : "right" : o <= 360 && o >= 315 ? !1 === s.options.rtl ? "left" : "right" : o >= 135 && o <= 225 ? !1 === s.options.rtl ? "right" : "left" : !0 === s.options.verticalSwiping ? o >= 35 && o <= 135 ? "down" : "up" : "vertical"; 30108 }, e.prototype.swipeEnd = function (i) { 30109 var e, 30110 t, 30111 o = this; 30112 if (o.dragging = !1, o.swiping = !1, o.scrolling) return o.scrolling = !1, !1; 30113 if (o.interrupted = !1, o.shouldClick = !(o.touchObject.swipeLength > 10), void 0 === o.touchObject.curX) return !1; 30114 if (!0 === o.touchObject.edgeHit && o.$slider.trigger("edge", [o, o.swipeDirection()]), o.touchObject.swipeLength >= o.touchObject.minSwipe) { 30115 switch (t = o.swipeDirection()) { 30116 case "left": 30117 case "down": 30118 e = o.options.swipeToSlide ? o.checkNavigable(o.currentSlide + o.getSlideCount()) : o.currentSlide + o.getSlideCount(), o.currentDirection = 0; 30119 break; 30120 case "right": 30121 case "up": 30122 e = o.options.swipeToSlide ? o.checkNavigable(o.currentSlide - o.getSlideCount()) : o.currentSlide - o.getSlideCount(), o.currentDirection = 1; 30123 } 30124 "vertical" != t && (o.slideHandler(e), o.touchObject = {}, o.$slider.trigger("swipe", [o, t])); 30125 } else o.touchObject.startX !== o.touchObject.curX && (o.slideHandler(o.currentSlide), o.touchObject = {}); 30126 }, e.prototype.swipeHandler = function (i) { 30127 var e = this; 30128 if (!(!1 === e.options.swipe || "ontouchend" in document && !1 === e.options.swipe || !1 === e.options.draggable && -1 !== i.type.indexOf("mouse"))) switch (e.touchObject.fingerCount = i.originalEvent && void 0 !== i.originalEvent.touches ? i.originalEvent.touches.length : 1, e.touchObject.minSwipe = e.listWidth / e.options.touchThreshold, !0 === e.options.verticalSwiping && (e.touchObject.minSwipe = e.listHeight / e.options.touchThreshold), i.data.action) { 30129 case "start": 30130 e.swipeStart(i); 30131 break; 30132 case "move": 30133 e.swipeMove(i); 30134 break; 30135 case "end": 30136 e.swipeEnd(i); 30137 } 30138 }, e.prototype.swipeMove = function (i) { 30139 var e, 30140 t, 30141 o, 30142 s, 30143 n, 30144 r, 30145 l = this; 30146 return n = void 0 !== i.originalEvent ? i.originalEvent.touches : null, !(!l.dragging || l.scrolling || n && 1 !== n.length) && (e = l.getLeft(l.currentSlide), l.touchObject.curX = void 0 !== n ? n[0].pageX : i.clientX, l.touchObject.curY = void 0 !== n ? n[0].pageY : i.clientY, l.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(l.touchObject.curX - l.touchObject.startX, 2))), r = Math.round(Math.sqrt(Math.pow(l.touchObject.curY - l.touchObject.startY, 2))), !l.options.verticalSwiping && !l.swiping && r > 4 ? (l.scrolling = !0, !1) : (!0 === l.options.verticalSwiping && (l.touchObject.swipeLength = r), t = l.swipeDirection(), void 0 !== i.originalEvent && l.touchObject.swipeLength > 4 && (l.swiping = !0, i.preventDefault()), s = (!1 === l.options.rtl ? 1 : -1) * (l.touchObject.curX > l.touchObject.startX ? 1 : -1), !0 === l.options.verticalSwiping && (s = l.touchObject.curY > l.touchObject.startY ? 1 : -1), o = l.touchObject.swipeLength, l.touchObject.edgeHit = !1, !1 === l.options.infinite && (0 === l.currentSlide && "right" === t || l.currentSlide >= l.getDotCount() && "left" === t) && (o = l.touchObject.swipeLength * l.options.edgeFriction, l.touchObject.edgeHit = !0), !1 === l.options.vertical ? l.swipeLeft = e + o * s : l.swipeLeft = e + o * (l.$list.height() / l.listWidth) * s, !0 === l.options.verticalSwiping && (l.swipeLeft = e + o * s), !0 !== l.options.fade && !1 !== l.options.touchMove && (!0 === l.animating ? (l.swipeLeft = null, !1) : void l.setCSS(l.swipeLeft)))); 30147 }, e.prototype.swipeStart = function (i) { 30148 var e, 30149 t = this; 30150 if (t.interrupted = !0, 1 !== t.touchObject.fingerCount || t.slideCount <= t.options.slidesToShow) return t.touchObject = {}, !1; 30151 void 0 !== i.originalEvent && void 0 !== i.originalEvent.touches && (e = i.originalEvent.touches[0]), t.touchObject.startX = t.touchObject.curX = void 0 !== e ? e.pageX : i.clientX, t.touchObject.startY = t.touchObject.curY = void 0 !== e ? e.pageY : i.clientY, t.dragging = !0; 30152 }, e.prototype.unfilterSlides = e.prototype.slickUnfilter = function () { 30153 var i = this; 30154 null !== i.$slidesCache && (i.unload(), i.$slideTrack.children(this.options.slide).detach(), i.$slidesCache.appendTo(i.$slideTrack), i.reinit()); 30155 }, e.prototype.unload = function () { 30156 var e = this; 30157 i(".slick-cloned", e.$slider).remove(), e.$dots && e.$dots.remove(), e.$prevArrow && e.htmlExpr.test(e.options.prevArrow) && e.$prevArrow.remove(), e.$nextArrow && e.htmlExpr.test(e.options.nextArrow) && e.$nextArrow.remove(), e.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden", "true").css("width", ""); 30158 }, e.prototype.unslick = function (i) { 30159 var e = this; 30160 e.$slider.trigger("unslick", [e, i]), e.destroy(); 30161 }, e.prototype.updateArrows = function () { 30162 var i = this; 30163 Math.floor(i.options.slidesToShow / 2), !0 === i.options.arrows && i.slideCount > i.options.slidesToShow && !i.options.infinite && (i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false"), i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false"), 0 === i.currentSlide ? (i.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true"), i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false")) : i.currentSlide >= i.slideCount - i.options.slidesToShow && !1 === i.options.centerMode ? (i.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"), i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false")) : i.currentSlide >= i.slideCount - 1 && !0 === i.options.centerMode && (i.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"), i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false"))); 30164 }, e.prototype.updateDots = function () { 30165 var i = this; 30166 null !== i.$dots && (i.$dots.find("li").removeClass("slick-active").end(), i.$dots.find("li").eq(Math.floor(i.currentSlide / i.options.slidesToScroll)).addClass("slick-active")); 30167 }, e.prototype.visibility = function () { 30168 var i = this; 30169 i.options.autoplay && (document[i.hidden] ? i.interrupted = !0 : i.interrupted = !1); 30170 }, i.fn.slick = function () { 30171 var i, 30172 t, 30173 o = this, 30174 s = arguments[0], 30175 n = Array.prototype.slice.call(arguments, 1), 30176 r = o.length; 30177 for (i = 0; i < r; i++) { 30178 if ("object" == _typeof(s) || void 0 === s ? o[i].slick = new e(o[i], s) : t = o[i].slick[s].apply(o[i].slick, n), void 0 !== t) return t; 30179 } 30180 return o; 30181 }; 30182}); 30183 30184/***/ }), 30185
vendor: 220,034 bytes, lines 30186-34902
30186/***/ "./node_modules/swiper/swiper-bundle.min.js": 30187/*!**************************************************!*\ 30188 !*** ./node_modules/swiper/swiper-bundle.min.js ***! 30189 \**************************************************/ 30190/*! no static exports found */ 30191/***/ (function(module, exports, __webpack_require__) { 30192 30193var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } 30194function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 30195function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 30196function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } 30197function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } 30198function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } 30199function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 30200function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } } 30201function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } 30202function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } 30203function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 30204function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } 30205function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } 30206function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } 30207function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } 30208function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 30209function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } 30210function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } 30211function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } 30212function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 30213function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } 30214function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } 30215function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } 30216function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } 30217function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 30218function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 30219function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 30220/** 30221 * Swiper 7.0.8 30222 * Most modern mobile touch slider and framework with hardware accelerated transitions 30223 * https://swiperjs.com 30224 * 30225 * Copyright 2014-2021 Vladimir Kharlampidi 30226 * 30227 * Released under the MIT License 30228 * 30229 * Released on: October 4, 2021 30230 */ 30231 30232!function (e, t) { 30233 "object" == ( false ? undefined : _typeof(exports)) && "undefined" != typeof module ? module.exports = t() : true ? !(__WEBPACK_AMD_DEFINE_FACTORY__ = (t), 30234 __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? 30235 (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : 30236 __WEBPACK_AMD_DEFINE_FACTORY__), 30237 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined; 30238}(this, function () { 30239 "use strict"; 30240 30241 function e(e) { 30242 return null !== e && "object" == _typeof(e) && "constructor" in e && e.constructor === Object; 30243 } 30244 function t() { 30245 var s = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 30246 var a = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 30247 Object.keys(a).forEach(function (i) { 30248 void 0 === s[i] ? s[i] = a[i] : e(a[i]) && e(s[i]) && Object.keys(a[i]).length > 0 && t(s[i], a[i]); 30249 }); 30250 } 30251 var s = { 30252 body: {}, 30253 addEventListener: function addEventListener() {}, 30254 removeEventListener: function removeEventListener() {}, 30255 activeElement: { 30256 blur: function blur() {}, 30257 nodeName: "" 30258 }, 30259 querySelector: function querySelector() { 30260 return null; 30261 }, 30262 querySelectorAll: function querySelectorAll() { 30263 return []; 30264 }, 30265 getElementById: function getElementById() { 30266 return null; 30267 }, 30268 createEvent: function createEvent() { 30269 return { 30270 initEvent: function initEvent() {} 30271 }; 30272 }, 30273 createElement: function createElement() { 30274 return { 30275 children: [], 30276 childNodes: [], 30277 style: {}, 30278 setAttribute: function setAttribute() {}, 30279 getElementsByTagName: function getElementsByTagName() { 30280 return []; 30281 } 30282 }; 30283 }, 30284 createElementNS: function createElementNS() { 30285 return {}; 30286 }, 30287 importNode: function importNode() { 30288 return null; 30289 }, 30290 location: { 30291 hash: "", 30292 host: "", 30293 hostname: "", 30294 href: "", 30295 origin: "", 30296 pathname: "", 30297 protocol: "", 30298 search: "" 30299 } 30300 }; 30301 function a() { 30302 var e = "undefined" != typeof document ? document : {}; 30303 return t(e, s), e; 30304 } 30305 var i = { 30306 document: s, 30307 navigator: { 30308 userAgent: "" 30309 }, 30310 location: { 30311 hash: "", 30312 host: "", 30313 hostname: "", 30314 href: "", 30315 origin: "", 30316 pathname: "", 30317 protocol: "", 30318 search: "" 30319 }, 30320 history: { 30321 replaceState: function replaceState() {}, 30322 pushState: function pushState() {}, 30323 go: function go() {}, 30324 back: function back() {} 30325 }, 30326 CustomEvent: function CustomEvent() { 30327 return this; 30328 }, 30329 addEventListener: function addEventListener() {}, 30330 removeEventListener: function removeEventListener() {}, 30331 getComputedStyle: function getComputedStyle() { 30332 return { 30333 getPropertyValue: function getPropertyValue() { 30334 return ""; 30335 } 30336 }; 30337 }, 30338 Image: function Image() {}, 30339 Date: function Date() {}, 30340 screen: {}, 30341 setTimeout: function setTimeout() {}, 30342 clearTimeout: function clearTimeout() {}, 30343 matchMedia: function matchMedia() { 30344 return {}; 30345 }, 30346 requestAnimationFrame: function requestAnimationFrame(e) { 30347 return "undefined" == typeof setTimeout ? (e(), null) : setTimeout(e, 0); 30348 }, 30349 cancelAnimationFrame: function cancelAnimationFrame(e) { 30350 "undefined" != typeof setTimeout && clearTimeout(e); 30351 } 30352 }; 30353 function r() { 30354 var e = "undefined" != typeof window ? window : {}; 30355 return t(e, i), e; 30356 } 30357 var n = /*#__PURE__*/function (_Array) { 30358 _inherits(n, _Array); 30359 var _super = _createSuper(n); 30360 function n(e) { 30361 var _this; 30362 _classCallCheck(this, n); 30363 _this = _super.call.apply(_super, [this].concat(_toConsumableArray(e || []))), function (e) { 30364 var t = e.__proto__; 30365 Object.defineProperty(e, "__proto__", { 30366 get: function get() { 30367 return t; 30368 }, 30369 set: function set(e) { 30370 t.__proto__ = e; 30371 } 30372 }); 30373 }(_assertThisInitialized(_this)); 30374 return _this; 30375 } 30376 return n; 30377 }( /*#__PURE__*/_wrapNativeSuper(Array)); 30378 function l() { 30379 var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; 30380 var t = []; 30381 return e.forEach(function (e) { 30382 Array.isArray(e) ? t.push.apply(t, _toConsumableArray(l(e))) : t.push(e); 30383 }), t; 30384 } 30385 function o(e, t) { 30386 return Array.prototype.filter.call(e, t); 30387 } 30388 function d(e, t) { 30389 var s = r(), 30390 i = a(); 30391 var l = []; 30392 if (!t && e instanceof n) return e; 30393 if (!e) return new n(l); 30394 if ("string" == typeof e) { 30395 var _s = e.trim(); 30396 if (_s.indexOf("<") >= 0 && _s.indexOf(">") >= 0) { 30397 var _e = "div"; 30398 0 === _s.indexOf("<li") && (_e = "ul"), 0 === _s.indexOf("<tr") && (_e = "tbody"), 0 !== _s.indexOf("<td") && 0 !== _s.indexOf("<th") || (_e = "tr"), 0 === _s.indexOf("<tbody") && (_e = "table"), 0 === _s.indexOf("<option") && (_e = "select"); 30399 var _t = i.createElement(_e); 30400 _t.innerHTML = _s; 30401 for (var _e2 = 0; _e2 < _t.childNodes.length; _e2 += 1) { 30402 l.push(_t.childNodes[_e2]); 30403 } 30404 } else l = function (e, t) { 30405 if ("string" != typeof e) return [e]; 30406 var s = [], 30407 a = t.querySelectorAll(e); 30408 for (var _e3 = 0; _e3 < a.length; _e3 += 1) { 30409 s.push(a[_e3]); 30410 } 30411 return s; 30412 }(e.trim(), t || i); 30413 } else if (e.nodeType || e === s || e === i) l.push(e);else if (Array.isArray(e)) { 30414 if (e instanceof n) return e; 30415 l = e; 30416 } 30417 return new n(function (e) { 30418 var t = []; 30419 for (var _s2 = 0; _s2 < e.length; _s2 += 1) { 30420 -1 === t.indexOf(e[_s2]) && t.push(e[_s2]); 30421 } 30422 return t; 30423 }(l)); 30424 } 30425 d.fn = n.prototype; 30426 var c = { 30427 addClass: function addClass() { 30428 for (var _len = arguments.length, e = new Array(_len), _key = 0; _key < _len; _key++) { 30429 e[_key] = arguments[_key]; 30430 } 30431 var t = l(e.map(function (e) { 30432 return e.split(" "); 30433 })); 30434 return this.forEach(function (e) { 30435 var _e$classList; 30436 (_e$classList = e.classList).add.apply(_e$classList, _toConsumableArray(t)); 30437 }), this; 30438 }, 30439 removeClass: function removeClass() { 30440 for (var _len2 = arguments.length, e = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { 30441 e[_key2] = arguments[_key2]; 30442 } 30443 var t = l(e.map(function (e) { 30444 return e.split(" "); 30445 })); 30446 return this.forEach(function (e) { 30447 var _e$classList2; 30448 (_e$classList2 = e.classList).remove.apply(_e$classList2, _toConsumableArray(t)); 30449 }), this; 30450 }, 30451 hasClass: function hasClass() { 30452 for (var _len3 = arguments.length, e = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { 30453 e[_key3] = arguments[_key3]; 30454 } 30455 var t = l(e.map(function (e) { 30456 return e.split(" "); 30457 })); 30458 return o(this, function (e) { 30459 return t.filter(function (t) { 30460 return e.classList.contains(t); 30461 }).length > 0; 30462 }).length > 0; 30463 }, 30464 toggleClass: function toggleClass() { 30465 for (var _len4 = arguments.length, e = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { 30466 e[_key4] = arguments[_key4]; 30467 } 30468 var t = l(e.map(function (e) { 30469 return e.split(" "); 30470 })); 30471 this.forEach(function (e) { 30472 t.forEach(function (t) { 30473 e.classList.toggle(t); 30474 }); 30475 }); 30476 }, 30477 attr: function attr(e, t) { 30478 if (1 === arguments.length && "string" == typeof e) return this[0] ? this[0].getAttribute(e) : void 0; 30479 for (var _s3 = 0; _s3 < this.length; _s3 += 1) { 30480 if (2 === arguments.length) this[_s3].setAttribute(e, t);else for (var _t2 in e) { 30481 this[_s3][_t2] = e[_t2], this[_s3].setAttribute(_t2, e[_t2]); 30482 } 30483 } 30484 return this; 30485 }, 30486 removeAttr: function removeAttr(e) { 30487 for (var _t3 = 0; _t3 < this.length; _t3 += 1) { 30488 this[_t3].removeAttribute(e); 30489 } 30490 return this; 30491 }, 30492 transform: function transform(e) { 30493 for (var _t4 = 0; _t4 < this.length; _t4 += 1) { 30494 this[_t4].style.transform = e; 30495 } 30496 return this; 30497 }, 30498 transition: function transition(e) { 30499 for (var _t5 = 0; _t5 < this.length; _t5 += 1) { 30500 this[_t5].style.transitionDuration = "string" != typeof e ? "".concat(e, "ms") : e; 30501 } 30502 return this; 30503 }, 30504 on: function on() { 30505 var _e5, _e6; 30506 for (var _len5 = arguments.length, e = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { 30507 e[_key5] = arguments[_key5]; 30508 } 30509 var t = e[0], 30510 s = e[1], 30511 a = e[2], 30512 i = e[3]; 30513 function r(e) { 30514 var t = e.target; 30515 if (!t) return; 30516 var i = e.target.dom7EventData || []; 30517 if (i.indexOf(e) < 0 && i.unshift(e), d(t).is(s)) a.apply(t, i);else { 30518 var _e4 = d(t).parents(); 30519 for (var _t6 = 0; _t6 < _e4.length; _t6 += 1) { 30520 d(_e4[_t6]).is(s) && a.apply(_e4[_t6], i); 30521 } 30522 } 30523 } 30524 function n(e) { 30525 var t = e && e.target && e.target.dom7EventData || []; 30526 t.indexOf(e) < 0 && t.unshift(e), a.apply(this, t); 30527 } 30528 "function" == typeof e[1] && ((_e5 = e, _e6 = _slicedToArray(_e5, 3), t = _e6[0], a = _e6[1], i = _e6[2], _e5), s = void 0), i || (i = !1); 30529 var l = t.split(" "); 30530 var o; 30531 for (var _e7 = 0; _e7 < this.length; _e7 += 1) { 30532 var _t7 = this[_e7]; 30533 if (s) for (o = 0; o < l.length; o += 1) { 30534 var _e8 = l[o]; 30535 _t7.dom7LiveListeners || (_t7.dom7LiveListeners = {}), _t7.dom7LiveListeners[_e8] || (_t7.dom7LiveListeners[_e8] = []), _t7.dom7LiveListeners[_e8].push({ 30536 listener: a, 30537 proxyListener: r 30538 }), _t7.addEventListener(_e8, r, i); 30539 } else for (o = 0; o < l.length; o += 1) { 30540 var _e9 = l[o]; 30541 _t7.dom7Listeners || (_t7.dom7Listeners = {}), _t7.dom7Listeners[_e9] || (_t7.dom7Listeners[_e9] = []), _t7.dom7Listeners[_e9].push({ 30542 listener: a, 30543 proxyListener: n 30544 }), _t7.addEventListener(_e9, n, i); 30545 } 30546 } 30547 return this; 30548 }, 30549 off: function off() { 30550 var _e10, _e11; 30551 for (var _len6 = arguments.length, e = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { 30552 e[_key6] = arguments[_key6]; 30553 } 30554 var t = e[0], 30555 s = e[1], 30556 a = e[2], 30557 i = e[3]; 30558 "function" == typeof e[1] && ((_e10 = e, _e11 = _slicedToArray(_e10, 3), t = _e11[0], a = _e11[1], i = _e11[2], _e10), s = void 0), i || (i = !1); 30559 var r = t.split(" "); 30560 for (var _e12 = 0; _e12 < r.length; _e12 += 1) { 30561 var _t8 = r[_e12]; 30562 for (var _e13 = 0; _e13 < this.length; _e13 += 1) { 30563 var _r2 = this[_e13]; 30564 var _n2 = void 0; 30565 if (!s && _r2.dom7Listeners ? _n2 = _r2.dom7Listeners[_t8] : s && _r2.dom7LiveListeners && (_n2 = _r2.dom7LiveListeners[_t8]), _n2 && _n2.length) for (var _e14 = _n2.length - 1; _e14 >= 0; _e14 -= 1) { 30566 var _s4 = _n2[_e14]; 30567 a && _s4.listener === a || a && _s4.listener && _s4.listener.dom7proxy && _s4.listener.dom7proxy === a ? (_r2.removeEventListener(_t8, _s4.proxyListener, i), _n2.splice(_e14, 1)) : a || (_r2.removeEventListener(_t8, _s4.proxyListener, i), _n2.splice(_e14, 1)); 30568 } 30569 } 30570 } 30571 return this; 30572 }, 30573 trigger: function trigger() { 30574 for (var _len7 = arguments.length, e = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) { 30575 e[_key7] = arguments[_key7]; 30576 } 30577 var t = r(), 30578 s = e[0].split(" "), 30579 a = e[1]; 30580 for (var _i2 = 0; _i2 < s.length; _i2 += 1) { 30581 var _r3 = s[_i2]; 30582 for (var _s5 = 0; _s5 < this.length; _s5 += 1) { 30583 var _i3 = this[_s5]; 30584 if (t.CustomEvent) { 30585 var _s6 = new t.CustomEvent(_r3, { 30586 detail: a, 30587 bubbles: !0, 30588 cancelable: !0 30589 }); 30590 _i3.dom7EventData = e.filter(function (e, t) { 30591 return t > 0; 30592 }), _i3.dispatchEvent(_s6), _i3.dom7EventData = [], delete _i3.dom7EventData; 30593 } 30594 } 30595 } 30596 return this; 30597 }, 30598 transitionEnd: function transitionEnd(e) { 30599 var t = this; 30600 return e && t.on("transitionend", function s(a) { 30601 a.target === this && (e.call(this, a), t.off("transitionend", s)); 30602 }), this; 30603 }, 30604 outerWidth: function outerWidth(e) { 30605 if (this.length > 0) { 30606 if (e) { 30607 var _e15 = this.styles(); 30608 return this[0].offsetWidth + parseFloat(_e15.getPropertyValue("margin-right")) + parseFloat(_e15.getPropertyValue("margin-left")); 30609 } 30610 return this[0].offsetWidth; 30611 } 30612 return null; 30613 }, 30614 outerHeight: function outerHeight(e) { 30615 if (this.length > 0) { 30616 if (e) { 30617 var _e16 = this.styles(); 30618 return this[0].offsetHeight + parseFloat(_e16.getPropertyValue("margin-top")) + parseFloat(_e16.getPropertyValue("margin-bottom")); 30619 } 30620 return this[0].offsetHeight; 30621 } 30622 return null; 30623 }, 30624 styles: function styles() { 30625 var e = r(); 30626 return this[0] ? e.getComputedStyle(this[0], null) : {}; 30627 }, 30628 offset: function offset() { 30629 if (this.length > 0) { 30630 var _e17 = r(), 30631 _t9 = a(), 30632 _s7 = this[0], 30633 _i4 = _s7.getBoundingClientRect(), 30634 _n3 = _t9.body, 30635 _l = _s7.clientTop || _n3.clientTop || 0, 30636 _o = _s7.clientLeft || _n3.clientLeft || 0, 30637 _d2 = _s7 === _e17 ? _e17.scrollY : _s7.scrollTop, 30638 _c = _s7 === _e17 ? _e17.scrollX : _s7.scrollLeft; 30639 return { 30640 top: _i4.top + _d2 - _l, 30641 left: _i4.left + _c - _o 30642 }; 30643 } 30644 return null; 30645 }, 30646 css: function css(e, t) { 30647 var s = r(); 30648 var a; 30649 if (1 === arguments.length) { 30650 if ("string" != typeof e) { 30651 for (a = 0; a < this.length; a += 1) { 30652 for (var _t10 in e) { 30653 this[a].style[_t10] = e[_t10]; 30654 } 30655 } 30656 return this; 30657 } 30658 if (this[0]) return s.getComputedStyle(this[0], null).getPropertyValue(e); 30659 } 30660 if (2 === arguments.length && "string" == typeof e) { 30661 for (a = 0; a < this.length; a += 1) { 30662 this[a].style[e] = t; 30663 } 30664 return this; 30665 } 30666 return this; 30667 }, 30668 each: function each(e) { 30669 return e ? (this.forEach(function (t, s) { 30670 e.apply(t, [t, s]); 30671 }), this) : this; 30672 }, 30673 html: function html(e) { 30674 if (void 0 === e) return this[0] ? this[0].innerHTML : null; 30675 for (var _t11 = 0; _t11 < this.length; _t11 += 1) { 30676 this[_t11].innerHTML = e; 30677 } 30678 return this; 30679 }, 30680 text: function text(e) { 30681 if (void 0 === e) return this[0] ? this[0].textContent.trim() : null; 30682 for (var _t12 = 0; _t12 < this.length; _t12 += 1) { 30683 this[_t12].textContent = e; 30684 } 30685 return this; 30686 }, 30687 is: function is(e) { 30688 var t = r(), 30689 s = a(), 30690 i = this[0]; 30691 var l, o; 30692 if (!i || void 0 === e) return !1; 30693 if ("string" == typeof e) { 30694 if (i.matches) return i.matches(e); 30695 if (i.webkitMatchesSelector) return i.webkitMatchesSelector(e); 30696 if (i.msMatchesSelector) return i.msMatchesSelector(e); 30697 for (l = d(e), o = 0; o < l.length; o += 1) { 30698 if (l[o] === i) return !0; 30699 } 30700 return !1; 30701 } 30702 if (e === s) return i === s; 30703 if (e === t) return i === t; 30704 if (e.nodeType || e instanceof n) { 30705 for (l = e.nodeType ? [e] : e, o = 0; o < l.length; o += 1) { 30706 if (l[o] === i) return !0; 30707 } 30708 return !1; 30709 } 30710 return !1; 30711 }, 30712 index: function index() { 30713 var e, 30714 t = this[0]; 30715 if (t) { 30716 for (e = 0; null !== (t = t.previousSibling);) { 30717 1 === t.nodeType && (e += 1); 30718 } 30719 return e; 30720 } 30721 }, 30722 eq: function eq(e) { 30723 if (void 0 === e) return this; 30724 var t = this.length; 30725 if (e > t - 1) return d([]); 30726 if (e < 0) { 30727 var _s8 = t + e; 30728 return d(_s8 < 0 ? [] : [this[_s8]]); 30729 } 30730 return d([this[e]]); 30731 }, 30732 append: function append() { 30733 var t; 30734 var s = a(); 30735 for (var _a = 0; _a < arguments.length; _a += 1) { 30736 t = _a < 0 || arguments.length <= _a ? undefined : arguments[_a]; 30737 for (var _e18 = 0; _e18 < this.length; _e18 += 1) { 30738 if ("string" == typeof t) { 30739 var _a2 = s.createElement("div"); 30740 for (_a2.innerHTML = t; _a2.firstChild;) { 30741 this[_e18].appendChild(_a2.firstChild); 30742 } 30743 } else if (t instanceof n) for (var _s9 = 0; _s9 < t.length; _s9 += 1) { 30744 this[_e18].appendChild(t[_s9]); 30745 } else this[_e18].appendChild(t); 30746 } 30747 } 30748 return this; 30749 }, 30750 prepend: function prepend(e) { 30751 var t = a(); 30752 var s, i; 30753 for (s = 0; s < this.length; s += 1) { 30754 if ("string" == typeof e) { 30755 var _a3 = t.createElement("div"); 30756 for (_a3.innerHTML = e, i = _a3.childNodes.length - 1; i >= 0; i -= 1) { 30757 this[s].insertBefore(_a3.childNodes[i], this[s].childNodes[0]); 30758 } 30759 } else if (e instanceof n) for (i = 0; i < e.length; i += 1) { 30760 this[s].insertBefore(e[i], this[s].childNodes[0]); 30761 } else this[s].insertBefore(e, this[s].childNodes[0]); 30762 } 30763 return this; 30764 }, 30765 next: function next(e) { 30766 return this.length > 0 ? e ? this[0].nextElementSibling && d(this[0].nextElementSibling).is(e) ? d([this[0].nextElementSibling]) : d([]) : this[0].nextElementSibling ? d([this[0].nextElementSibling]) : d([]) : d([]); 30767 }, 30768 nextAll: function nextAll(e) { 30769 var t = []; 30770 var s = this[0]; 30771 if (!s) return d([]); 30772 for (; s.nextElementSibling;) { 30773 var _a4 = s.nextElementSibling; 30774 e ? d(_a4).is(e) && t.push(_a4) : t.push(_a4), s = _a4; 30775 } 30776 return d(t); 30777 }, 30778 prev: function prev(e) { 30779 if (this.length > 0) { 30780 var _t13 = this[0]; 30781 return e ? _t13.previousElementSibling && d(_t13.previousElementSibling).is(e) ? d([_t13.previousElementSibling]) : d([]) : _t13.previousElementSibling ? d([_t13.previousElementSibling]) : d([]); 30782 } 30783 return d([]); 30784 }, 30785 prevAll: function prevAll(e) { 30786 var t = []; 30787 var s = this[0]; 30788 if (!s) return d([]); 30789 for (; s.previousElementSibling;) { 30790 var _a5 = s.previousElementSibling; 30791 e ? d(_a5).is(e) && t.push(_a5) : t.push(_a5), s = _a5; 30792 } 30793 return d(t); 30794 }, 30795 parent: function parent(e) { 30796 var t = []; 30797 for (var _s10 = 0; _s10 < this.length; _s10 += 1) { 30798 null !== this[_s10].parentNode && (e ? d(this[_s10].parentNode).is(e) && t.push(this[_s10].parentNode) : t.push(this[_s10].parentNode)); 30799 } 30800 return d(t); 30801 }, 30802 parents: function parents(e) { 30803 var t = []; 30804 for (var _s11 = 0; _s11 < this.length; _s11 += 1) { 30805 var _a6 = this[_s11].parentNode; 30806 for (; _a6;) { 30807 e ? d(_a6).is(e) && t.push(_a6) : t.push(_a6), _a6 = _a6.parentNode; 30808 } 30809 } 30810 return d(t); 30811 }, 30812 closest: function closest(e) { 30813 var t = this; 30814 return void 0 === e ? d([]) : (t.is(e) || (t = t.parents(e).eq(0)), t); 30815 }, 30816 find: function find(e) { 30817 var t = []; 30818 for (var _s12 = 0; _s12 < this.length; _s12 += 1) { 30819 var _a7 = this[_s12].querySelectorAll(e); 30820 for (var _e19 = 0; _e19 < _a7.length; _e19 += 1) { 30821 t.push(_a7[_e19]); 30822 } 30823 } 30824 return d(t); 30825 }, 30826 children: function children(e) { 30827 var t = []; 30828 for (var _s13 = 0; _s13 < this.length; _s13 += 1) { 30829 var _a8 = this[_s13].children; 30830 for (var _s14 = 0; _s14 < _a8.length; _s14 += 1) { 30831 e && !d(_a8[_s14]).is(e) || t.push(_a8[_s14]); 30832 } 30833 } 30834 return d(t); 30835 }, 30836 filter: function filter(e) { 30837 return d(o(this, e)); 30838 }, 30839 remove: function remove() { 30840 for (var _e20 = 0; _e20 < this.length; _e20 += 1) { 30841 this[_e20].parentNode && this[_e20].parentNode.removeChild(this[_e20]); 30842 } 30843 return this; 30844 } 30845 }; 30846 function p(e) { 30847 var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; 30848 return setTimeout(e, t); 30849 } 30850 function u() { 30851 return Date.now(); 30852 } 30853 function h(e) { 30854 var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "x"; 30855 var s = r(); 30856 var a, i, n; 30857 var l = function (e) { 30858 var t = r(); 30859 var s; 30860 return t.getComputedStyle && (s = t.getComputedStyle(e, null)), !s && e.currentStyle && (s = e.currentStyle), s || (s = e.style), s; 30861 }(e); 30862 return s.WebKitCSSMatrix ? (i = l.transform || l.webkitTransform, i.split(",").length > 6 && (i = i.split(", ").map(function (e) { 30863 return e.replace(",", "."); 30864 }).join(", ")), n = new s.WebKitCSSMatrix("none" === i ? "" : i)) : (n = l.MozTransform || l.OTransform || l.MsTransform || l.msTransform || l.transform || l.getPropertyValue("transform").replace("translate(", "matrix(1, 0, 0, 1,"), a = n.toString().split(",")), "x" === t && (i = s.WebKitCSSMatrix ? n.m41 : 16 === a.length ? parseFloat(a[12]) : parseFloat(a[4])), "y" === t && (i = s.WebKitCSSMatrix ? n.m42 : 16 === a.length ? parseFloat(a[13]) : parseFloat(a[5])), i || 0; 30865 } 30866 function m(e) { 30867 return "object" == _typeof(e) && null !== e && e.constructor && "Object" === Object.prototype.toString.call(e).slice(8, -1); 30868 } 30869 function f() { 30870 var t = Object(arguments.length <= 0 ? undefined : arguments[0]), 30871 s = ["__proto__", "constructor", "prototype"]; 30872 for (var _i5 = 1; _i5 < arguments.length; _i5 += 1) { 30873 var _r4 = _i5 < 0 || arguments.length <= _i5 ? undefined : arguments[_i5]; 30874 if (null != _r4 && (a = _r4, !("undefined" != typeof window && void 0 !== window.HTMLElement ? a instanceof HTMLElement : a && (1 === a.nodeType || 11 === a.nodeType)))) { 30875 var _e21 = Object.keys(Object(_r4)).filter(function (e) { 30876 return s.indexOf(e) < 0; 30877 }); 30878 for (var _s15 = 0, _a9 = _e21.length; _s15 < _a9; _s15 += 1) { 30879 var _a10 = _e21[_s15], 30880 _i6 = Object.getOwnPropertyDescriptor(_r4, _a10); 30881 void 0 !== _i6 && _i6.enumerable && (m(t[_a10]) && m(_r4[_a10]) ? _r4[_a10].__swiper__ ? t[_a10] = _r4[_a10] : f(t[_a10], _r4[_a10]) : !m(t[_a10]) && m(_r4[_a10]) ? (t[_a10] = {}, _r4[_a10].__swiper__ ? t[_a10] = _r4[_a10] : f(t[_a10], _r4[_a10])) : t[_a10] = _r4[_a10]); 30882 } 30883 } 30884 } 30885 var a; 30886 return t; 30887 } 30888 function g(e, t, s) { 30889 e.style.setProperty(t, s); 30890 } 30891 function v(_ref) { 30892 var e = _ref.swiper, 30893 t = _ref.targetPosition, 30894 s = _ref.side; 30895 var a = r(), 30896 i = -e.translate; 30897 var n, 30898 l = null; 30899 var o = e.params.speed; 30900 e.wrapperEl.style.scrollSnapType = "none", a.cancelAnimationFrame(e.cssModeFrameID); 30901 var d = t > i ? "next" : "prev", 30902 c = function c(e, t) { 30903 return "next" === d && e >= t || "prev" === d && e <= t; 30904 }, 30905 p = function p() { 30906 n = new Date().getTime(), null === l && (l = n); 30907 var r = Math.max(Math.min((n - l) / o, 1), 0), 30908 d = .5 - Math.cos(r * Math.PI) / 2; 30909 var u = i + d * (t - i); 30910 if (c(u, t) && (u = t), e.wrapperEl.scrollTo(_defineProperty({}, s, u)), c(u, t)) return e.wrapperEl.style.overflow = "hidden", e.wrapperEl.style.scrollSnapType = "", setTimeout(function () { 30911 e.wrapperEl.style.overflow = "", e.wrapperEl.scrollTo(_defineProperty({}, s, u)); 30912 }), void a.cancelAnimationFrame(e.cssModeFrameID); 30913 e.cssModeFrameID = a.requestAnimationFrame(p); 30914 }; 30915 p(); 30916 } 30917 var w, b, x; 30918 function y() { 30919 return w || (w = function () { 30920 var e = r(), 30921 t = a(); 30922 return { 30923 smoothScroll: t.documentElement && "scrollBehavior" in t.documentElement.style, 30924 touch: !!("ontouchstart" in e || e.DocumentTouch && t instanceof e.DocumentTouch), 30925 passiveListener: function () { 30926 var t = !1; 30927 try { 30928 var _s16 = Object.defineProperty({}, "passive", { 30929 get: function get() { 30930 t = !0; 30931 } 30932 }); 30933 e.addEventListener("testPassiveListener", null, _s16); 30934 } catch (e) {} 30935 return t; 30936 }(), 30937 gestures: "ongesturestart" in e 30938 }; 30939 }()), w; 30940 } 30941 function E() { 30942 var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 30943 return b || (b = function () { 30944 var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, 30945 e = _ref2.userAgent; 30946 var t = y(), 30947 s = r(), 30948 a = s.navigator.platform, 30949 i = e || s.navigator.userAgent, 30950 n = { 30951 ios: !1, 30952 android: !1 30953 }, 30954 l = s.screen.width, 30955 o = s.screen.height, 30956 d = i.match(/(Android);?[\s\/]+([\d.]+)?/); 30957 var c = i.match(/(iPad).*OS\s([\d_]+)/); 30958 var p = i.match(/(iPod)(.*OS\s([\d_]+))?/), 30959 u = !c && i.match(/(iPhone\sOS|iOS)\s([\d_]+)/), 30960 h = "Win32" === a; 30961 var m = "MacIntel" === a; 30962 return !c && m && t.touch && ["1024x1366", "1366x1024", "834x1194", "1194x834", "834x1112", "1112x834", "768x1024", "1024x768", "820x1180", "1180x820", "810x1080", "1080x810"].indexOf("".concat(l, "x").concat(o)) >= 0 && (c = i.match(/(Version)\/([\d.]+)/), c || (c = [0, 1, "13_0_0"]), m = !1), d && !h && (n.os = "android", n.android = !0), (c || u || p) && (n.os = "ios", n.ios = !0), n; 30963 }(e)), b; 30964 } 30965 function T() { 30966 return x || (x = function () { 30967 var e = r(); 30968 return { 30969 isSafari: function () { 30970 var t = e.navigator.userAgent.toLowerCase(); 30971 return t.indexOf("safari") >= 0 && t.indexOf("chrome") < 0 && t.indexOf("android") < 0; 30972 }(), 30973 isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent) 30974 }; 30975 }()), x; 30976 } 30977 Object.keys(c).forEach(function (e) { 30978 Object.defineProperty(d.fn, e, { 30979 value: c[e], 30980 writable: !0 30981 }); 30982 }); 30983 var C = { 30984 on: function on(e, t, s) { 30985 var a = this; 30986 if ("function" != typeof t) return a; 30987 var i = s ? "unshift" : "push"; 30988 return e.split(" ").forEach(function (e) { 30989 a.eventsListeners[e] || (a.eventsListeners[e] = []), a.eventsListeners[e][i](t); 30990 }), a; 30991 }, 30992 once: function once(e, t, s) { 30993 var a = this; 30994 if ("function" != typeof t) return a; 30995 function i() { 30996 for (var _len8 = arguments.length, s = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { 30997 s[_key8] = arguments[_key8]; 30998 } 30999 a.off(e, i), i.__emitterProxy && delete i.__emitterProxy, t.apply(a, s); 31000 } 31001 return i.__emitterProxy = t, a.on(e, i, s); 31002 }, 31003 onAny: function onAny(e, t) { 31004 var s = this; 31005 if ("function" != typeof e) return s; 31006 var a = t ? "unshift" : "push"; 31007 return s.eventsAnyListeners.indexOf(e) < 0 && s.eventsAnyListeners[a](e), s; 31008 }, 31009 offAny: function offAny(e) { 31010 var t = this; 31011 if (!t.eventsAnyListeners) return t; 31012 var s = t.eventsAnyListeners.indexOf(e); 31013 return s >= 0 && t.eventsAnyListeners.splice(s, 1), t; 31014 }, 31015 off: function off(e, t) { 31016 var s = this; 31017 return s.eventsListeners ? (e.split(" ").forEach(function (e) { 31018 void 0 === t ? s.eventsListeners[e] = [] : s.eventsListeners[e] && s.eventsListeners[e].forEach(function (a, i) { 31019 (a === t || a.__emitterProxy && a.__emitterProxy === t) && s.eventsListeners[e].splice(i, 1); 31020 }); 31021 }), s) : s; 31022 }, 31023 emit: function emit() { 31024 var t = this; 31025 if (!t.eventsListeners) return t; 31026 var s, a, i; 31027 for (var _len9 = arguments.length, e = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) { 31028 e[_key9] = arguments[_key9]; 31029 } 31030 "string" == typeof e[0] || Array.isArray(e[0]) ? (s = e[0], a = e.slice(1, e.length), i = t) : (s = e[0].events, a = e[0].data, i = e[0].context || t), a.unshift(i); 31031 return (Array.isArray(s) ? s : s.split(" ")).forEach(function (e) { 31032 t.eventsAnyListeners && t.eventsAnyListeners.length && t.eventsAnyListeners.forEach(function (t) { 31033 t.apply(i, [e].concat(_toConsumableArray(a))); 31034 }), t.eventsListeners && t.eventsListeners[e] && t.eventsListeners[e].forEach(function (e) { 31035 e.apply(i, a); 31036 }); 31037 }), t; 31038 } 31039 }; 31040 function $(_ref3) { 31041 var e = _ref3.swiper, 31042 t = _ref3.runCallbacks, 31043 s = _ref3.direction, 31044 a = _ref3.step; 31045 var i = e.activeIndex, 31046 r = e.previousIndex; 31047 var n = s; 31048 if (n || (n = i > r ? "next" : i < r ? "prev" : "reset"), e.emit("transition".concat(a)), t && i !== r) { 31049 if ("reset" === n) return void e.emit("slideResetTransition".concat(a)); 31050 e.emit("slideChangeTransition".concat(a)), "next" === n ? e.emit("slideNextTransition".concat(a)) : e.emit("slidePrevTransition".concat(a)); 31051 } 31052 } 31053 function S(e) { 31054 var t = this, 31055 s = a(), 31056 i = r(), 31057 n = t.touchEventsData, 31058 l = t.params, 31059 o = t.touches, 31060 c = t.enabled; 31061 if (!c) return; 31062 if (t.animating && l.preventInteractionOnTransition) return; 31063 !t.animating && l.cssMode && l.loop && t.loopFix(); 31064 var p = e; 31065 p.originalEvent && (p = p.originalEvent); 31066 var h = d(p.target); 31067 if ("wrapper" === l.touchEventsTarget && !h.closest(t.wrapperEl).length) return; 31068 if (n.isTouchEvent = "touchstart" === p.type, !n.isTouchEvent && "which" in p && 3 === p.which) return; 31069 if (!n.isTouchEvent && "button" in p && p.button > 0) return; 31070 if (n.isTouched && n.isMoved) return; 31071 !!l.noSwipingClass && "" !== l.noSwipingClass && p.target && p.target.shadowRoot && e.path && e.path[0] && (h = d(e.path[0])); 31072 var m = l.noSwipingSelector ? l.noSwipingSelector : ".".concat(l.noSwipingClass), 31073 f = !(!p.target || !p.target.shadowRoot); 31074 if (l.noSwiping && (f ? function (e) { 31075 var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this; 31076 return function t(s) { 31077 return s && s !== a() && s !== r() ? (s.assignedSlot && (s = s.assignedSlot), s.closest(e) || t(s.getRootNode().host)) : null; 31078 }(t); 31079 }(m, p.target) : h.closest(m)[0])) return void (t.allowClick = !0); 31080 if (l.swipeHandler && !h.closest(l.swipeHandler)[0]) return; 31081 o.currentX = "touchstart" === p.type ? p.targetTouches[0].pageX : p.pageX, o.currentY = "touchstart" === p.type ? p.targetTouches[0].pageY : p.pageY; 31082 var g = o.currentX, 31083 v = o.currentY, 31084 w = l.edgeSwipeDetection || l.iOSEdgeSwipeDetection, 31085 b = l.edgeSwipeThreshold || l.iOSEdgeSwipeThreshold; 31086 if (w && (g <= b || g >= i.innerWidth - b)) { 31087 if ("prevent" !== w) return; 31088 e.preventDefault(); 31089 } 31090 if (Object.assign(n, { 31091 isTouched: !0, 31092 isMoved: !1, 31093 allowTouchCallbacks: !0, 31094 isScrolling: void 0, 31095 startMoving: void 0 31096 }), o.startX = g, o.startY = v, n.touchStartTime = u(), t.allowClick = !0, t.updateSize(), t.swipeDirection = void 0, l.threshold > 0 && (n.allowThresholdMove = !1), "touchstart" !== p.type) { 31097 var _e22 = !0; 31098 h.is(n.focusableElements) && (_e22 = !1), s.activeElement && d(s.activeElement).is(n.focusableElements) && s.activeElement !== h[0] && s.activeElement.blur(); 31099 var _a11 = _e22 && t.allowTouchMove && l.touchStartPreventDefault; 31100 !l.touchStartForcePreventDefault && !_a11 || h[0].isContentEditable || p.preventDefault(); 31101 } 31102 t.emit("touchStart", p); 31103 } 31104 function M(e) { 31105 var t = a(), 31106 s = this, 31107 i = s.touchEventsData, 31108 r = s.params, 31109 n = s.touches, 31110 l = s.rtlTranslate, 31111 o = s.enabled; 31112 if (!o) return; 31113 var c = e; 31114 if (c.originalEvent && (c = c.originalEvent), !i.isTouched) return void (i.startMoving && i.isScrolling && s.emit("touchMoveOpposite", c)); 31115 if (i.isTouchEvent && "touchmove" !== c.type) return; 31116 var p = "touchmove" === c.type && c.targetTouches && (c.targetTouches[0] || c.changedTouches[0]), 31117 h = "touchmove" === c.type ? p.pageX : c.pageX, 31118 m = "touchmove" === c.type ? p.pageY : c.pageY; 31119 if (c.preventedByNestedSwiper) return n.startX = h, void (n.startY = m); 31120 if (!s.allowTouchMove) return s.allowClick = !1, void (i.isTouched && (Object.assign(n, { 31121 startX: h, 31122 startY: m, 31123 currentX: h, 31124 currentY: m 31125 }), i.touchStartTime = u())); 31126 if (i.isTouchEvent && r.touchReleaseOnEdges && !r.loop) if (s.isVertical()) { 31127 if (m < n.startY && s.translate <= s.maxTranslate() || m > n.startY && s.translate >= s.minTranslate()) return i.isTouched = !1, void (i.isMoved = !1); 31128 } else if (h < n.startX && s.translate <= s.maxTranslate() || h > n.startX && s.translate >= s.minTranslate()) return; 31129 if (i.isTouchEvent && t.activeElement && c.target === t.activeElement && d(c.target).is(i.focusableElements)) return i.isMoved = !0, void (s.allowClick = !1); 31130 if (i.allowTouchCallbacks && s.emit("touchMove", c), c.targetTouches && c.targetTouches.length > 1) return; 31131 n.currentX = h, n.currentY = m; 31132 var f = n.currentX - n.startX, 31133 g = n.currentY - n.startY; 31134 if (s.params.threshold && Math.sqrt(Math.pow(f, 2) + Math.pow(g, 2)) < s.params.threshold) return; 31135 if (void 0 === i.isScrolling) { 31136 var _e23; 31137 s.isHorizontal() && n.currentY === n.startY || s.isVertical() && n.currentX === n.startX ? i.isScrolling = !1 : f * f + g * g >= 25 && (_e23 = 180 * Math.atan2(Math.abs(g), Math.abs(f)) / Math.PI, i.isScrolling = s.isHorizontal() ? _e23 > r.touchAngle : 90 - _e23 > r.touchAngle); 31138 } 31139 if (i.isScrolling && s.emit("touchMoveOpposite", c), void 0 === i.startMoving && (n.currentX === n.startX && n.currentY === n.startY || (i.startMoving = !0)), i.isScrolling) return void (i.isTouched = !1); 31140 if (!i.startMoving) return; 31141 s.allowClick = !1, !r.cssMode && c.cancelable && c.preventDefault(), r.touchMoveStopPropagation && !r.nested && c.stopPropagation(), i.isMoved || (r.loop && !r.cssMode && s.loopFix(), i.startTranslate = s.getTranslate(), s.setTransition(0), s.animating && s.$wrapperEl.trigger("webkitTransitionEnd transitionend"), i.allowMomentumBounce = !1, !r.grabCursor || !0 !== s.allowSlideNext && !0 !== s.allowSlidePrev || s.setGrabCursor(!0), s.emit("sliderFirstMove", c)), s.emit("sliderMove", c), i.isMoved = !0; 31142 var v = s.isHorizontal() ? f : g; 31143 n.diff = v, v *= r.touchRatio, l && (v = -v), s.swipeDirection = v > 0 ? "prev" : "next", i.currentTranslate = v + i.startTranslate; 31144 var w = !0, 31145 b = r.resistanceRatio; 31146 if (r.touchReleaseOnEdges && (b = 0), v > 0 && i.currentTranslate > s.minTranslate() ? (w = !1, r.resistance && (i.currentTranslate = s.minTranslate() - 1 + Math.pow(-s.minTranslate() + i.startTranslate + v, b))) : v < 0 && i.currentTranslate < s.maxTranslate() && (w = !1, r.resistance && (i.currentTranslate = s.maxTranslate() + 1 - Math.pow(s.maxTranslate() - i.startTranslate - v, b))), w && (c.preventedByNestedSwiper = !0), !s.allowSlideNext && "next" === s.swipeDirection && i.currentTranslate < i.startTranslate && (i.currentTranslate = i.startTranslate), !s.allowSlidePrev && "prev" === s.swipeDirection && i.currentTranslate > i.startTranslate && (i.currentTranslate = i.startTranslate), s.allowSlidePrev || s.allowSlideNext || (i.currentTranslate = i.startTranslate), r.threshold > 0) { 31147 if (!(Math.abs(v) > r.threshold || i.allowThresholdMove)) return void (i.currentTranslate = i.startTranslate); 31148 if (!i.allowThresholdMove) return i.allowThresholdMove = !0, n.startX = n.currentX, n.startY = n.currentY, i.currentTranslate = i.startTranslate, void (n.diff = s.isHorizontal() ? n.currentX - n.startX : n.currentY - n.startY); 31149 } 31150 r.followFinger && !r.cssMode && ((r.freeMode && r.freeMode.enabled && s.freeMode || r.watchSlidesProgress) && (s.updateActiveIndex(), s.updateSlidesClasses()), s.params.freeMode && r.freeMode.enabled && s.freeMode && s.freeMode.onTouchMove(), s.updateProgress(i.currentTranslate), s.setTranslate(i.currentTranslate)); 31151 } 31152 function P(e) { 31153 var t = this, 31154 s = t.touchEventsData, 31155 a = t.params, 31156 i = t.touches, 31157 r = t.rtlTranslate, 31158 n = t.slidesGrid, 31159 l = t.enabled; 31160 if (!l) return; 31161 var o = e; 31162 if (o.originalEvent && (o = o.originalEvent), s.allowTouchCallbacks && t.emit("touchEnd", o), s.allowTouchCallbacks = !1, !s.isTouched) return s.isMoved && a.grabCursor && t.setGrabCursor(!1), s.isMoved = !1, void (s.startMoving = !1); 31163 a.grabCursor && s.isMoved && s.isTouched && (!0 === t.allowSlideNext || !0 === t.allowSlidePrev) && t.setGrabCursor(!1); 31164 var d = u(), 31165 c = d - s.touchStartTime; 31166 if (t.allowClick && (t.updateClickedSlide(o), t.emit("tap click", o), c < 300 && d - s.lastClickTime < 300 && t.emit("doubleTap doubleClick", o)), s.lastClickTime = u(), p(function () { 31167 t.destroyed || (t.allowClick = !0); 31168 }), !s.isTouched || !s.isMoved || !t.swipeDirection || 0 === i.diff || s.currentTranslate === s.startTranslate) return s.isTouched = !1, s.isMoved = !1, void (s.startMoving = !1); 31169 var h; 31170 if (s.isTouched = !1, s.isMoved = !1, s.startMoving = !1, h = a.followFinger ? r ? t.translate : -t.translate : -s.currentTranslate, a.cssMode) return; 31171 if (t.params.freeMode && a.freeMode.enabled) return void t.freeMode.onTouchEnd({ 31172 currentPos: h 31173 }); 31174 var m = 0, 31175 f = t.slidesSizesGrid[0]; 31176 for (var _e24 = 0; _e24 < n.length; _e24 += _e24 < a.slidesPerGroupSkip ? 1 : a.slidesPerGroup) { 31177 var _t14 = _e24 < a.slidesPerGroupSkip - 1 ? 1 : a.slidesPerGroup; 31178 void 0 !== n[_e24 + _t14] ? h >= n[_e24] && h < n[_e24 + _t14] && (m = _e24, f = n[_e24 + _t14] - n[_e24]) : h >= n[_e24] && (m = _e24, f = n[n.length - 1] - n[n.length - 2]); 31179 } 31180 var g = (h - n[m]) / f, 31181 v = m < a.slidesPerGroupSkip - 1 ? 1 : a.slidesPerGroup; 31182 if (c > a.longSwipesMs) { 31183 if (!a.longSwipes) return void t.slideTo(t.activeIndex); 31184 "next" === t.swipeDirection && (g >= a.longSwipesRatio ? t.slideTo(m + v) : t.slideTo(m)), "prev" === t.swipeDirection && (g > 1 - a.longSwipesRatio ? t.slideTo(m + v) : t.slideTo(m)); 31185 } else { 31186 if (!a.shortSwipes) return void t.slideTo(t.activeIndex); 31187 t.navigation && (o.target === t.navigation.nextEl || o.target === t.navigation.prevEl) ? o.target === t.navigation.nextEl ? t.slideTo(m + v) : t.slideTo(m) : ("next" === t.swipeDirection && t.slideTo(m + v), "prev" === t.swipeDirection && t.slideTo(m)); 31188 } 31189 } 31190 function k() { 31191 var e = this, 31192 t = e.params, 31193 s = e.el; 31194 if (s && 0 === s.offsetWidth) return; 31195 t.breakpoints && e.setBreakpoint(); 31196 var a = e.allowSlideNext, 31197 i = e.allowSlidePrev, 31198 r = e.snapGrid; 31199 e.allowSlideNext = !0, e.allowSlidePrev = !0, e.updateSize(), e.updateSlides(), e.updateSlidesClasses(), ("auto" === t.slidesPerView || t.slidesPerView > 1) && e.isEnd && !e.isBeginning && !e.params.centeredSlides ? e.slideTo(e.slides.length - 1, 0, !1, !0) : e.slideTo(e.activeIndex, 0, !1, !0), e.autoplay && e.autoplay.running && e.autoplay.paused && e.autoplay.run(), e.allowSlidePrev = i, e.allowSlideNext = a, e.params.watchOverflow && r !== e.snapGrid && e.checkOverflow(); 31200 } 31201 function z(e) { 31202 var t = this; 31203 t.enabled && (t.allowClick || (t.params.preventClicks && e.preventDefault(), t.params.preventClicksPropagation && t.animating && (e.stopPropagation(), e.stopImmediatePropagation()))); 31204 } 31205 function O() { 31206 var e = this, 31207 t = e.wrapperEl, 31208 s = e.rtlTranslate, 31209 a = e.enabled; 31210 if (!a) return; 31211 var i; 31212 e.previousTranslate = e.translate, e.isHorizontal() ? e.translate = -t.scrollLeft : e.translate = -t.scrollTop, -0 === e.translate && (e.translate = 0), e.updateActiveIndex(), e.updateSlidesClasses(); 31213 var r = e.maxTranslate() - e.minTranslate(); 31214 i = 0 === r ? 0 : (e.translate - e.minTranslate()) / r, i !== e.progress && e.updateProgress(s ? -e.translate : e.translate), e.emit("setTranslate", e.translate, !1); 31215 } 31216 var I = !1; 31217 function L() {} 31218 var A = function A(e, t) { 31219 var s = a(), 31220 i = e.params, 31221 r = e.touchEvents, 31222 n = e.el, 31223 l = e.wrapperEl, 31224 o = e.device, 31225 d = e.support, 31226 c = !!i.nested, 31227 p = "on" === t ? "addEventListener" : "removeEventListener", 31228 u = t; 31229 if (d.touch) { 31230 var _t15 = !("touchstart" !== r.start || !d.passiveListener || !i.passiveListeners) && { 31231 passive: !0, 31232 capture: !1 31233 }; 31234 n[p](r.start, e.onTouchStart, _t15), n[p](r.move, e.onTouchMove, d.passiveListener ? { 31235 passive: !1, 31236 capture: c 31237 } : c), n[p](r.end, e.onTouchEnd, _t15), r.cancel && n[p](r.cancel, e.onTouchEnd, _t15); 31238 } else n[p](r.start, e.onTouchStart, !1), s[p](r.move, e.onTouchMove, c), s[p](r.end, e.onTouchEnd, !1); 31239 (i.preventClicks || i.preventClicksPropagation) && n[p]("click", e.onClick, !0), i.cssMode && l[p]("scroll", e.onScroll), i.updateOnWindowResize ? e[u](o.ios || o.android ? "resize orientationchange observerUpdate" : "resize observerUpdate", k, !0) : e[u]("observerUpdate", k, !0); 31240 }; 31241 var D = function D(e, t) { 31242 return e.grid && t.grid && t.grid.rows > 1; 31243 }; 31244 var G = { 31245 init: !0, 31246 direction: "horizontal", 31247 touchEventsTarget: "wrapper", 31248 initialSlide: 0, 31249 speed: 300, 31250 cssMode: !1, 31251 updateOnWindowResize: !0, 31252 resizeObserver: !0, 31253 nested: !1, 31254 createElements: !1, 31255 enabled: !0, 31256 focusableElements: "input, select, option, textarea, button, video, label", 31257 width: null, 31258 height: null, 31259 preventInteractionOnTransition: !1, 31260 userAgent: null, 31261 url: null, 31262 edgeSwipeDetection: !1, 31263 edgeSwipeThreshold: 20, 31264 autoHeight: !1, 31265 setWrapperSize: !1, 31266 virtualTranslate: !1, 31267 effect: "slide", 31268 breakpoints: void 0, 31269 breakpointsBase: "window", 31270 spaceBetween: 0, 31271 slidesPerView: 1, 31272 slidesPerGroup: 1, 31273 slidesPerGroupSkip: 0, 31274 slidesPerGroupAuto: !1, 31275 centeredSlides: !1, 31276 centeredSlidesBounds: !1, 31277 slidesOffsetBefore: 0, 31278 slidesOffsetAfter: 0, 31279 normalizeSlideIndex: !0, 31280 centerInsufficientSlides: !1, 31281 watchOverflow: !0, 31282 roundLengths: !1, 31283 touchRatio: 1, 31284 touchAngle: 45, 31285 simulateTouch: !0, 31286 shortSwipes: !0, 31287 longSwipes: !0, 31288 longSwipesRatio: .5, 31289 longSwipesMs: 300, 31290 followFinger: !0, 31291 allowTouchMove: !0, 31292 threshold: 0, 31293 touchMoveStopPropagation: !1, 31294 touchStartPreventDefault: !0, 31295 touchStartForcePreventDefault: !1, 31296 touchReleaseOnEdges: !1, 31297 uniqueNavElements: !0, 31298 resistance: !0, 31299 resistanceRatio: .85, 31300 watchSlidesProgress: !1, 31301 grabCursor: !1, 31302 preventClicks: !0, 31303 preventClicksPropagation: !0, 31304 slideToClickedSlide: !1, 31305 preloadImages: !0, 31306 updateOnImagesReady: !0, 31307 loop: !1, 31308 loopAdditionalSlides: 0, 31309 loopedSlides: null, 31310 loopFillGroupWithBlank: !1, 31311 loopPreventsSlide: !0, 31312 allowSlidePrev: !0, 31313 allowSlideNext: !0, 31314 swipeHandler: null, 31315 noSwiping: !0, 31316 noSwipingClass: "swiper-no-swiping", 31317 noSwipingSelector: null, 31318 passiveListeners: !0, 31319 containerModifierClass: "swiper-", 31320 slideClass: "swiper-slide", 31321 slideBlankClass: "swiper-slide-invisible-blank", 31322 slideActiveClass: "swiper-slide-active", 31323 slideDuplicateActiveClass: "swiper-slide-duplicate-active", 31324 slideVisibleClass: "swiper-slide-visible", 31325 slideDuplicateClass: "swiper-slide-duplicate", 31326 slideNextClass: "swiper-slide-next", 31327 slideDuplicateNextClass: "swiper-slide-duplicate-next", 31328 slidePrevClass: "swiper-slide-prev", 31329 slideDuplicatePrevClass: "swiper-slide-duplicate-prev", 31330 wrapperClass: "swiper-wrapper", 31331 runCallbacksOnInit: !0, 31332 _emitClasses: !1 31333 }; 31334 function N(e, t) { 31335 return function () { 31336 var s = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 31337 var a = Object.keys(s)[0], 31338 i = s[a]; 31339 "object" == _typeof(i) && null !== i ? (["navigation", "pagination", "scrollbar"].indexOf(a) >= 0 && !0 === e[a] && (e[a] = { 31340 auto: !0 31341 }), a in e && "enabled" in i ? (!0 === e[a] && (e[a] = { 31342 enabled: !0 31343 }), "object" != _typeof(e[a]) || "enabled" in e[a] || (e[a].enabled = !0), e[a] || (e[a] = { 31344 enabled: !1 31345 }), f(t, s)) : f(t, s)) : f(t, s); 31346 }; 31347 } 31348 var B = { 31349 eventsEmitter: C, 31350 update: { 31351 updateSize: function updateSize() { 31352 var e = this; 31353 var t, s; 31354 var a = e.$el; 31355 t = void 0 !== e.params.width && null !== e.params.width ? e.params.width : a[0].clientWidth, s = void 0 !== e.params.height && null !== e.params.height ? e.params.height : a[0].clientHeight, 0 === t && e.isHorizontal() || 0 === s && e.isVertical() || (t = t - parseInt(a.css("padding-left") || 0, 10) - parseInt(a.css("padding-right") || 0, 10), s = s - parseInt(a.css("padding-top") || 0, 10) - parseInt(a.css("padding-bottom") || 0, 10), Number.isNaN(t) && (t = 0), Number.isNaN(s) && (s = 0), Object.assign(e, { 31356 width: t, 31357 height: s, 31358 size: e.isHorizontal() ? t : s 31359 })); 31360 }, 31361 updateSlides: function updateSlides() { 31362 var e = this; 31363 function t(t) { 31364 return e.isHorizontal() ? t : { 31365 width: "height", 31366 "margin-top": "margin-left", 31367 "margin-bottom ": "margin-right", 31368 "margin-left": "margin-top", 31369 "margin-right": "margin-bottom", 31370 "padding-left": "padding-top", 31371 "padding-right": "padding-bottom", 31372 marginRight: "marginBottom" 31373 }[t]; 31374 } 31375 function s(e, s) { 31376 return parseFloat(e.getPropertyValue(t(s)) || 0); 31377 } 31378 var a = e.params, 31379 i = e.$wrapperEl, 31380 r = e.size, 31381 n = e.rtlTranslate, 31382 l = e.wrongRTL, 31383 o = e.virtual && a.virtual.enabled, 31384 d = o ? e.virtual.slides.length : e.slides.length, 31385 c = i.children(".".concat(e.params.slideClass)), 31386 p = o ? e.virtual.slides.length : c.length; 31387 var u = []; 31388 var h = [], 31389 m = []; 31390 var f = a.slidesOffsetBefore; 31391 "function" == typeof f && (f = a.slidesOffsetBefore.call(e)); 31392 var v = a.slidesOffsetAfter; 31393 "function" == typeof v && (v = a.slidesOffsetAfter.call(e)); 31394 var w = e.snapGrid.length, 31395 b = e.slidesGrid.length; 31396 var x = a.spaceBetween, 31397 y = -f, 31398 E = 0, 31399 T = 0; 31400 if (void 0 === r) return; 31401 "string" == typeof x && x.indexOf("%") >= 0 && (x = parseFloat(x.replace("%", "")) / 100 * r), e.virtualSize = -x, n ? c.css({ 31402 marginLeft: "", 31403 marginBottom: "", 31404 marginTop: "" 31405 }) : c.css({ 31406 marginRight: "", 31407 marginBottom: "", 31408 marginTop: "" 31409 }), a.centeredSlides && a.cssMode && (g(e.wrapperEl, "--swiper-centered-offset-before", ""), g(e.wrapperEl, "--swiper-centered-offset-after", "")); 31410 var C = a.grid && a.grid.rows > 1 && e.grid; 31411 var $; 31412 C && e.grid.initSlides(p); 31413 var S = "auto" === a.slidesPerView && a.breakpoints && Object.keys(a.breakpoints).filter(function (e) { 31414 return void 0 !== a.breakpoints[e].slidesPerView; 31415 }).length > 0; 31416 for (var _i7 = 0; _i7 < p; _i7 += 1) { 31417 $ = 0; 31418 var _n4 = c.eq(_i7); 31419 if (C && e.grid.updateSlide(_i7, _n4, p, t), "none" !== _n4.css("display")) { 31420 if ("auto" === a.slidesPerView) { 31421 S && (c[_i7].style[t("width")] = ""); 31422 var _r5 = getComputedStyle(_n4[0]), 31423 _l2 = _n4[0].style.transform, 31424 _o2 = _n4[0].style.webkitTransform; 31425 if (_l2 && (_n4[0].style.transform = "none"), _o2 && (_n4[0].style.webkitTransform = "none"), a.roundLengths) $ = e.isHorizontal() ? _n4.outerWidth(!0) : _n4.outerHeight(!0);else { 31426 var _e25 = s(_r5, "width"), 31427 _t16 = s(_r5, "padding-left"), 31428 _a12 = s(_r5, "padding-right"), 31429 _i8 = s(_r5, "margin-left"), 31430 _l3 = s(_r5, "margin-right"), 31431 _o3 = _r5.getPropertyValue("box-sizing"); 31432 if (_o3 && "border-box" === _o3) $ = _e25 + _i8 + _l3;else { 31433 var _n4$ = _n4[0], 31434 _s17 = _n4$.clientWidth, 31435 _r6 = _n4$.offsetWidth; 31436 $ = _e25 + _t16 + _a12 + _i8 + _l3 + (_r6 - _s17); 31437 } 31438 } 31439 _l2 && (_n4[0].style.transform = _l2), _o2 && (_n4[0].style.webkitTransform = _o2), a.roundLengths && ($ = Math.floor($)); 31440 } else $ = (r - (a.slidesPerView - 1) * x) / a.slidesPerView, a.roundLengths && ($ = Math.floor($)), c[_i7] && (c[_i7].style[t("width")] = "".concat($, "px")); 31441 c[_i7] && (c[_i7].swiperSlideSize = $), m.push($), a.centeredSlides ? (y = y + $ / 2 + E / 2 + x, 0 === E && 0 !== _i7 && (y = y - r / 2 - x), 0 === _i7 && (y = y - r / 2 - x), Math.abs(y) < .001 && (y = 0), a.roundLengths && (y = Math.floor(y)), T % a.slidesPerGroup == 0 && u.push(y), h.push(y)) : (a.roundLengths && (y = Math.floor(y)), (T - Math.min(e.params.slidesPerGroupSkip, T)) % e.params.slidesPerGroup == 0 && u.push(y), h.push(y), y = y + $ + x), e.virtualSize += $ + x, E = $, T += 1; 31442 } 31443 } 31444 if (e.virtualSize = Math.max(e.virtualSize, r) + v, n && l && ("slide" === a.effect || "coverflow" === a.effect) && i.css({ 31445 width: "".concat(e.virtualSize + a.spaceBetween, "px") 31446 }), a.setWrapperSize && i.css(_defineProperty({}, t("width"), "".concat(e.virtualSize + a.spaceBetween, "px"))), C && e.grid.updateWrapperSize($, u, t), !a.centeredSlides) { 31447 var _t17 = []; 31448 for (var _s18 = 0; _s18 < u.length; _s18 += 1) { 31449 var _i9 = u[_s18]; 31450 a.roundLengths && (_i9 = Math.floor(_i9)), u[_s18] <= e.virtualSize - r && _t17.push(_i9); 31451 } 31452 u = _t17, Math.floor(e.virtualSize - r) - Math.floor(u[u.length - 1]) > 1 && u.push(e.virtualSize - r); 31453 } 31454 if (0 === u.length && (u = [0]), 0 !== a.spaceBetween) { 31455 var _s19 = e.isHorizontal() && n ? "marginLeft" : t("marginRight"); 31456 c.filter(function (e, t) { 31457 return !a.cssMode || t !== c.length - 1; 31458 }).css(_defineProperty({}, _s19, "".concat(x, "px"))); 31459 } 31460 if (a.centeredSlides && a.centeredSlidesBounds) { 31461 var _e26 = 0; 31462 m.forEach(function (t) { 31463 _e26 += t + (a.spaceBetween ? a.spaceBetween : 0); 31464 }), _e26 -= a.spaceBetween; 31465 var _t18 = _e26 - r; 31466 u = u.map(function (e) { 31467 return e < 0 ? -f : e > _t18 ? _t18 + v : e; 31468 }); 31469 } 31470 if (a.centerInsufficientSlides) { 31471 var _e27 = 0; 31472 if (m.forEach(function (t) { 31473 _e27 += t + (a.spaceBetween ? a.spaceBetween : 0); 31474 }), _e27 -= a.spaceBetween, _e27 < r) { 31475 var _t19 = (r - _e27) / 2; 31476 u.forEach(function (e, s) { 31477 u[s] = e - _t19; 31478 }), h.forEach(function (e, s) { 31479 h[s] = e + _t19; 31480 }); 31481 } 31482 } 31483 if (Object.assign(e, { 31484 slides: c, 31485 snapGrid: u, 31486 slidesGrid: h, 31487 slidesSizesGrid: m 31488 }), a.centeredSlides && a.cssMode && !a.centeredSlidesBounds) { 31489 g(e.wrapperEl, "--swiper-centered-offset-before", -u[0] + "px"), g(e.wrapperEl, "--swiper-centered-offset-after", e.size / 2 - m[m.length - 1] / 2 + "px"); 31490 var _t20 = -e.snapGrid[0], 31491 _s20 = -e.slidesGrid[0]; 31492 e.snapGrid = e.snapGrid.map(function (e) { 31493 return e + _t20; 31494 }), e.slidesGrid = e.slidesGrid.map(function (e) { 31495 return e + _s20; 31496 }); 31497 } 31498 p !== d && e.emit("slidesLengthChange"), u.length !== w && (e.params.watchOverflow && e.checkOverflow(), e.emit("snapGridLengthChange")), h.length !== b && e.emit("slidesGridLengthChange"), a.watchSlidesProgress && e.updateSlidesOffset(); 31499 }, 31500 updateAutoHeight: function updateAutoHeight(e) { 31501 var t = this, 31502 s = [], 31503 a = t.virtual && t.params.virtual.enabled; 31504 var i, 31505 r = 0; 31506 "number" == typeof e ? t.setTransition(e) : !0 === e && t.setTransition(t.params.speed); 31507 var n = function n(e) { 31508 return a ? t.slides.filter(function (t) { 31509 return parseInt(t.getAttribute("data-swiper-slide-index"), 10) === e; 31510 })[0] : t.slides.eq(e)[0]; 31511 }; 31512 if ("auto" !== t.params.slidesPerView && t.params.slidesPerView > 1) { 31513 if (t.params.centeredSlides) t.visibleSlides.each(function (e) { 31514 s.push(e); 31515 });else for (i = 0; i < Math.ceil(t.params.slidesPerView); i += 1) { 31516 var _e28 = t.activeIndex + i; 31517 if (_e28 > t.slides.length && !a) break; 31518 s.push(n(_e28)); 31519 } 31520 } else s.push(n(t.activeIndex)); 31521 for (i = 0; i < s.length; i += 1) { 31522 if (void 0 !== s[i]) { 31523 var _e29 = s[i].offsetHeight; 31524 r = _e29 > r ? _e29 : r; 31525 } 31526 } 31527 r && t.$wrapperEl.css("height", "".concat(r, "px")); 31528 }, 31529 updateSlidesOffset: function updateSlidesOffset() { 31530 var e = this, 31531 t = e.slides; 31532 for (var _s21 = 0; _s21 < t.length; _s21 += 1) { 31533 t[_s21].swiperSlideOffset = e.isHorizontal() ? t[_s21].offsetLeft : t[_s21].offsetTop; 31534 } 31535 }, 31536 updateSlidesProgress: function updateSlidesProgress() { 31537 var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this && this.translate || 0; 31538 var t = this, 31539 s = t.params, 31540 a = t.slides, 31541 i = t.rtlTranslate; 31542 if (0 === a.length) return; 31543 void 0 === a[0].swiperSlideOffset && t.updateSlidesOffset(); 31544 var r = -e; 31545 i && (r = e), a.removeClass(s.slideVisibleClass), t.visibleSlidesIndexes = [], t.visibleSlides = []; 31546 for (var _e30 = 0; _e30 < a.length; _e30 += 1) { 31547 var _n5 = a[_e30]; 31548 var _l4 = _n5.swiperSlideOffset; 31549 s.cssMode && s.centeredSlides && (_l4 -= a[0].swiperSlideOffset); 31550 var _o4 = (r + (s.centeredSlides ? t.minTranslate() : 0) - _l4) / (_n5.swiperSlideSize + s.spaceBetween), 31551 _d3 = -(r - _l4), 31552 _c2 = _d3 + t.slidesSizesGrid[_e30]; 31553 (_d3 >= 0 && _d3 < t.size - 1 || _c2 > 1 && _c2 <= t.size || _d3 <= 0 && _c2 >= t.size) && (t.visibleSlides.push(_n5), t.visibleSlidesIndexes.push(_e30), a.eq(_e30).addClass(s.slideVisibleClass)), _n5.progress = i ? -_o4 : _o4; 31554 } 31555 t.visibleSlides = d(t.visibleSlides); 31556 }, 31557 updateProgress: function updateProgress(e) { 31558 var t = this; 31559 if (void 0 === e) { 31560 var _s22 = t.rtlTranslate ? -1 : 1; 31561 e = t && t.translate && t.translate * _s22 || 0; 31562 } 31563 var s = t.params, 31564 a = t.maxTranslate() - t.minTranslate(); 31565 var i = t.progress, 31566 r = t.isBeginning, 31567 n = t.isEnd; 31568 var l = r, 31569 o = n; 31570 0 === a ? (i = 0, r = !0, n = !0) : (i = (e - t.minTranslate()) / a, r = i <= 0, n = i >= 1), Object.assign(t, { 31571 progress: i, 31572 isBeginning: r, 31573 isEnd: n 31574 }), (s.watchSlidesProgress || s.centeredSlides && s.autoHeight) && t.updateSlidesProgress(e), r && !l && t.emit("reachBeginning toEdge"), n && !o && t.emit("reachEnd toEdge"), (l && !r || o && !n) && t.emit("fromEdge"), t.emit("progress", i); 31575 }, 31576 updateSlidesClasses: function updateSlidesClasses() { 31577 var e = this, 31578 t = e.slides, 31579 s = e.params, 31580 a = e.$wrapperEl, 31581 i = e.activeIndex, 31582 r = e.realIndex, 31583 n = e.virtual && s.virtual.enabled; 31584 var l; 31585 t.removeClass("".concat(s.slideActiveClass, " ").concat(s.slideNextClass, " ").concat(s.slidePrevClass, " ").concat(s.slideDuplicateActiveClass, " ").concat(s.slideDuplicateNextClass, " ").concat(s.slideDuplicatePrevClass)), l = n ? e.$wrapperEl.find(".".concat(s.slideClass, "[data-swiper-slide-index=\"").concat(i, "\"]")) : t.eq(i), l.addClass(s.slideActiveClass), s.loop && (l.hasClass(s.slideDuplicateClass) ? a.children(".".concat(s.slideClass, ":not(.").concat(s.slideDuplicateClass, ")[data-swiper-slide-index=\"").concat(r, "\"]")).addClass(s.slideDuplicateActiveClass) : a.children(".".concat(s.slideClass, ".").concat(s.slideDuplicateClass, "[data-swiper-slide-index=\"").concat(r, "\"]")).addClass(s.slideDuplicateActiveClass)); 31586 var o = l.nextAll(".".concat(s.slideClass)).eq(0).addClass(s.slideNextClass); 31587 s.loop && 0 === o.length && (o = t.eq(0), o.addClass(s.slideNextClass)); 31588 var d = l.prevAll(".".concat(s.slideClass)).eq(0).addClass(s.slidePrevClass); 31589 s.loop && 0 === d.length && (d = t.eq(-1), d.addClass(s.slidePrevClass)), s.loop && (o.hasClass(s.slideDuplicateClass) ? a.children(".".concat(s.slideClass, ":not(.").concat(s.slideDuplicateClass, ")[data-swiper-slide-index=\"").concat(o.attr("data-swiper-slide-index"), "\"]")).addClass(s.slideDuplicateNextClass) : a.children(".".concat(s.slideClass, ".").concat(s.slideDuplicateClass, "[data-swiper-slide-index=\"").concat(o.attr("data-swiper-slide-index"), "\"]")).addClass(s.slideDuplicateNextClass), d.hasClass(s.slideDuplicateClass) ? a.children(".".concat(s.slideClass, ":not(.").concat(s.slideDuplicateClass, ")[data-swiper-slide-index=\"").concat(d.attr("data-swiper-slide-index"), "\"]")).addClass(s.slideDuplicatePrevClass) : a.children(".".concat(s.slideClass, ".").concat(s.slideDuplicateClass, "[data-swiper-slide-index=\"").concat(d.attr("data-swiper-slide-index"), "\"]")).addClass(s.slideDuplicatePrevClass)), e.emitSlidesClasses(); 31590 }, 31591 updateActiveIndex: function updateActiveIndex(e) { 31592 var t = this, 31593 s = t.rtlTranslate ? t.translate : -t.translate, 31594 a = t.slidesGrid, 31595 i = t.snapGrid, 31596 r = t.params, 31597 n = t.activeIndex, 31598 l = t.realIndex, 31599 o = t.snapIndex; 31600 var d, 31601 c = e; 31602 if (void 0 === c) { 31603 for (var _e31 = 0; _e31 < a.length; _e31 += 1) { 31604 void 0 !== a[_e31 + 1] ? s >= a[_e31] && s < a[_e31 + 1] - (a[_e31 + 1] - a[_e31]) / 2 ? c = _e31 : s >= a[_e31] && s < a[_e31 + 1] && (c = _e31 + 1) : s >= a[_e31] && (c = _e31); 31605 } 31606 r.normalizeSlideIndex && (c < 0 || void 0 === c) && (c = 0); 31607 } 31608 if (i.indexOf(s) >= 0) d = i.indexOf(s);else { 31609 var _e32 = Math.min(r.slidesPerGroupSkip, c); 31610 d = _e32 + Math.floor((c - _e32) / r.slidesPerGroup); 31611 } 31612 if (d >= i.length && (d = i.length - 1), c === n) return void (d !== o && (t.snapIndex = d, t.emit("snapIndexChange"))); 31613 var p = parseInt(t.slides.eq(c).attr("data-swiper-slide-index") || c, 10); 31614 Object.assign(t, { 31615 snapIndex: d, 31616 realIndex: p, 31617 previousIndex: n, 31618 activeIndex: c 31619 }), t.emit("activeIndexChange"), t.emit("snapIndexChange"), l !== p && t.emit("realIndexChange"), (t.initialized || t.params.runCallbacksOnInit) && t.emit("slideChange"); 31620 }, 31621 updateClickedSlide: function updateClickedSlide(e) { 31622 var t = this, 31623 s = t.params, 31624 a = d(e.target).closest(".".concat(s.slideClass))[0]; 31625 var i, 31626 r = !1; 31627 if (a) for (var _e33 = 0; _e33 < t.slides.length; _e33 += 1) { 31628 if (t.slides[_e33] === a) { 31629 r = !0, i = _e33; 31630 break; 31631 } 31632 } 31633 if (!a || !r) return t.clickedSlide = void 0, void (t.clickedIndex = void 0); 31634 t.clickedSlide = a, t.virtual && t.params.virtual.enabled ? t.clickedIndex = parseInt(d(a).attr("data-swiper-slide-index"), 10) : t.clickedIndex = i, s.slideToClickedSlide && void 0 !== t.clickedIndex && t.clickedIndex !== t.activeIndex && t.slideToClickedSlide(); 31635 } 31636 }, 31637 translate: { 31638 getTranslate: function getTranslate() { 31639 var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.isHorizontal() ? "x" : "y"; 31640 var t = this.params, 31641 s = this.rtlTranslate, 31642 a = this.translate, 31643 i = this.$wrapperEl; 31644 if (t.virtualTranslate) return s ? -a : a; 31645 if (t.cssMode) return a; 31646 var r = h(i[0], e); 31647 return s && (r = -r), r || 0; 31648 }, 31649 setTranslate: function setTranslate(e, t) { 31650 var s = this, 31651 a = s.rtlTranslate, 31652 i = s.params, 31653 r = s.$wrapperEl, 31654 n = s.wrapperEl, 31655 l = s.progress; 31656 var o, 31657 d = 0, 31658 c = 0; 31659 s.isHorizontal() ? d = a ? -e : e : c = e, i.roundLengths && (d = Math.floor(d), c = Math.floor(c)), i.cssMode ? n[s.isHorizontal() ? "scrollLeft" : "scrollTop"] = s.isHorizontal() ? -d : -c : i.virtualTranslate || r.transform("translate3d(".concat(d, "px, ").concat(c, "px, 0px)")), s.previousTranslate = s.translate, s.translate = s.isHorizontal() ? d : c; 31660 var p = s.maxTranslate() - s.minTranslate(); 31661 o = 0 === p ? 0 : (e - s.minTranslate()) / p, o !== l && s.updateProgress(e), s.emit("setTranslate", s.translate, t); 31662 }, 31663 minTranslate: function minTranslate() { 31664 return -this.snapGrid[0]; 31665 }, 31666 maxTranslate: function maxTranslate() { 31667 return -this.snapGrid[this.snapGrid.length - 1]; 31668 }, 31669 translateTo: function translateTo() { 31670 var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; 31671 var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.params.speed; 31672 var s = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : !0; 31673 var a = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : !0; 31674 var i = arguments.length > 4 ? arguments[4] : undefined; 31675 var r = this, 31676 n = r.params, 31677 l = r.wrapperEl; 31678 if (r.animating && n.preventInteractionOnTransition) return !1; 31679 var o = r.minTranslate(), 31680 d = r.maxTranslate(); 31681 var c; 31682 if (c = a && e > o ? o : a && e < d ? d : e, r.updateProgress(c), n.cssMode) { 31683 var _e34 = r.isHorizontal(); 31684 if (0 === t) l[_e34 ? "scrollLeft" : "scrollTop"] = -c;else { 31685 var _l$scrollTo; 31686 if (!r.support.smoothScroll) return v({ 31687 swiper: r, 31688 targetPosition: -c, 31689 side: _e34 ? "left" : "top" 31690 }), !0; 31691 l.scrollTo((_l$scrollTo = {}, _defineProperty(_l$scrollTo, _e34 ? "left" : "top", -c), _defineProperty(_l$scrollTo, "behavior", "smooth"), _l$scrollTo)); 31692 } 31693 return !0; 31694 } 31695 return 0 === t ? (r.setTransition(0), r.setTranslate(c), s && (r.emit("beforeTransitionStart", t, i), r.emit("transitionEnd"))) : (r.setTransition(t), r.setTranslate(c), s && (r.emit("beforeTransitionStart", t, i), r.emit("transitionStart")), r.animating || (r.animating = !0, r.onTranslateToWrapperTransitionEnd || (r.onTranslateToWrapperTransitionEnd = function (e) { 31696 r && !r.destroyed && e.target === this && (r.$wrapperEl[0].removeEventListener("transitionend", r.onTranslateToWrapperTransitionEnd), r.$wrapperEl[0].removeEventListener("webkitTransitionEnd", r.onTranslateToWrapperTransitionEnd), r.onTranslateToWrapperTransitionEnd = null, delete r.onTranslateToWrapperTransitionEnd, s && r.emit("transitionEnd")); 31697 }), r.$wrapperEl[0].addEventListener("transitionend", r.onTranslateToWrapperTransitionEnd), r.$wrapperEl[0].addEventListener("webkitTransitionEnd", r.onTranslateToWrapperTransitionEnd))), !0; 31698 } 31699 }, 31700 transition: { 31701 setTransition: function setTransition(e, t) { 31702 var s = this; 31703 s.params.cssMode || s.$wrapperEl.transition(e), s.emit("setTransition", e, t); 31704 }, 31705 transitionStart: function transitionStart() { 31706 var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : !0; 31707 var t = arguments.length > 1 ? arguments[1] : undefined; 31708 var s = this, 31709 a = s.params; 31710 a.cssMode || (a.autoHeight && s.updateAutoHeight(), $({ 31711 swiper: s, 31712 runCallbacks: e, 31713 direction: t, 31714 step: "Start" 31715 })); 31716 }, 31717 transitionEnd: function transitionEnd() { 31718 var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : !0; 31719 var t = arguments.length > 1 ? arguments[1] : undefined; 31720 var s = this, 31721 a = s.params; 31722 s.animating = !1, a.cssMode || (s.setTransition(0), $({ 31723 swiper: s, 31724 runCallbacks: e, 31725 direction: t, 31726 step: "End" 31727 })); 31728 } 31729 }, 31730 slide: { 31731 slideTo: function slideTo() { 31732 var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; 31733 var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.params.speed; 31734 var s = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : !0; 31735 var a = arguments.length > 3 ? arguments[3] : undefined; 31736 var i = arguments.length > 4 ? arguments[4] : undefined; 31737 if ("number" != typeof e && "string" != typeof e) throw new Error("The 'index' argument cannot have type other than 'number' or 'string'. [".concat(_typeof(e), "] given.")); 31738 if ("string" == typeof e) { 31739 var _t21 = parseInt(e, 10); 31740 if (!isFinite(_t21)) throw new Error("The passed-in 'index' (string) couldn't be converted to 'number'. [".concat(e, "] given.")); 31741 e = _t21; 31742 } 31743 var r = this; 31744 var n = e; 31745 n < 0 && (n = 0); 31746 var l = r.params, 31747 o = r.snapGrid, 31748 d = r.slidesGrid, 31749 c = r.previousIndex, 31750 p = r.activeIndex, 31751 u = r.rtlTranslate, 31752 h = r.wrapperEl, 31753 m = r.enabled; 31754 if (r.animating && l.preventInteractionOnTransition || !m && !a && !i) return !1; 31755 var f = Math.min(r.params.slidesPerGroupSkip, n); 31756 var g = f + Math.floor((n - f) / r.params.slidesPerGroup); 31757 g >= o.length && (g = o.length - 1), (p || l.initialSlide || 0) === (c || 0) && s && r.emit("beforeSlideChangeStart"); 31758 var w = -o[g]; 31759 if (r.updateProgress(w), l.normalizeSlideIndex) for (var _e35 = 0; _e35 < d.length; _e35 += 1) { 31760 var _t22 = -Math.floor(100 * w), 31761 _s23 = Math.floor(100 * d[_e35]), 31762 _a13 = Math.floor(100 * d[_e35 + 1]); 31763 void 0 !== d[_e35 + 1] ? _t22 >= _s23 && _t22 < _a13 - (_a13 - _s23) / 2 ? n = _e35 : _t22 >= _s23 && _t22 < _a13 && (n = _e35 + 1) : _t22 >= _s23 && (n = _e35); 31764 } 31765 if (r.initialized && n !== p) { 31766 if (!r.allowSlideNext && w < r.translate && w < r.minTranslate()) return !1; 31767 if (!r.allowSlidePrev && w > r.translate && w > r.maxTranslate() && (p || 0) !== n) return !1; 31768 } 31769 var b; 31770 if (b = n > p ? "next" : n < p ? "prev" : "reset", u && -w === r.translate || !u && w === r.translate) return r.updateActiveIndex(n), l.autoHeight && r.updateAutoHeight(), r.updateSlidesClasses(), "slide" !== l.effect && r.setTranslate(w), "reset" !== b && (r.transitionStart(s, b), r.transitionEnd(s, b)), !1; 31771 if (l.cssMode) { 31772 var _e36 = r.isHorizontal(), 31773 _s24 = u ? w : -w; 31774 if (0 === t) { 31775 var _t23 = r.virtual && r.params.virtual.enabled; 31776 _t23 && (r.wrapperEl.style.scrollSnapType = "none", r._immediateVirtual = !0), h[_e36 ? "scrollLeft" : "scrollTop"] = _s24, _t23 && requestAnimationFrame(function () { 31777 r.wrapperEl.style.scrollSnapType = "", r._swiperImmediateVirtual = !1; 31778 }); 31779 } else { 31780 var _h$scrollTo; 31781 if (!r.support.smoothScroll) return v({ 31782 swiper: r, 31783 targetPosition: _s24, 31784 side: _e36 ? "left" : "top" 31785 }), !0; 31786 h.scrollTo((_h$scrollTo = {}, _defineProperty(_h$scrollTo, _e36 ? "left" : "top", _s24), _defineProperty(_h$scrollTo, "behavior", "smooth"), _h$scrollTo)); 31787 } 31788 return !0; 31789 } 31790 return 0 === t ? (r.setTransition(0), r.setTranslate(w), r.updateActiveIndex(n), r.updateSlidesClasses(), r.emit("beforeTransitionStart", t, a), r.transitionStart(s, b), r.transitionEnd(s, b)) : (r.setTransition(t), r.setTranslate(w), r.updateActiveIndex(n), r.updateSlidesClasses(), r.emit("beforeTransitionStart", t, a), r.transitionStart(s, b), r.animating || (r.animating = !0, r.onSlideToWrapperTransitionEnd || (r.onSlideToWrapperTransitionEnd = function (e) { 31791 r && !r.destroyed && e.target === this && (r.$wrapperEl[0].removeEventListener("transitionend", r.onSlideToWrapperTransitionEnd), r.$wrapperEl[0].removeEventListener("webkitTransitionEnd", r.onSlideToWrapperTransitionEnd), r.onSlideToWrapperTransitionEnd = null, delete r.onSlideToWrapperTransitionEnd, r.transitionEnd(s, b)); 31792 }), r.$wrapperEl[0].addEventListener("transitionend", r.onSlideToWrapperTransitionEnd), r.$wrapperEl[0].addEventListener("webkitTransitionEnd", r.onSlideToWrapperTransitionEnd))), !0; 31793 }, 31794 slideToLoop: function slideToLoop() { 31795 var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; 31796 var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.params.speed; 31797 var s = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : !0; 31798 var a = arguments.length > 3 ? arguments[3] : undefined; 31799 var i = this; 31800 var r = e; 31801 return i.params.loop && (r += i.loopedSlides), i.slideTo(r, t, s, a); 31802 }, 31803 slideNext: function slideNext() { 31804 var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.params.speed; 31805 var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !0; 31806 var s = arguments.length > 2 ? arguments[2] : undefined; 31807 var a = this, 31808 i = a.animating, 31809 r = a.enabled, 31810 n = a.params; 31811 if (!r) return a; 31812 var l = n.slidesPerGroup; 31813 "auto" === n.slidesPerView && 1 === n.slidesPerGroup && n.slidesPerGroupAuto && (l = Math.max(a.slidesPerViewDynamic("current", !0), 1)); 31814 var o = a.activeIndex < n.slidesPerGroupSkip ? 1 : l; 31815 if (n.loop) { 31816 if (i && n.loopPreventsSlide) return !1; 31817 a.loopFix(), a._clientLeft = a.$wrapperEl[0].clientLeft; 31818 } 31819 return a.slideTo(a.activeIndex + o, e, t, s); 31820 }, 31821 slidePrev: function slidePrev() { 31822 var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.params.speed; 31823 var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !0; 31824 var s = arguments.length > 2 ? arguments[2] : undefined; 31825 var a = this, 31826 i = a.params, 31827 r = a.animating, 31828 n = a.snapGrid, 31829 l = a.slidesGrid, 31830 o = a.rtlTranslate, 31831 d = a.enabled; 31832 if (!d) return a; 31833 if (i.loop) { 31834 if (r && i.loopPreventsSlide) return !1; 31835 a.loopFix(), a._clientLeft = a.$wrapperEl[0].clientLeft; 31836 } 31837 function c(e) { 31838 return e < 0 ? -Math.floor(Math.abs(e)) : Math.floor(e); 31839 } 31840 var p = c(o ? a.translate : -a.translate), 31841 u = n.map(function (e) { 31842 return c(e); 31843 }); 31844 var h = n[u.indexOf(p) - 1]; 31845 if (void 0 === h && i.cssMode) { 31846 var _e37; 31847 n.forEach(function (t, s) { 31848 p >= t && (_e37 = s); 31849 }), void 0 !== _e37 && (h = n[_e37 > 0 ? _e37 - 1 : _e37]); 31850 } 31851 var m = 0; 31852 return void 0 !== h && (m = l.indexOf(h), m < 0 && (m = a.activeIndex - 1), "auto" === i.slidesPerView && 1 === i.slidesPerGroup && i.slidesPerGroupAuto && (m = m - a.slidesPerViewDynamic("previous", !0) + 1, m = Math.max(m, 0))), a.slideTo(m, e, t, s); 31853 }, 31854 slideReset: function slideReset() { 31855 var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.params.speed; 31856 var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !0; 31857 var s = arguments.length > 2 ? arguments[2] : undefined; 31858 return this.slideTo(this.activeIndex, e, t, s); 31859 }, 31860 slideToClosest: function slideToClosest() { 31861 var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.params.speed; 31862 var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !0; 31863 var s = arguments.length > 2 ? arguments[2] : undefined; 31864 var a = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : .5; 31865 var i = this; 31866 var r = i.activeIndex; 31867 var n = Math.min(i.params.slidesPerGroupSkip, r), 31868 l = n + Math.floor((r - n) / i.params.slidesPerGroup), 31869 o = i.rtlTranslate ? i.translate : -i.translate; 31870 if (o >= i.snapGrid[l]) { 31871 var _e38 = i.snapGrid[l]; 31872 o - _e38 > (i.snapGrid[l + 1] - _e38) * a && (r += i.params.slidesPerGroup); 31873 } else { 31874 var _e39 = i.snapGrid[l - 1]; 31875 o - _e39 <= (i.snapGrid[l] - _e39) * a && (r -= i.params.slidesPerGroup); 31876 } 31877 return r = Math.max(r, 0), r = Math.min(r, i.slidesGrid.length - 1), i.slideTo(r, e, t, s); 31878 }, 31879 slideToClickedSlide: function slideToClickedSlide() { 31880 var e = this, 31881 t = e.params, 31882 s = e.$wrapperEl, 31883 a = "auto" === t.slidesPerView ? e.slidesPerViewDynamic() : t.slidesPerView; 31884 var i, 31885 r = e.clickedIndex; 31886 if (t.loop) { 31887 if (e.animating) return; 31888 i = parseInt(d(e.clickedSlide).attr("data-swiper-slide-index"), 10), t.centeredSlides ? r < e.loopedSlides - a / 2 || r > e.slides.length - e.loopedSlides + a / 2 ? (e.loopFix(), r = s.children(".".concat(t.slideClass, "[data-swiper-slide-index=\"").concat(i, "\"]:not(.").concat(t.slideDuplicateClass, ")")).eq(0).index(), p(function () { 31889 e.slideTo(r); 31890 })) : e.slideTo(r) : r > e.slides.length - a ? (e.loopFix(), r = s.children(".".concat(t.slideClass, "[data-swiper-slide-index=\"").concat(i, "\"]:not(.").concat(t.slideDuplicateClass, ")")).eq(0).index(), p(function () { 31891 e.slideTo(r); 31892 })) : e.slideTo(r); 31893 } else e.slideTo(r); 31894 } 31895 }, 31896 loop: { 31897 loopCreate: function loopCreate() { 31898 var e = this, 31899 t = a(), 31900 s = e.params, 31901 i = e.$wrapperEl; 31902 i.children(".".concat(s.slideClass, ".").concat(s.slideDuplicateClass)).remove(); 31903 var r = i.children(".".concat(s.slideClass)); 31904 if (s.loopFillGroupWithBlank) { 31905 var _e40 = s.slidesPerGroup - r.length % s.slidesPerGroup; 31906 if (_e40 !== s.slidesPerGroup) { 31907 for (var _a14 = 0; _a14 < _e40; _a14 += 1) { 31908 var _e41 = d(t.createElement("div")).addClass("".concat(s.slideClass, " ").concat(s.slideBlankClass)); 31909 i.append(_e41); 31910 } 31911 r = i.children(".".concat(s.slideClass)); 31912 } 31913 } 31914 "auto" !== s.slidesPerView || s.loopedSlides || (s.loopedSlides = r.length), e.loopedSlides = Math.ceil(parseFloat(s.loopedSlides || s.slidesPerView, 10)), e.loopedSlides += s.loopAdditionalSlides, e.loopedSlides > r.length && (e.loopedSlides = r.length); 31915 var n = [], 31916 l = []; 31917 r.each(function (t, s) { 31918 var a = d(t); 31919 s < e.loopedSlides && l.push(t), s < r.length && s >= r.length - e.loopedSlides && n.push(t), a.attr("data-swiper-slide-index", s); 31920 }); 31921 for (var _e42 = 0; _e42 < l.length; _e42 += 1) { 31922 i.append(d(l[_e42].cloneNode(!0)).addClass(s.slideDuplicateClass)); 31923 } 31924 for (var _e43 = n.length - 1; _e43 >= 0; _e43 -= 1) { 31925 i.prepend(d(n[_e43].cloneNode(!0)).addClass(s.slideDuplicateClass)); 31926 } 31927 }, 31928 loopFix: function loopFix() { 31929 var e = this; 31930 e.emit("beforeLoopFix"); 31931 var t = e.activeIndex, 31932 s = e.slides, 31933 a = e.loopedSlides, 31934 i = e.allowSlidePrev, 31935 r = e.allowSlideNext, 31936 n = e.snapGrid, 31937 l = e.rtlTranslate; 31938 var o; 31939 e.allowSlidePrev = !0, e.allowSlideNext = !0; 31940 var d = -n[t] - e.getTranslate(); 31941 if (t < a) { 31942 o = s.length - 3 * a + t, o += a; 31943 e.slideTo(o, 0, !1, !0) && 0 !== d && e.setTranslate((l ? -e.translate : e.translate) - d); 31944 } else if (t >= s.length - a) { 31945 o = -s.length + t + a, o += a; 31946 e.slideTo(o, 0, !1, !0) && 0 !== d && e.setTranslate((l ? -e.translate : e.translate) - d); 31947 } 31948 e.allowSlidePrev = i, e.allowSlideNext = r, e.emit("loopFix"); 31949 }, 31950 loopDestroy: function loopDestroy() { 31951 var e = this.$wrapperEl, 31952 t = this.params, 31953 s = this.slides; 31954 e.children(".".concat(t.slideClass, ".").concat(t.slideDuplicateClass, ",.").concat(t.slideClass, ".").concat(t.slideBlankClass)).remove(), s.removeAttr("data-swiper-slide-index"); 31955 } 31956 }, 31957 grabCursor: { 31958 setGrabCursor: function setGrabCursor(e) { 31959 var t = this; 31960 if (t.support.touch || !t.params.simulateTouch || t.params.watchOverflow && t.isLocked || t.params.cssMode) return; 31961 var s = "container" === t.params.touchEventsTarget ? t.el : t.wrapperEl; 31962 s.style.cursor = "move", s.style.cursor = e ? "-webkit-grabbing" : "-webkit-grab", s.style.cursor = e ? "-moz-grabbin" : "-moz-grab", s.style.cursor = e ? "grabbing" : "grab"; 31963 }, 31964 unsetGrabCursor: function unsetGrabCursor() { 31965 var e = this; 31966 e.support.touch || e.params.watchOverflow && e.isLocked || e.params.cssMode || (e["container" === e.params.touchEventsTarget ? "el" : "wrapperEl"].style.cursor = ""); 31967 } 31968 }, 31969 events: { 31970 attachEvents: function attachEvents() { 31971 var e = this, 31972 t = a(), 31973 s = e.params, 31974 i = e.support; 31975 e.onTouchStart = S.bind(e), e.onTouchMove = M.bind(e), e.onTouchEnd = P.bind(e), s.cssMode && (e.onScroll = O.bind(e)), e.onClick = z.bind(e), i.touch && !I && (t.addEventListener("touchstart", L), I = !0), A(e, "on"); 31976 }, 31977 detachEvents: function detachEvents() { 31978 A(this, "off"); 31979 } 31980 }, 31981 breakpoints: { 31982 setBreakpoint: function setBreakpoint() { 31983 var e = this, 31984 t = e.activeIndex, 31985 s = e.initialized, 31986 _e$loopedSlides = e.loopedSlides, 31987 a = _e$loopedSlides === void 0 ? 0 : _e$loopedSlides, 31988 i = e.params, 31989 r = e.$el, 31990 n = i.breakpoints; 31991 if (!n || n && 0 === Object.keys(n).length) return; 31992 var l = e.getBreakpoint(n, e.params.breakpointsBase, e.el); 31993 if (!l || e.currentBreakpoint === l) return; 31994 var o = (l in n ? n[l] : void 0) || e.originalParams, 31995 d = D(e, i), 31996 c = D(e, o), 31997 p = i.enabled; 31998 d && !c ? (r.removeClass("".concat(i.containerModifierClass, "grid ").concat(i.containerModifierClass, "grid-column")), e.emitContainerClasses()) : !d && c && (r.addClass("".concat(i.containerModifierClass, "grid")), (o.grid.fill && "column" === o.grid.fill || !o.grid.fill && "column" === i.grid.fill) && r.addClass("".concat(i.containerModifierClass, "grid-column")), e.emitContainerClasses()); 31999 var u = o.direction && o.direction !== i.direction, 32000 h = i.loop && (o.slidesPerView !== i.slidesPerView || u); 32001 u && s && e.changeDirection(), f(e.params, o); 32002 var m = e.params.enabled; 32003 Object.assign(e, { 32004 allowTouchMove: e.params.allowTouchMove, 32005 allowSlideNext: e.params.allowSlideNext, 32006 allowSlidePrev: e.params.allowSlidePrev 32007 }), p && !m ? e.disable() : !p && m && e.enable(), e.currentBreakpoint = l, e.emit("_beforeBreakpoint", o), h && s && (e.loopDestroy(), e.loopCreate(), e.updateSlides(), e.slideTo(t - a + e.loopedSlides, 0, !1)), e.emit("breakpoint", o); 32008 }, 32009 getBreakpoint: function getBreakpoint(e) { 32010 var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "window"; 32011 var s = arguments.length > 2 ? arguments[2] : undefined; 32012 if (!e || "container" === t && !s) return; 32013 var a = !1; 32014 var i = r(), 32015 n = "window" === t ? i.innerHeight : s.clientHeight, 32016 l = Object.keys(e).map(function (e) { 32017 if ("string" == typeof e && 0 === e.indexOf("@")) { 32018 var _t24 = parseFloat(e.substr(1)); 32019 return { 32020 value: n * _t24, 32021 point: e 32022 }; 32023 } 32024 return { 32025 value: e, 32026 point: e 32027 }; 32028 }); 32029 l.sort(function (e, t) { 32030 return parseInt(e.value, 10) - parseInt(t.value, 10); 32031 }); 32032 for (var _e44 = 0; _e44 < l.length; _e44 += 1) { 32033 var _l$_e = l[_e44], 32034 _r7 = _l$_e.point, 32035 _n6 = _l$_e.value; 32036 "window" === t ? i.matchMedia("(min-width: ".concat(_n6, "px)")).matches && (a = _r7) : _n6 <= s.clientWidth && (a = _r7); 32037 } 32038 return a || "max"; 32039 } 32040 }, 32041 checkOverflow: { 32042 checkOverflow: function checkOverflow() { 32043 var e = this, 32044 t = e.isLocked, 32045 s = e.params, 32046 a = s.slidesOffsetBefore; 32047 if (a) { 32048 var _t25 = e.slides.length - 1, 32049 _s25 = e.slidesGrid[_t25] + e.slidesSizesGrid[_t25] + 2 * a; 32050 e.isLocked = e.size > _s25; 32051 } else e.isLocked = 1 === e.snapGrid.length; 32052 !0 === s.allowSlideNext && (e.allowSlideNext = !e.isLocked), !0 === s.allowSlidePrev && (e.allowSlidePrev = !e.isLocked), t && t !== e.isLocked && (e.isEnd = !1), t !== e.isLocked && e.emit(e.isLocked ? "lock" : "unlock"); 32053 } 32054 }, 32055 classes: { 32056 addClasses: function addClasses() { 32057 var e = this, 32058 t = e.classNames, 32059 s = e.params, 32060 a = e.rtl, 32061 i = e.$el, 32062 r = e.device, 32063 n = e.support, 32064 l = function (e, t) { 32065 var s = []; 32066 return e.forEach(function (e) { 32067 "object" == _typeof(e) ? Object.keys(e).forEach(function (a) { 32068 e[a] && s.push(t + a); 32069 }) : "string" == typeof e && s.push(t + e); 32070 }), s; 32071 }(["initialized", s.direction, { 32072 "pointer-events": !n.touch 32073 }, { 32074 "free-mode": e.params.freeMode && s.freeMode.enabled 32075 }, { 32076 autoheight: s.autoHeight 32077 }, { 32078 rtl: a 32079 }, { 32080 grid: s.grid && s.grid.rows > 1 32081 }, { 32082 "grid-column": s.grid && s.grid.rows > 1 && "column" === s.grid.fill 32083 }, { 32084 android: r.android 32085 }, { 32086 ios: r.ios 32087 }, { 32088 "css-mode": s.cssMode 32089 }, { 32090 centered: s.cssMode && s.centeredSlides 32091 }], s.containerModifierClass); 32092 t.push.apply(t, _toConsumableArray(l)), i.addClass(_toConsumableArray(t).join(" ")), e.emitContainerClasses(); 32093 }, 32094 removeClasses: function removeClasses() { 32095 var e = this.$el, 32096 t = this.classNames; 32097 e.removeClass(t.join(" ")), this.emitContainerClasses(); 32098 } 32099 }, 32100 images: { 32101 loadImage: function loadImage(e, t, s, a, i, n) { 32102 var l = r(); 32103 var o; 32104 function c() { 32105 n && n(); 32106 } 32107 d(e).parent("picture")[0] || e.complete && i ? c() : t ? (o = new l.Image(), o.onload = c, o.onerror = c, a && (o.sizes = a), s && (o.srcset = s), t && (o.src = t)) : c(); 32108 }, 32109 preloadImages: function preloadImages() { 32110 var e = this; 32111 function t() { 32112 null != e && e && !e.destroyed && (void 0 !== e.imagesLoaded && (e.imagesLoaded += 1), e.imagesLoaded === e.imagesToLoad.length && (e.params.updateOnImagesReady && e.update(), e.emit("imagesReady"))); 32113 } 32114 e.imagesToLoad = e.$el.find("img"); 32115 for (var _s26 = 0; _s26 < e.imagesToLoad.length; _s26 += 1) { 32116 var _a15 = e.imagesToLoad[_s26]; 32117 e.loadImage(_a15, _a15.currentSrc || _a15.getAttribute("src"), _a15.srcset || _a15.getAttribute("srcset"), _a15.sizes || _a15.getAttribute("sizes"), !0, t); 32118 } 32119 } 32120 } 32121 }, 32122 X = {}; 32123 var H = /*#__PURE__*/function () { 32124 function H() { 32125 var _e45, _e46, _a$modules; 32126 _classCallCheck(this, H); 32127 var t, s; 32128 for (var _len10 = arguments.length, e = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) { 32129 e[_key10] = arguments[_key10]; 32130 } 32131 if (1 === e.length && e[0].constructor && "Object" === Object.prototype.toString.call(e[0]).slice(8, -1) ? s = e[0] : (_e45 = e, _e46 = _slicedToArray(_e45, 2), t = _e46[0], s = _e46[1], _e45), s || (s = {}), s = f({}, s), t && !s.el && (s.el = t), s.el && d(s.el).length > 1) { 32132 var _e47 = []; 32133 return d(s.el).each(function (t) { 32134 var a = f({}, s, { 32135 el: t 32136 }); 32137 _e47.push(new H(a)); 32138 }), _e47; 32139 } 32140 var a = this; 32141 a.__swiper__ = !0, a.support = y(), a.device = E({ 32142 userAgent: s.userAgent 32143 }), a.browser = T(), a.eventsListeners = {}, a.eventsAnyListeners = [], a.modules = _toConsumableArray(a.__modules__), s.modules && Array.isArray(s.modules) && (_a$modules = a.modules).push.apply(_a$modules, _toConsumableArray(s.modules)); 32144 var i = {}; 32145 a.modules.forEach(function (e) { 32146 e({ 32147 swiper: a, 32148 extendParams: N(s, i), 32149 on: a.on.bind(a), 32150 once: a.once.bind(a), 32151 off: a.off.bind(a), 32152 emit: a.emit.bind(a) 32153 }); 32154 }); 32155 var r = f({}, G, i); 32156 return a.params = f({}, r, X, s), a.originalParams = f({}, a.params), a.passedParams = f({}, s), a.params && a.params.on && Object.keys(a.params.on).forEach(function (e) { 32157 a.on(e, a.params.on[e]); 32158 }), a.params && a.params.onAny && a.onAny(a.params.onAny), a.$ = d, Object.assign(a, { 32159 enabled: a.params.enabled, 32160 el: t, 32161 classNames: [], 32162 slides: d(), 32163 slidesGrid: [], 32164 snapGrid: [], 32165 slidesSizesGrid: [], 32166 isHorizontal: function isHorizontal() { 32167 return "horizontal" === a.params.direction; 32168 }, 32169 isVertical: function isVertical() { 32170 return "vertical" === a.params.direction; 32171 }, 32172 activeIndex: 0, 32173 realIndex: 0, 32174 isBeginning: !0, 32175 isEnd: !1, 32176 translate: 0, 32177 previousTranslate: 0, 32178 progress: 0, 32179 velocity: 0, 32180 animating: !1, 32181 allowSlideNext: a.params.allowSlideNext, 32182 allowSlidePrev: a.params.allowSlidePrev, 32183 touchEvents: function () { 32184 var e = ["touchstart", "touchmove", "touchend", "touchcancel"], 32185 t = ["pointerdown", "pointermove", "pointerup"]; 32186 return a.touchEventsTouch = { 32187 start: e[0], 32188 move: e[1], 32189 end: e[2], 32190 cancel: e[3] 32191 }, a.touchEventsDesktop = { 32192 start: t[0], 32193 move: t[1], 32194 end: t[2] 32195 }, a.support.touch || !a.params.simulateTouch ? a.touchEventsTouch : a.touchEventsDesktop; 32196 }(), 32197 touchEventsData: { 32198 isTouched: void 0, 32199 isMoved: void 0, 32200 allowTouchCallbacks: void 0, 32201 touchStartTime: void 0, 32202 isScrolling: void 0, 32203 currentTranslate: void 0, 32204 startTranslate: void 0, 32205 allowThresholdMove: void 0, 32206 focusableElements: a.params.focusableElements, 32207 lastClickTime: u(), 32208 clickTimeout: void 0, 32209 velocities: [], 32210 allowMomentumBounce: void 0, 32211 isTouchEvent: void 0, 32212 startMoving: void 0 32213 }, 32214 allowClick: !0, 32215 allowTouchMove: a.params.allowTouchMove, 32216 touches: { 32217 startX: 0, 32218 startY: 0, 32219 currentX: 0, 32220 currentY: 0, 32221 diff: 0 32222 }, 32223 imagesToLoad: [], 32224 imagesLoaded: 0 32225 }), a.emit("_swiper"), a.params.init && a.init(), a; 32226 } 32227 _createClass(H, [{ 32228 key: "enable", 32229 value: function enable() { 32230 var e = this; 32231 e.enabled || (e.enabled = !0, e.params.grabCursor && e.setGrabCursor(), e.emit("enable")); 32232 } 32233 }, { 32234 key: "disable", 32235 value: function disable() { 32236 var e = this; 32237 e.enabled && (e.enabled = !1, e.params.grabCursor && e.unsetGrabCursor(), e.emit("disable")); 32238 } 32239 }, { 32240 key: "setProgress", 32241 value: function setProgress(e, t) { 32242 var s = this; 32243 e = Math.min(Math.max(e, 0), 1); 32244 var a = s.minTranslate(), 32245 i = (s.maxTranslate() - a) * e + a; 32246 s.translateTo(i, void 0 === t ? 0 : t), s.updateActiveIndex(), s.updateSlidesClasses(); 32247 } 32248 }, { 32249 key: "emitContainerClasses", 32250 value: function emitContainerClasses() { 32251 var e = this; 32252 if (!e.params._emitClasses || !e.el) return; 32253 var t = e.el.className.split(" ").filter(function (t) { 32254 return 0 === t.indexOf("swiper") || 0 === t.indexOf(e.params.containerModifierClass); 32255 }); 32256 e.emit("_containerClasses", t.join(" ")); 32257 } 32258 }, { 32259 key: "getSlideClasses", 32260 value: function getSlideClasses(e) { 32261 var t = this; 32262 return e.className.split(" ").filter(function (e) { 32263 return 0 === e.indexOf("swiper-slide") || 0 === e.indexOf(t.params.slideClass); 32264 }).join(" "); 32265 } 32266 }, { 32267 key: "emitSlidesClasses", 32268 value: function emitSlidesClasses() { 32269 var e = this; 32270 if (!e.params._emitClasses || !e.el) return; 32271 var t = []; 32272 e.slides.each(function (s) { 32273 var a = e.getSlideClasses(s); 32274 t.push({ 32275 slideEl: s, 32276 classNames: a 32277 }), e.emit("_slideClass", s, a); 32278 }), e.emit("_slideClasses", t); 32279 } 32280 }, { 32281 key: "slidesPerViewDynamic", 32282 value: function slidesPerViewDynamic() { 32283 var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "current"; 32284 var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !1; 32285 var s = this.params, 32286 a = this.slides, 32287 i = this.slidesGrid, 32288 r = this.slidesSizesGrid, 32289 n = this.size, 32290 l = this.activeIndex; 32291 var o = 1; 32292 if (s.centeredSlides) { 32293 var _e48, 32294 _t26 = a[l].swiperSlideSize; 32295 for (var _s27 = l + 1; _s27 < a.length; _s27 += 1) { 32296 a[_s27] && !_e48 && (_t26 += a[_s27].swiperSlideSize, o += 1, _t26 > n && (_e48 = !0)); 32297 } 32298 for (var _s28 = l - 1; _s28 >= 0; _s28 -= 1) { 32299 a[_s28] && !_e48 && (_t26 += a[_s28].swiperSlideSize, o += 1, _t26 > n && (_e48 = !0)); 32300 } 32301 } else if ("current" === e) for (var _e49 = l + 1; _e49 < a.length; _e49 += 1) { 32302 (t ? i[_e49] + r[_e49] - i[l] < n : i[_e49] - i[l] < n) && (o += 1); 32303 } else for (var _e50 = l - 1; _e50 >= 0; _e50 -= 1) { 32304 i[l] - i[_e50] < n && (o += 1); 32305 } 32306 return o; 32307 } 32308 }, { 32309 key: "update", 32310 value: function update() { 32311 var e = this; 32312 if (!e || e.destroyed) return; 32313 var t = e.snapGrid, 32314 s = e.params; 32315 function a() { 32316 var t = e.rtlTranslate ? -1 * e.translate : e.translate, 32317 s = Math.min(Math.max(t, e.maxTranslate()), e.minTranslate()); 32318 e.setTranslate(s), e.updateActiveIndex(), e.updateSlidesClasses(); 32319 } 32320 var i; 32321 s.breakpoints && e.setBreakpoint(), e.updateSize(), e.updateSlides(), e.updateProgress(), e.updateSlidesClasses(), e.params.freeMode && e.params.freeMode.enabled ? (a(), e.params.autoHeight && e.updateAutoHeight()) : (i = ("auto" === e.params.slidesPerView || e.params.slidesPerView > 1) && e.isEnd && !e.params.centeredSlides ? e.slideTo(e.slides.length - 1, 0, !1, !0) : e.slideTo(e.activeIndex, 0, !1, !0), i || a()), s.watchOverflow && t !== e.snapGrid && e.checkOverflow(), e.emit("update"); 32322 } 32323 }, { 32324 key: "changeDirection", 32325 value: function changeDirection(e) { 32326 var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !0; 32327 var s = this, 32328 a = s.params.direction; 32329 return e || (e = "horizontal" === a ? "vertical" : "horizontal"), e === a || "horizontal" !== e && "vertical" !== e || (s.$el.removeClass("".concat(s.params.containerModifierClass).concat(a)).addClass("".concat(s.params.containerModifierClass).concat(e)), s.emitContainerClasses(), s.params.direction = e, s.slides.each(function (t) { 32330 "vertical" === e ? t.style.width = "" : t.style.height = ""; 32331 }), s.emit("changeDirection"), t && s.update()), s; 32332 } 32333 }, { 32334 key: "mount", 32335 value: function mount(e) { 32336 var t = this; 32337 if (t.mounted) return !0; 32338 var s = d(e || t.params.el); 32339 if (!(e = s[0])) return !1; 32340 e.swiper = t; 32341 var i = function i() { 32342 return ".".concat((t.params.wrapperClass || "").trim().split(" ").join(".")); 32343 }; 32344 var r = function () { 32345 if (e && e.shadowRoot && e.shadowRoot.querySelector) { 32346 var _t27 = d(e.shadowRoot.querySelector(i())); 32347 return _t27.children = function (e) { 32348 return s.children(e); 32349 }, _t27; 32350 } 32351 return s.children(i()); 32352 }(); 32353 if (0 === r.length && t.params.createElements) { 32354 var _e51 = a().createElement("div"); 32355 r = d(_e51), _e51.className = t.params.wrapperClass, s.append(_e51), s.children(".".concat(t.params.slideClass)).each(function (e) { 32356 r.append(e); 32357 }); 32358 } 32359 return Object.assign(t, { 32360 $el: s, 32361 el: e, 32362 $wrapperEl: r, 32363 wrapperEl: r[0], 32364 mounted: !0, 32365 rtl: "rtl" === e.dir.toLowerCase() || "rtl" === s.css("direction"), 32366 rtlTranslate: "horizontal" === t.params.direction && ("rtl" === e.dir.toLowerCase() || "rtl" === s.css("direction")), 32367 wrongRTL: "-webkit-box" === r.css("display") 32368 }), !0; 32369 } 32370 }, { 32371 key: "init", 32372 value: function init(e) { 32373 var t = this; 32374 if (t.initialized) return t; 32375 return !1 === t.mount(e) || (t.emit("beforeInit"), t.params.breakpoints && t.setBreakpoint(), t.addClasses(), t.params.loop && t.loopCreate(), t.updateSize(), t.updateSlides(), t.params.watchOverflow && t.checkOverflow(), t.params.grabCursor && t.enabled && t.setGrabCursor(), t.params.preloadImages && t.preloadImages(), t.params.loop ? t.slideTo(t.params.initialSlide + t.loopedSlides, 0, t.params.runCallbacksOnInit, !1, !0) : t.slideTo(t.params.initialSlide, 0, t.params.runCallbacksOnInit, !1, !0), t.attachEvents(), t.initialized = !0, t.emit("init"), t.emit("afterInit")), t; 32376 } 32377 }, { 32378 key: "destroy", 32379 value: function destroy() { 32380 var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : !0; 32381 var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !0; 32382 var s = this, 32383 a = s.params, 32384 i = s.$el, 32385 r = s.$wrapperEl, 32386 n = s.slides; 32387 return void 0 === s.params || s.destroyed || (s.emit("beforeDestroy"), s.initialized = !1, s.detachEvents(), a.loop && s.loopDestroy(), t && (s.removeClasses(), i.removeAttr("style"), r.removeAttr("style"), n && n.length && n.removeClass([a.slideVisibleClass, a.slideActiveClass, a.slideNextClass, a.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index")), s.emit("destroy"), Object.keys(s.eventsListeners).forEach(function (e) { 32388 s.off(e); 32389 }), !1 !== e && (s.$el[0].swiper = null, function (e) { 32390 var t = e; 32391 Object.keys(t).forEach(function (e) { 32392 try { 32393 t[e] = null; 32394 } catch (e) {} 32395 try { 32396 delete t[e]; 32397 } catch (e) {} 32398 }); 32399 }(s)), s.destroyed = !0), null; 32400 } 32401 }], [{ 32402 key: "extendDefaults", 32403 value: function extendDefaults(e) { 32404 f(X, e); 32405 } 32406 }, { 32407 key: "installModule", 32408 value: function installModule(e) { 32409 H.prototype.__modules__ || (H.prototype.__modules__ = []); 32410 var t = H.prototype.__modules__; 32411 "function" == typeof e && t.indexOf(e) < 0 && t.push(e); 32412 } 32413 }, { 32414 key: "use", 32415 value: function use(e) { 32416 return Array.isArray(e) ? (e.forEach(function (e) { 32417 return H.installModule(e); 32418 }), H) : (H.installModule(e), H); 32419 } 32420 }, { 32421 key: "extendedDefaults", 32422 get: function get() { 32423 return X; 32424 } 32425 }, { 32426 key: "defaults", 32427 get: function get() { 32428 return G; 32429 } 32430 }]); 32431 return H; 32432 }(); 32433 function Y(e, t, s, i) { 32434 var r = a(); 32435 return e.params.createElements && Object.keys(i).forEach(function (a) { 32436 if (!s[a] && !0 === s.auto) { 32437 var _n7 = e.$el.children(".".concat(i[a]))[0]; 32438 _n7 || (_n7 = r.createElement("div"), _n7.className = i[a], e.$el.append(_n7)), s[a] = _n7, t[a] = _n7; 32439 } 32440 }), s; 32441 } 32442 function W() { 32443 var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; 32444 return ".".concat(e.trim().replace(/([\.:!\/])/g, "\\$1").replace(/ /g, ".")); 32445 } 32446 function R(e) { 32447 var t = this, 32448 s = t.$wrapperEl, 32449 a = t.params; 32450 if (a.loop && t.loopDestroy(), "object" == _typeof(e) && "length" in e) for (var _t28 = 0; _t28 < e.length; _t28 += 1) { 32451 e[_t28] && s.append(e[_t28]); 32452 } else s.append(e); 32453 a.loop && t.loopCreate(), a.observer || t.update(); 32454 } 32455 function j(e) { 32456 var t = this, 32457 s = t.params, 32458 a = t.$wrapperEl, 32459 i = t.activeIndex; 32460 s.loop && t.loopDestroy(); 32461 var r = i + 1; 32462 if ("object" == _typeof(e) && "length" in e) { 32463 for (var _t29 = 0; _t29 < e.length; _t29 += 1) { 32464 e[_t29] && a.prepend(e[_t29]); 32465 } 32466 r = i + e.length; 32467 } else a.prepend(e); 32468 s.loop && t.loopCreate(), s.observer || t.update(), t.slideTo(r, 0, !1); 32469 } 32470 function _(e, t) { 32471 var s = this, 32472 a = s.$wrapperEl, 32473 i = s.params, 32474 r = s.activeIndex; 32475 var n = r; 32476 i.loop && (n -= s.loopedSlides, s.loopDestroy(), s.slides = a.children(".".concat(i.slideClass))); 32477 var l = s.slides.length; 32478 if (e <= 0) return void s.prependSlide(t); 32479 if (e >= l) return void s.appendSlide(t); 32480 var o = n > e ? n + 1 : n; 32481 var d = []; 32482 for (var _t30 = l - 1; _t30 >= e; _t30 -= 1) { 32483 var _e52 = s.slides.eq(_t30); 32484 _e52.remove(), d.unshift(_e52); 32485 } 32486 if ("object" == _typeof(t) && "length" in t) { 32487 for (var _e53 = 0; _e53 < t.length; _e53 += 1) { 32488 t[_e53] && a.append(t[_e53]); 32489 } 32490 o = n > e ? n + t.length : n; 32491 } else a.append(t); 32492 for (var _e54 = 0; _e54 < d.length; _e54 += 1) { 32493 a.append(d[_e54]); 32494 } 32495 i.loop && s.loopCreate(), i.observer || s.update(), i.loop ? s.slideTo(o + s.loopedSlides, 0, !1) : s.slideTo(o, 0, !1); 32496 } 32497 function V(e) { 32498 var t = this, 32499 s = t.params, 32500 a = t.$wrapperEl, 32501 i = t.activeIndex; 32502 var r = i; 32503 s.loop && (r -= t.loopedSlides, t.loopDestroy(), t.slides = a.children(".".concat(s.slideClass))); 32504 var n, 32505 l = r; 32506 if ("object" == _typeof(e) && "length" in e) { 32507 for (var _s29 = 0; _s29 < e.length; _s29 += 1) { 32508 n = e[_s29], t.slides[n] && t.slides.eq(n).remove(), n < l && (l -= 1); 32509 } 32510 l = Math.max(l, 0); 32511 } else n = e, t.slides[n] && t.slides.eq(n).remove(), n < l && (l -= 1), l = Math.max(l, 0); 32512 s.loop && t.loopCreate(), s.observer || t.update(), s.loop ? t.slideTo(l + t.loopedSlides, 0, !1) : t.slideTo(l, 0, !1); 32513 } 32514 function q() { 32515 var e = this, 32516 t = []; 32517 for (var _s30 = 0; _s30 < e.slides.length; _s30 += 1) { 32518 t.push(_s30); 32519 } 32520 e.removeSlide(t); 32521 } 32522 function F(e) { 32523 var t = e.effect, 32524 s = e.swiper, 32525 a = e.on, 32526 i = e.setTranslate, 32527 r = e.setTransition, 32528 n = e.overwriteParams, 32529 l = e.perspective; 32530 a("beforeInit", function () { 32531 if (s.params.effect !== t) return; 32532 s.classNames.push("".concat(s.params.containerModifierClass).concat(t)), l && l() && s.classNames.push("".concat(s.params.containerModifierClass, "3d")); 32533 var e = n ? n() : {}; 32534 Object.assign(s.params, e), Object.assign(s.originalParams, e); 32535 }), a("setTranslate", function () { 32536 s.params.effect === t && i(); 32537 }), a("setTransition", function (e, a) { 32538 s.params.effect === t && r(a); 32539 }); 32540 } 32541 function U(e, t) { 32542 return e.transformEl ? t.find(e.transformEl).css({ 32543 "backface-visibility": "hidden", 32544 "-webkit-backface-visibility": "hidden" 32545 }) : t; 32546 } 32547 function K(_ref4) { 32548 var e = _ref4.swiper, 32549 t = _ref4.duration, 32550 s = _ref4.transformEl, 32551 a = _ref4.allSlides; 32552 var i = e.slides, 32553 r = e.activeIndex, 32554 n = e.$wrapperEl; 32555 if (e.params.virtualTranslate && 0 !== t) { 32556 var _t31, 32557 _l5 = !1; 32558 _t31 = a ? s ? i.find(s) : i : s ? i.eq(r).find(s) : i.eq(r), _t31.transitionEnd(function () { 32559 if (_l5) return; 32560 if (!e || e.destroyed) return; 32561 _l5 = !0, e.animating = !1; 32562 var t = ["webkitTransitionEnd", "transitionend"]; 32563 for (var _e55 = 0; _e55 < t.length; _e55 += 1) { 32564 n.trigger(t[_e55]); 32565 } 32566 }); 32567 } 32568 } 32569 function Z(e, t, s) { 32570 var a = "swiper-slide-shadow" + (s ? "-".concat(s) : ""), 32571 i = e.transformEl ? t.find(e.transformEl) : t; 32572 var r = i.children(".".concat(a)); 32573 return r.length || (r = d("<div class=\"swiper-slide-shadow".concat(s ? "-".concat(s) : "", "\"></div>")), i.append(r)), r; 32574 } 32575 Object.keys(B).forEach(function (e) { 32576 Object.keys(B[e]).forEach(function (t) { 32577 H.prototype[t] = B[e][t]; 32578 }); 32579 }), H.use([function (_ref5) { 32580 var e = _ref5.swiper, 32581 t = _ref5.on, 32582 s = _ref5.emit; 32583 var a = r(); 32584 var i = null; 32585 var n = function n() { 32586 e && !e.destroyed && e.initialized && (s("beforeResize"), s("resize")); 32587 }, 32588 l = function l() { 32589 e && !e.destroyed && e.initialized && s("orientationchange"); 32590 }; 32591 t("init", function () { 32592 e.params.resizeObserver && void 0 !== a.ResizeObserver ? e && !e.destroyed && e.initialized && (i = new ResizeObserver(function (t) { 32593 var s = e.width, 32594 a = e.height; 32595 var i = s, 32596 r = a; 32597 t.forEach(function (_ref6) { 32598 var t = _ref6.contentBoxSize, 32599 s = _ref6.contentRect, 32600 a = _ref6.target; 32601 a && a !== e.el || (i = s ? s.width : (t[0] || t).inlineSize, r = s ? s.height : (t[0] || t).blockSize); 32602 }), i === s && r === a || n(); 32603 }), i.observe(e.el)) : (a.addEventListener("resize", n), a.addEventListener("orientationchange", l)); 32604 }), t("destroy", function () { 32605 i && i.unobserve && e.el && (i.unobserve(e.el), i = null), a.removeEventListener("resize", n), a.removeEventListener("orientationchange", l); 32606 }); 32607 }, function (_ref7) { 32608 var e = _ref7.swiper, 32609 t = _ref7.extendParams, 32610 s = _ref7.on, 32611 a = _ref7.emit; 32612 var i = [], 32613 n = r(), 32614 l = function l(e) { 32615 var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 32616 var s = new (n.MutationObserver || n.WebkitMutationObserver)(function (e) { 32617 if (1 === e.length) return void a("observerUpdate", e[0]); 32618 var t = function t() { 32619 a("observerUpdate", e[0]); 32620 }; 32621 n.requestAnimationFrame ? n.requestAnimationFrame(t) : n.setTimeout(t, 0); 32622 }); 32623 s.observe(e, { 32624 attributes: void 0 === t.attributes || t.attributes, 32625 childList: void 0 === t.childList || t.childList, 32626 characterData: void 0 === t.characterData || t.characterData 32627 }), i.push(s); 32628 }; 32629 t({ 32630 observer: !1, 32631 observeParents: !1, 32632 observeSlideChildren: !1 32633 }), s("init", function () { 32634 if (e.params.observer) { 32635 if (e.params.observeParents) { 32636 var _t32 = e.$el.parents(); 32637 for (var _e56 = 0; _e56 < _t32.length; _e56 += 1) { 32638 l(_t32[_e56]); 32639 } 32640 } 32641 l(e.$el[0], { 32642 childList: e.params.observeSlideChildren 32643 }), l(e.$wrapperEl[0], { 32644 attributes: !1 32645 }); 32646 } 32647 }), s("destroy", function () { 32648 i.forEach(function (e) { 32649 e.disconnect(); 32650 }), i.splice(0, i.length); 32651 }); 32652 }]); 32653 var J = [function (_ref8) { 32654 var e = _ref8.swiper, 32655 t = _ref8.extendParams, 32656 s = _ref8.on; 32657 var a; 32658 function i(t, s) { 32659 var a = e.params.virtual; 32660 if (a.cache && e.virtual.cache[s]) return e.virtual.cache[s]; 32661 var i = a.renderSlide ? d(a.renderSlide.call(e, t, s)) : d("<div class=\"".concat(e.params.slideClass, "\" data-swiper-slide-index=\"").concat(s, "\">").concat(t, "</div>")); 32662 return i.attr("data-swiper-slide-index") || i.attr("data-swiper-slide-index", s), a.cache && (e.virtual.cache[s] = i), i; 32663 } 32664 function r(t) { 32665 var _e$params = e.params, 32666 s = _e$params.slidesPerView, 32667 a = _e$params.slidesPerGroup, 32668 r = _e$params.centeredSlides, 32669 _e$params$virtual = e.params.virtual, 32670 n = _e$params$virtual.addSlidesBefore, 32671 l = _e$params$virtual.addSlidesAfter, 32672 _e$virtual = e.virtual, 32673 o = _e$virtual.from, 32674 d = _e$virtual.to, 32675 c = _e$virtual.slides, 32676 p = _e$virtual.slidesGrid, 32677 u = _e$virtual.offset; 32678 e.params.cssMode || e.updateActiveIndex(); 32679 var h = e.activeIndex || 0; 32680 var m, f, g; 32681 m = e.rtlTranslate ? "right" : e.isHorizontal() ? "left" : "top", r ? (f = Math.floor(s / 2) + a + l, g = Math.floor(s / 2) + a + n) : (f = s + (a - 1) + l, g = a + n); 32682 var v = Math.max((h || 0) - g, 0), 32683 w = Math.min((h || 0) + f, c.length - 1), 32684 b = (e.slidesGrid[v] || 0) - (e.slidesGrid[0] || 0); 32685 function x() { 32686 e.updateSlides(), e.updateProgress(), e.updateSlidesClasses(), e.lazy && e.params.lazy.enabled && e.lazy.load(); 32687 } 32688 if (Object.assign(e.virtual, { 32689 from: v, 32690 to: w, 32691 offset: b, 32692 slidesGrid: e.slidesGrid 32693 }), o === v && d === w && !t) return e.slidesGrid !== p && b !== u && e.slides.css(m, "".concat(b, "px")), void e.updateProgress(); 32694 if (e.params.virtual.renderExternal) return e.params.virtual.renderExternal.call(e, { 32695 offset: b, 32696 from: v, 32697 to: w, 32698 slides: function () { 32699 var e = []; 32700 for (var _t33 = v; _t33 <= w; _t33 += 1) { 32701 e.push(c[_t33]); 32702 } 32703 return e; 32704 }() 32705 }), void (e.params.virtual.renderExternalUpdate && x()); 32706 var y = [], 32707 E = []; 32708 if (t) e.$wrapperEl.find(".".concat(e.params.slideClass)).remove();else for (var _t34 = o; _t34 <= d; _t34 += 1) { 32709 (_t34 < v || _t34 > w) && e.$wrapperEl.find(".".concat(e.params.slideClass, "[data-swiper-slide-index=\"").concat(_t34, "\"]")).remove(); 32710 } 32711 for (var _e57 = 0; _e57 < c.length; _e57 += 1) { 32712 _e57 >= v && _e57 <= w && (void 0 === d || t ? E.push(_e57) : (_e57 > d && E.push(_e57), _e57 < o && y.push(_e57))); 32713 } 32714 E.forEach(function (t) { 32715 e.$wrapperEl.append(i(c[t], t)); 32716 }), y.sort(function (e, t) { 32717 return t - e; 32718 }).forEach(function (t) { 32719 e.$wrapperEl.prepend(i(c[t], t)); 32720 }), e.$wrapperEl.children(".swiper-slide").css(m, "".concat(b, "px")), x(); 32721 } 32722 t({ 32723 virtual: { 32724 enabled: !1, 32725 slides: [], 32726 cache: !0, 32727 renderSlide: null, 32728 renderExternal: null, 32729 renderExternalUpdate: !0, 32730 addSlidesBefore: 0, 32731 addSlidesAfter: 0 32732 } 32733 }), e.virtual = { 32734 cache: {}, 32735 from: void 0, 32736 to: void 0, 32737 slides: [], 32738 offset: 0, 32739 slidesGrid: [] 32740 }, s("beforeInit", function () { 32741 e.params.virtual.enabled && (e.virtual.slides = e.params.virtual.slides, e.classNames.push("".concat(e.params.containerModifierClass, "virtual")), e.params.watchSlidesProgress = !0, e.originalParams.watchSlidesProgress = !0, e.params.initialSlide || r()); 32742 }), s("setTranslate", function () { 32743 e.params.virtual.enabled && (e.params.cssMode && !e._immediateVirtual ? (clearTimeout(a), a = setTimeout(function () { 32744 r(); 32745 }, 100)) : r()); 32746 }), s("init update resize", function () { 32747 e.params.virtual.enabled && e.params.cssMode && g(e.wrapperEl, "--swiper-virtual-size", "".concat(e.virtualSize, "px")); 32748 }), Object.assign(e.virtual, { 32749 appendSlide: function appendSlide(t) { 32750 if ("object" == _typeof(t) && "length" in t) for (var _s31 = 0; _s31 < t.length; _s31 += 1) { 32751 t[_s31] && e.virtual.slides.push(t[_s31]); 32752 } else e.virtual.slides.push(t); 32753 r(!0); 32754 }, 32755 prependSlide: function prependSlide(t) { 32756 var s = e.activeIndex; 32757 var a = s + 1, 32758 i = 1; 32759 if (Array.isArray(t)) { 32760 for (var _s32 = 0; _s32 < t.length; _s32 += 1) { 32761 t[_s32] && e.virtual.slides.unshift(t[_s32]); 32762 } 32763 a = s + t.length, i = t.length; 32764 } else e.virtual.slides.unshift(t); 32765 if (e.params.virtual.cache) { 32766 var _t35 = e.virtual.cache, 32767 _s33 = {}; 32768 Object.keys(_t35).forEach(function (e) { 32769 var a = _t35[e], 32770 r = a.attr("data-swiper-slide-index"); 32771 r && a.attr("data-swiper-slide-index", parseInt(r, 10) + i), _s33[parseInt(e, 10) + i] = a; 32772 }), e.virtual.cache = _s33; 32773 } 32774 r(!0), e.slideTo(a, 0); 32775 }, 32776 removeSlide: function removeSlide(t) { 32777 if (null == t) return; 32778 var s = e.activeIndex; 32779 if (Array.isArray(t)) for (var _a16 = t.length - 1; _a16 >= 0; _a16 -= 1) { 32780 e.virtual.slides.splice(t[_a16], 1), e.params.virtual.cache && delete e.virtual.cache[t[_a16]], t[_a16] < s && (s -= 1), s = Math.max(s, 0); 32781 } else e.virtual.slides.splice(t, 1), e.params.virtual.cache && delete e.virtual.cache[t], t < s && (s -= 1), s = Math.max(s, 0); 32782 r(!0), e.slideTo(s, 0); 32783 }, 32784 removeAllSlides: function removeAllSlides() { 32785 e.virtual.slides = [], e.params.virtual.cache && (e.virtual.cache = {}), r(!0), e.slideTo(0, 0); 32786 }, 32787 update: r 32788 }); 32789 }, function (_ref9) { 32790 var e = _ref9.swiper, 32791 t = _ref9.extendParams, 32792 s = _ref9.on, 32793 i = _ref9.emit; 32794 var n = a(), 32795 l = r(); 32796 function o(t) { 32797 if (!e.enabled) return; 32798 var s = e.rtlTranslate; 32799 var a = t; 32800 a.originalEvent && (a = a.originalEvent); 32801 var r = a.keyCode || a.charCode, 32802 o = e.params.keyboard.pageUpDown, 32803 d = o && 33 === r, 32804 c = o && 34 === r, 32805 p = 37 === r, 32806 u = 39 === r, 32807 h = 38 === r, 32808 m = 40 === r; 32809 if (!e.allowSlideNext && (e.isHorizontal() && u || e.isVertical() && m || c)) return !1; 32810 if (!e.allowSlidePrev && (e.isHorizontal() && p || e.isVertical() && h || d)) return !1; 32811 if (!(a.shiftKey || a.altKey || a.ctrlKey || a.metaKey || n.activeElement && n.activeElement.nodeName && ("input" === n.activeElement.nodeName.toLowerCase() || "textarea" === n.activeElement.nodeName.toLowerCase()))) { 32812 if (e.params.keyboard.onlyInViewport && (d || c || p || u || h || m)) { 32813 var _t36 = !1; 32814 if (e.$el.parents(".".concat(e.params.slideClass)).length > 0 && 0 === e.$el.parents(".".concat(e.params.slideActiveClass)).length) return; 32815 var _a17 = e.$el, 32816 _i10 = _a17[0].clientWidth, 32817 _r8 = _a17[0].clientHeight, 32818 _n8 = l.innerWidth, 32819 _o5 = l.innerHeight, 32820 _d4 = e.$el.offset(); 32821 s && (_d4.left -= e.$el[0].scrollLeft); 32822 var _c3 = [[_d4.left, _d4.top], [_d4.left + _i10, _d4.top], [_d4.left, _d4.top + _r8], [_d4.left + _i10, _d4.top + _r8]]; 32823 for (var _e58 = 0; _e58 < _c3.length; _e58 += 1) { 32824 var _s34 = _c3[_e58]; 32825 if (_s34[0] >= 0 && _s34[0] <= _n8 && _s34[1] >= 0 && _s34[1] <= _o5) { 32826 if (0 === _s34[0] && 0 === _s34[1]) continue; 32827 _t36 = !0; 32828 } 32829 } 32830 if (!_t36) return; 32831 } 32832 e.isHorizontal() ? ((d || c || p || u) && (a.preventDefault ? a.preventDefault() : a.returnValue = !1), ((c || u) && !s || (d || p) && s) && e.slideNext(), ((d || p) && !s || (c || u) && s) && e.slidePrev()) : ((d || c || h || m) && (a.preventDefault ? a.preventDefault() : a.returnValue = !1), (c || m) && e.slideNext(), (d || h) && e.slidePrev()), i("keyPress", r); 32833 } 32834 } 32835 function c() { 32836 e.keyboard.enabled || (d(n).on("keydown", o), e.keyboard.enabled = !0); 32837 } 32838 function p() { 32839 e.keyboard.enabled && (d(n).off("keydown", o), e.keyboard.enabled = !1); 32840 } 32841 e.keyboard = { 32842 enabled: !1 32843 }, t({ 32844 keyboard: { 32845 enabled: !1, 32846 onlyInViewport: !0, 32847 pageUpDown: !0 32848 } 32849 }), s("init", function () { 32850 e.params.keyboard.enabled && c(); 32851 }), s("destroy", function () { 32852 e.keyboard.enabled && p(); 32853 }), Object.assign(e.keyboard, { 32854 enable: c, 32855 disable: p 32856 }); 32857 }, function (_ref10) { 32858 var e = _ref10.swiper, 32859 t = _ref10.extendParams, 32860 s = _ref10.on, 32861 a = _ref10.emit; 32862 var i = r(); 32863 var n; 32864 t({ 32865 mousewheel: { 32866 enabled: !1, 32867 releaseOnEdges: !1, 32868 invert: !1, 32869 forceToAxis: !1, 32870 sensitivity: 1, 32871 eventsTarget: "container", 32872 thresholdDelta: null, 32873 thresholdTime: null 32874 } 32875 }), e.mousewheel = { 32876 enabled: !1 32877 }; 32878 var l, 32879 o = u(); 32880 var c = []; 32881 function h() { 32882 e.enabled && (e.mouseEntered = !0); 32883 } 32884 function m() { 32885 e.enabled && (e.mouseEntered = !1); 32886 } 32887 function f(t) { 32888 return !(e.params.mousewheel.thresholdDelta && t.delta < e.params.mousewheel.thresholdDelta) && !(e.params.mousewheel.thresholdTime && u() - o < e.params.mousewheel.thresholdTime) && (t.delta >= 6 && u() - o < 60 || (t.direction < 0 ? e.isEnd && !e.params.loop || e.animating || (e.slideNext(), a("scroll", t.raw)) : e.isBeginning && !e.params.loop || e.animating || (e.slidePrev(), a("scroll", t.raw)), o = new i.Date().getTime(), !1)); 32889 } 32890 function g(t) { 32891 var s = t, 32892 i = !0; 32893 if (!e.enabled) return; 32894 var r = e.params.mousewheel; 32895 e.params.cssMode && s.preventDefault(); 32896 var o = e.$el; 32897 if ("container" !== e.params.mousewheel.eventsTarget && (o = d(e.params.mousewheel.eventsTarget)), !e.mouseEntered && !o[0].contains(s.target) && !r.releaseOnEdges) return !0; 32898 s.originalEvent && (s = s.originalEvent); 32899 var h = 0; 32900 var m = e.rtlTranslate ? -1 : 1, 32901 g = function (e) { 32902 var t = 0, 32903 s = 0, 32904 a = 0, 32905 i = 0; 32906 return "detail" in e && (s = e.detail), "wheelDelta" in e && (s = -e.wheelDelta / 120), "wheelDeltaY" in e && (s = -e.wheelDeltaY / 120), "wheelDeltaX" in e && (t = -e.wheelDeltaX / 120), "axis" in e && e.axis === e.HORIZONTAL_AXIS && (t = s, s = 0), a = 10 * t, i = 10 * s, "deltaY" in e && (i = e.deltaY), "deltaX" in e && (a = e.deltaX), e.shiftKey && !a && (a = i, i = 0), (a || i) && e.deltaMode && (1 === e.deltaMode ? (a *= 40, i *= 40) : (a *= 800, i *= 800)), a && !t && (t = a < 1 ? -1 : 1), i && !s && (s = i < 1 ? -1 : 1), { 32907 spinX: t, 32908 spinY: s, 32909 pixelX: a, 32910 pixelY: i 32911 }; 32912 }(s); 32913 if (r.forceToAxis) { 32914 if (e.isHorizontal()) { 32915 if (!(Math.abs(g.pixelX) > Math.abs(g.pixelY))) return !0; 32916 h = -g.pixelX * m; 32917 } else { 32918 if (!(Math.abs(g.pixelY) > Math.abs(g.pixelX))) return !0; 32919 h = -g.pixelY; 32920 } 32921 } else h = Math.abs(g.pixelX) > Math.abs(g.pixelY) ? -g.pixelX * m : -g.pixelY; 32922 if (0 === h) return !0; 32923 r.invert && (h = -h); 32924 var v = e.getTranslate() + h * r.sensitivity; 32925 if (v >= e.minTranslate() && (v = e.minTranslate()), v <= e.maxTranslate() && (v = e.maxTranslate()), i = !!e.params.loop || !(v === e.minTranslate() || v === e.maxTranslate()), i && e.params.nested && s.stopPropagation(), e.params.freeMode && e.params.freeMode.enabled) { 32926 var _t37 = { 32927 time: u(), 32928 delta: Math.abs(h), 32929 direction: Math.sign(h) 32930 }, 32931 _i11 = l && _t37.time < l.time + 500 && _t37.delta <= l.delta && _t37.direction === l.direction; 32932 if (!_i11) { 32933 l = void 0, e.params.loop && e.loopFix(); 32934 var _o6 = e.getTranslate() + h * r.sensitivity; 32935 var _d5 = e.isBeginning, 32936 _u = e.isEnd; 32937 if (_o6 >= e.minTranslate() && (_o6 = e.minTranslate()), _o6 <= e.maxTranslate() && (_o6 = e.maxTranslate()), e.setTransition(0), e.setTranslate(_o6), e.updateProgress(), e.updateActiveIndex(), e.updateSlidesClasses(), (!_d5 && e.isBeginning || !_u && e.isEnd) && e.updateSlidesClasses(), e.params.freeMode.sticky) { 32938 clearTimeout(n), n = void 0, c.length >= 15 && c.shift(); 32939 var _s35 = c.length ? c[c.length - 1] : void 0, 32940 _a18 = c[0]; 32941 if (c.push(_t37), _s35 && (_t37.delta > _s35.delta || _t37.direction !== _s35.direction)) c.splice(0);else if (c.length >= 15 && _t37.time - _a18.time < 500 && _a18.delta - _t37.delta >= 1 && _t37.delta <= 6) { 32942 var _s36 = h > 0 ? .8 : .2; 32943 l = _t37, c.splice(0), n = p(function () { 32944 e.slideToClosest(e.params.speed, !0, void 0, _s36); 32945 }, 0); 32946 } 32947 n || (n = p(function () { 32948 l = _t37, c.splice(0), e.slideToClosest(e.params.speed, !0, void 0, .5); 32949 }, 500)); 32950 } 32951 if (_i11 || a("scroll", s), e.params.autoplay && e.params.autoplayDisableOnInteraction && e.autoplay.stop(), _o6 === e.minTranslate() || _o6 === e.maxTranslate()) return !0; 32952 } 32953 } else { 32954 var _s37 = { 32955 time: u(), 32956 delta: Math.abs(h), 32957 direction: Math.sign(h), 32958 raw: t 32959 }; 32960 c.length >= 2 && c.shift(); 32961 var _a19 = c.length ? c[c.length - 1] : void 0; 32962 if (c.push(_s37), _a19 ? (_s37.direction !== _a19.direction || _s37.delta > _a19.delta || _s37.time > _a19.time + 150) && f(_s37) : f(_s37), function (t) { 32963 var s = e.params.mousewheel; 32964 if (t.direction < 0) { 32965 if (e.isEnd && !e.params.loop && s.releaseOnEdges) return !0; 32966 } else if (e.isBeginning && !e.params.loop && s.releaseOnEdges) return !0; 32967 return !1; 32968 }(_s37)) return !0; 32969 } 32970 return s.preventDefault ? s.preventDefault() : s.returnValue = !1, !1; 32971 } 32972 function v(t) { 32973 var s = e.$el; 32974 "container" !== e.params.mousewheel.eventsTarget && (s = d(e.params.mousewheel.eventsTarget)), s[t]("mouseenter", h), s[t]("mouseleave", m), s[t]("wheel", g); 32975 } 32976 function w() { 32977 return e.params.cssMode ? (e.wrapperEl.removeEventListener("wheel", g), !0) : !e.mousewheel.enabled && (v("on"), e.mousewheel.enabled = !0, !0); 32978 } 32979 function b() { 32980 return e.params.cssMode ? (e.wrapperEl.addEventListener(event, g), !0) : !!e.mousewheel.enabled && (v("off"), e.mousewheel.enabled = !1, !0); 32981 } 32982 s("init", function () { 32983 !e.params.mousewheel.enabled && e.params.cssMode && b(), e.params.mousewheel.enabled && w(); 32984 }), s("destroy", function () { 32985 e.params.cssMode && w(), e.mousewheel.enabled && b(); 32986 }), Object.assign(e.mousewheel, { 32987 enable: w, 32988 disable: b 32989 }); 32990 }, function (_ref11) { 32991 var e = _ref11.swiper, 32992 t = _ref11.extendParams, 32993 s = _ref11.on, 32994 a = _ref11.emit; 32995 function i(t) { 32996 var s; 32997 return t && (s = d(t), e.params.uniqueNavElements && "string" == typeof t && s.length > 1 && 1 === e.$el.find(t).length && (s = e.$el.find(t))), s; 32998 } 32999 function r(t, s) { 33000 var a = e.params.navigation; 33001 t && t.length > 0 && (t[s ? "addClass" : "removeClass"](a.disabledClass), t[0] && "BUTTON" === t[0].tagName && (t[0].disabled = s), e.params.watchOverflow && e.enabled && t[e.isLocked ? "addClass" : "removeClass"](a.lockClass)); 33002 } 33003 function n() { 33004 if (e.params.loop) return; 33005 var _e$navigation = e.navigation, 33006 t = _e$navigation.$nextEl, 33007 s = _e$navigation.$prevEl; 33008 r(s, e.isBeginning), r(t, e.isEnd); 33009 } 33010 function l(t) { 33011 t.preventDefault(), e.isBeginning && !e.params.loop || e.slidePrev(); 33012 } 33013 function o(t) { 33014 t.preventDefault(), e.isEnd && !e.params.loop || e.slideNext(); 33015 } 33016 function c() { 33017 var t = e.params.navigation; 33018 if (e.params.navigation = Y(e, e.originalParams.navigation, e.params.navigation, { 33019 nextEl: "swiper-button-next", 33020 prevEl: "swiper-button-prev" 33021 }), !t.nextEl && !t.prevEl) return; 33022 var s = i(t.nextEl), 33023 a = i(t.prevEl); 33024 s && s.length > 0 && s.on("click", o), a && a.length > 0 && a.on("click", l), Object.assign(e.navigation, { 33025 $nextEl: s, 33026 nextEl: s && s[0], 33027 $prevEl: a, 33028 prevEl: a && a[0] 33029 }), e.enabled || (s && s.addClass(t.lockClass), a && a.addClass(t.lockClass)); 33030 } 33031 function p() { 33032 var _e$navigation2 = e.navigation, 33033 t = _e$navigation2.$nextEl, 33034 s = _e$navigation2.$prevEl; 33035 t && t.length && (t.off("click", o), t.removeClass(e.params.navigation.disabledClass)), s && s.length && (s.off("click", l), s.removeClass(e.params.navigation.disabledClass)); 33036 } 33037 t({ 33038 navigation: { 33039 nextEl: null, 33040 prevEl: null, 33041 hideOnClick: !1, 33042 disabledClass: "swiper-button-disabled", 33043 hiddenClass: "swiper-button-hidden", 33044 lockClass: "swiper-button-lock" 33045 } 33046 }), e.navigation = { 33047 nextEl: null, 33048 $nextEl: null, 33049 prevEl: null, 33050 $prevEl: null 33051 }, s("init", function () { 33052 c(), n(); 33053 }), s("toEdge fromEdge lock unlock", function () { 33054 n(); 33055 }), s("destroy", function () { 33056 p(); 33057 }), s("enable disable", function () { 33058 var _e$navigation3 = e.navigation, 33059 t = _e$navigation3.$nextEl, 33060 s = _e$navigation3.$prevEl; 33061 t && t[e.enabled ? "removeClass" : "addClass"](e.params.navigation.lockClass), s && s[e.enabled ? "removeClass" : "addClass"](e.params.navigation.lockClass); 33062 }), s("click", function (t, s) { 33063 var _e$navigation4 = e.navigation, 33064 i = _e$navigation4.$nextEl, 33065 r = _e$navigation4.$prevEl, 33066 n = s.target; 33067 if (e.params.navigation.hideOnClick && !d(n).is(r) && !d(n).is(i)) { 33068 if (e.pagination && e.params.pagination && e.params.pagination.clickable && (e.pagination.el === n || e.pagination.el.contains(n))) return; 33069 var _t38; 33070 i ? _t38 = i.hasClass(e.params.navigation.hiddenClass) : r && (_t38 = r.hasClass(e.params.navigation.hiddenClass)), a(!0 === _t38 ? "navigationShow" : "navigationHide"), i && i.toggleClass(e.params.navigation.hiddenClass), r && r.toggleClass(e.params.navigation.hiddenClass); 33071 } 33072 }), Object.assign(e.navigation, { 33073 update: n, 33074 init: c, 33075 destroy: p 33076 }); 33077 }, function (_ref12) { 33078 var e = _ref12.swiper, 33079 t = _ref12.extendParams, 33080 s = _ref12.on, 33081 a = _ref12.emit; 33082 var i = "swiper-pagination"; 33083 var r; 33084 t({ 33085 pagination: { 33086 el: null, 33087 bulletElement: "span", 33088 clickable: !1, 33089 hideOnClick: !1, 33090 renderBullet: null, 33091 renderProgressbar: null, 33092 renderFraction: null, 33093 renderCustom: null, 33094 progressbarOpposite: !1, 33095 type: "bullets", 33096 dynamicBullets: !1, 33097 dynamicMainBullets: 1, 33098 formatFractionCurrent: function formatFractionCurrent(e) { 33099 return e; 33100 }, 33101 formatFractionTotal: function formatFractionTotal(e) { 33102 return e; 33103 }, 33104 bulletClass: "".concat(i, "-bullet"), 33105 bulletActiveClass: "".concat(i, "-bullet-active"), 33106 modifierClass: "".concat(i, "-"), 33107 currentClass: "".concat(i, "-current"), 33108 totalClass: "".concat(i, "-total"), 33109 hiddenClass: "".concat(i, "-hidden"), 33110 progressbarFillClass: "".concat(i, "-progressbar-fill"), 33111 progressbarOppositeClass: "".concat(i, "-progressbar-opposite"), 33112 clickableClass: "".concat(i, "-clickable"), 33113 lockClass: "".concat(i, "-lock"), 33114 horizontalClass: "".concat(i, "-horizontal"), 33115 verticalClass: "".concat(i, "-vertical") 33116 } 33117 }), e.pagination = { 33118 el: null, 33119 $el: null, 33120 bullets: [] 33121 }; 33122 var n = 0; 33123 function l() { 33124 return !e.params.pagination.el || !e.pagination.el || !e.pagination.$el || 0 === e.pagination.$el.length; 33125 } 33126 function o(t, s) { 33127 var a = e.params.pagination.bulletActiveClass; 33128 t[s]().addClass("".concat(a, "-").concat(s))[s]().addClass("".concat(a, "-").concat(s, "-").concat(s)); 33129 } 33130 function c() { 33131 var t = e.rtl, 33132 s = e.params.pagination; 33133 if (l()) return; 33134 var i = e.virtual && e.params.virtual.enabled ? e.virtual.slides.length : e.slides.length, 33135 c = e.pagination.$el; 33136 var p; 33137 var u = e.params.loop ? Math.ceil((i - 2 * e.loopedSlides) / e.params.slidesPerGroup) : e.snapGrid.length; 33138 if (e.params.loop ? (p = Math.ceil((e.activeIndex - e.loopedSlides) / e.params.slidesPerGroup), p > i - 1 - 2 * e.loopedSlides && (p -= i - 2 * e.loopedSlides), p > u - 1 && (p -= u), p < 0 && "bullets" !== e.params.paginationType && (p = u + p)) : p = void 0 !== e.snapIndex ? e.snapIndex : e.activeIndex || 0, "bullets" === s.type && e.pagination.bullets && e.pagination.bullets.length > 0) { 33139 var _a20 = e.pagination.bullets; 33140 var _i12, _l6, _u2; 33141 if (s.dynamicBullets && (r = _a20.eq(0)[e.isHorizontal() ? "outerWidth" : "outerHeight"](!0), c.css(e.isHorizontal() ? "width" : "height", r * (s.dynamicMainBullets + 4) + "px"), s.dynamicMainBullets > 1 && void 0 !== e.previousIndex && (n += p - e.previousIndex, n > s.dynamicMainBullets - 1 ? n = s.dynamicMainBullets - 1 : n < 0 && (n = 0)), _i12 = p - n, _l6 = _i12 + (Math.min(_a20.length, s.dynamicMainBullets) - 1), _u2 = (_l6 + _i12) / 2), _a20.removeClass(["", "-next", "-next-next", "-prev", "-prev-prev", "-main"].map(function (e) { 33142 return "".concat(s.bulletActiveClass).concat(e); 33143 }).join(" ")), c.length > 1) _a20.each(function (e) { 33144 var t = d(e), 33145 a = t.index(); 33146 a === p && t.addClass(s.bulletActiveClass), s.dynamicBullets && (a >= _i12 && a <= _l6 && t.addClass("".concat(s.bulletActiveClass, "-main")), a === _i12 && o(t, "prev"), a === _l6 && o(t, "next")); 33147 });else { 33148 var _t39 = _a20.eq(p), 33149 _r9 = _t39.index(); 33150 if (_t39.addClass(s.bulletActiveClass), s.dynamicBullets) { 33151 var _t40 = _a20.eq(_i12), 33152 _n9 = _a20.eq(_l6); 33153 for (var _e59 = _i12; _e59 <= _l6; _e59 += 1) { 33154 _a20.eq(_e59).addClass("".concat(s.bulletActiveClass, "-main")); 33155 } 33156 if (e.params.loop) { 33157 if (_r9 >= _a20.length - s.dynamicMainBullets) { 33158 for (var _e60 = s.dynamicMainBullets; _e60 >= 0; _e60 -= 1) { 33159 _a20.eq(_a20.length - _e60).addClass("".concat(s.bulletActiveClass, "-main")); 33160 } 33161 _a20.eq(_a20.length - s.dynamicMainBullets - 1).addClass("".concat(s.bulletActiveClass, "-prev")); 33162 } else o(_t40, "prev"), o(_n9, "next"); 33163 } else o(_t40, "prev"), o(_n9, "next"); 33164 } 33165 } 33166 if (s.dynamicBullets) { 33167 var _i13 = Math.min(_a20.length, s.dynamicMainBullets + 4), 33168 _n10 = (r * _i13 - r) / 2 - _u2 * r, 33169 _l7 = t ? "right" : "left"; 33170 _a20.css(e.isHorizontal() ? _l7 : "top", "".concat(_n10, "px")); 33171 } 33172 } 33173 if ("fraction" === s.type && (c.find(W(s.currentClass)).text(s.formatFractionCurrent(p + 1)), c.find(W(s.totalClass)).text(s.formatFractionTotal(u))), "progressbar" === s.type) { 33174 var _t41; 33175 _t41 = s.progressbarOpposite ? e.isHorizontal() ? "vertical" : "horizontal" : e.isHorizontal() ? "horizontal" : "vertical"; 33176 var _a21 = (p + 1) / u; 33177 var _i14 = 1, 33178 _r10 = 1; 33179 "horizontal" === _t41 ? _i14 = _a21 : _r10 = _a21, c.find(W(s.progressbarFillClass)).transform("translate3d(0,0,0) scaleX(".concat(_i14, ") scaleY(").concat(_r10, ")")).transition(e.params.speed); 33180 } 33181 "custom" === s.type && s.renderCustom ? (c.html(s.renderCustom(e, p + 1, u)), a("paginationRender", c[0])) : a("paginationUpdate", c[0]), e.params.watchOverflow && e.enabled && c[e.isLocked ? "addClass" : "removeClass"](s.lockClass); 33182 } 33183 function p() { 33184 var t = e.params.pagination; 33185 if (l()) return; 33186 var s = e.virtual && e.params.virtual.enabled ? e.virtual.slides.length : e.slides.length, 33187 i = e.pagination.$el; 33188 var r = ""; 33189 if ("bullets" === t.type) { 33190 var _a22 = e.params.loop ? Math.ceil((s - 2 * e.loopedSlides) / e.params.slidesPerGroup) : e.snapGrid.length; 33191 e.params.freeMode && e.params.freeMode.enabled && !e.params.loop && _a22 > s && (_a22 = s); 33192 for (var _s38 = 0; _s38 < _a22; _s38 += 1) { 33193 t.renderBullet ? r += t.renderBullet.call(e, _s38, t.bulletClass) : r += "<".concat(t.bulletElement, " class=\"").concat(t.bulletClass, "\"></").concat(t.bulletElement, ">"); 33194 } 33195 i.html(r), e.pagination.bullets = i.find(W(t.bulletClass)); 33196 } 33197 "fraction" === t.type && (r = t.renderFraction ? t.renderFraction.call(e, t.currentClass, t.totalClass) : "<span class=\"".concat(t.currentClass, "\"></span> / <span class=\"").concat(t.totalClass, "\"></span>"), i.html(r)), "progressbar" === t.type && (r = t.renderProgressbar ? t.renderProgressbar.call(e, t.progressbarFillClass) : "<span class=\"".concat(t.progressbarFillClass, "\"></span>"), i.html(r)), "custom" !== t.type && a("paginationRender", e.pagination.$el[0]); 33198 } 33199 function u() { 33200 e.params.pagination = Y(e, e.originalParams.pagination, e.params.pagination, { 33201 el: "swiper-pagination" 33202 }); 33203 var t = e.params.pagination; 33204 if (!t.el) return; 33205 var s = d(t.el); 33206 0 !== s.length && (e.params.uniqueNavElements && "string" == typeof t.el && s.length > 1 && (s = e.$el.find(t.el), s.length > 1 && (s = s.filter(function (t) { 33207 return d(t).parents(".swiper")[0] === e.el; 33208 }))), "bullets" === t.type && t.clickable && s.addClass(t.clickableClass), s.addClass(t.modifierClass + t.type), s.addClass(t.modifierClass + e.params.direction), "bullets" === t.type && t.dynamicBullets && (s.addClass("".concat(t.modifierClass).concat(t.type, "-dynamic")), n = 0, t.dynamicMainBullets < 1 && (t.dynamicMainBullets = 1)), "progressbar" === t.type && t.progressbarOpposite && s.addClass(t.progressbarOppositeClass), t.clickable && s.on("click", W(t.bulletClass), function (t) { 33209 t.preventDefault(); 33210 var s = d(this).index() * e.params.slidesPerGroup; 33211 e.params.loop && (s += e.loopedSlides), e.slideTo(s); 33212 }), Object.assign(e.pagination, { 33213 $el: s, 33214 el: s[0] 33215 }), e.enabled || s.addClass(t.lockClass)); 33216 } 33217 function h() { 33218 var t = e.params.pagination; 33219 if (l()) return; 33220 var s = e.pagination.$el; 33221 s.removeClass(t.hiddenClass), s.removeClass(t.modifierClass + t.type), s.removeClass(t.modifierClass + e.params.direction), e.pagination.bullets && e.pagination.bullets.removeClass && e.pagination.bullets.removeClass(t.bulletActiveClass), t.clickable && s.off("click", W(t.bulletClass)); 33222 } 33223 s("init", function () { 33224 u(), p(), c(); 33225 }), s("activeIndexChange", function () { 33226 (e.params.loop || void 0 === e.snapIndex) && c(); 33227 }), s("snapIndexChange", function () { 33228 e.params.loop || c(); 33229 }), s("slidesLengthChange", function () { 33230 e.params.loop && (p(), c()); 33231 }), s("snapGridLengthChange", function () { 33232 e.params.loop || (p(), c()); 33233 }), s("destroy", function () { 33234 h(); 33235 }), s("enable disable", function () { 33236 var t = e.pagination.$el; 33237 t && t[e.enabled ? "removeClass" : "addClass"](e.params.pagination.lockClass); 33238 }), s("lock unlock", function () { 33239 c(); 33240 }), s("click", function (t, s) { 33241 var i = s.target, 33242 r = e.pagination.$el; 33243 if (e.params.pagination.el && e.params.pagination.hideOnClick && r.length > 0 && !d(i).hasClass(e.params.pagination.bulletClass)) { 33244 if (e.navigation && (e.navigation.nextEl && i === e.navigation.nextEl || e.navigation.prevEl && i === e.navigation.prevEl)) return; 33245 var _t42 = r.hasClass(e.params.pagination.hiddenClass); 33246 a(!0 === _t42 ? "paginationShow" : "paginationHide"), r.toggleClass(e.params.pagination.hiddenClass); 33247 } 33248 }), Object.assign(e.pagination, { 33249 render: p, 33250 update: c, 33251 init: u, 33252 destroy: h 33253 }); 33254 }, function (_ref13) { 33255 var e = _ref13.swiper, 33256 t = _ref13.extendParams, 33257 s = _ref13.on, 33258 i = _ref13.emit; 33259 var r = a(); 33260 var n, 33261 l, 33262 o, 33263 c, 33264 u = !1, 33265 h = null, 33266 m = null; 33267 function f() { 33268 if (!e.params.scrollbar.el || !e.scrollbar.el) return; 33269 var t = e.scrollbar, 33270 s = e.rtlTranslate, 33271 a = e.progress, 33272 i = t.$dragEl, 33273 r = t.$el, 33274 n = e.params.scrollbar; 33275 var d = l, 33276 c = (o - l) * a; 33277 s ? (c = -c, c > 0 ? (d = l - c, c = 0) : -c + l > o && (d = o + c)) : c < 0 ? (d = l + c, c = 0) : c + l > o && (d = o - c), e.isHorizontal() ? (i.transform("translate3d(".concat(c, "px, 0, 0)")), i[0].style.width = "".concat(d, "px")) : (i.transform("translate3d(0px, ".concat(c, "px, 0)")), i[0].style.height = "".concat(d, "px")), n.hide && (clearTimeout(h), r[0].style.opacity = 1, h = setTimeout(function () { 33278 r[0].style.opacity = 0, r.transition(400); 33279 }, 1e3)); 33280 } 33281 function g() { 33282 if (!e.params.scrollbar.el || !e.scrollbar.el) return; 33283 var t = e.scrollbar, 33284 s = t.$dragEl, 33285 a = t.$el; 33286 s[0].style.width = "", s[0].style.height = "", o = e.isHorizontal() ? a[0].offsetWidth : a[0].offsetHeight, c = e.size / (e.virtualSize + e.params.slidesOffsetBefore - (e.params.centeredSlides ? e.snapGrid[0] : 0)), l = "auto" === e.params.scrollbar.dragSize ? o * c : parseInt(e.params.scrollbar.dragSize, 10), e.isHorizontal() ? s[0].style.width = "".concat(l, "px") : s[0].style.height = "".concat(l, "px"), a[0].style.display = c >= 1 ? "none" : "", e.params.scrollbar.hide && (a[0].style.opacity = 0), e.params.watchOverflow && e.enabled && t.$el[e.isLocked ? "addClass" : "removeClass"](e.params.scrollbar.lockClass); 33287 } 33288 function v(t) { 33289 return e.isHorizontal() ? "touchstart" === t.type || "touchmove" === t.type ? t.targetTouches[0].clientX : t.clientX : "touchstart" === t.type || "touchmove" === t.type ? t.targetTouches[0].clientY : t.clientY; 33290 } 33291 function w(t) { 33292 var s = e.scrollbar, 33293 a = e.rtlTranslate, 33294 i = s.$el; 33295 var r; 33296 r = (v(t) - i.offset()[e.isHorizontal() ? "left" : "top"] - (null !== n ? n : l / 2)) / (o - l), r = Math.max(Math.min(r, 1), 0), a && (r = 1 - r); 33297 var d = e.minTranslate() + (e.maxTranslate() - e.minTranslate()) * r; 33298 e.updateProgress(d), e.setTranslate(d), e.updateActiveIndex(), e.updateSlidesClasses(); 33299 } 33300 function b(t) { 33301 var s = e.params.scrollbar, 33302 a = e.scrollbar, 33303 r = e.$wrapperEl, 33304 l = a.$el, 33305 o = a.$dragEl; 33306 u = !0, n = t.target === o[0] || t.target === o ? v(t) - t.target.getBoundingClientRect()[e.isHorizontal() ? "left" : "top"] : null, t.preventDefault(), t.stopPropagation(), r.transition(100), o.transition(100), w(t), clearTimeout(m), l.transition(0), s.hide && l.css("opacity", 1), e.params.cssMode && e.$wrapperEl.css("scroll-snap-type", "none"), i("scrollbarDragStart", t); 33307 } 33308 function x(t) { 33309 var s = e.scrollbar, 33310 a = e.$wrapperEl, 33311 r = s.$el, 33312 n = s.$dragEl; 33313 u && (t.preventDefault ? t.preventDefault() : t.returnValue = !1, w(t), a.transition(0), r.transition(0), n.transition(0), i("scrollbarDragMove", t)); 33314 } 33315 function y(t) { 33316 var s = e.params.scrollbar, 33317 a = e.scrollbar, 33318 r = e.$wrapperEl, 33319 n = a.$el; 33320 u && (u = !1, e.params.cssMode && (e.$wrapperEl.css("scroll-snap-type", ""), r.transition("")), s.hide && (clearTimeout(m), m = p(function () { 33321 n.css("opacity", 0), n.transition(400); 33322 }, 1e3)), i("scrollbarDragEnd", t), s.snapOnRelease && e.slideToClosest()); 33323 } 33324 function E(t) { 33325 var s = e.scrollbar, 33326 a = e.touchEventsTouch, 33327 i = e.touchEventsDesktop, 33328 n = e.params, 33329 l = e.support, 33330 o = s.$el[0], 33331 d = !(!l.passiveListener || !n.passiveListeners) && { 33332 passive: !1, 33333 capture: !1 33334 }, 33335 c = !(!l.passiveListener || !n.passiveListeners) && { 33336 passive: !0, 33337 capture: !1 33338 }; 33339 if (!o) return; 33340 var p = "on" === t ? "addEventListener" : "removeEventListener"; 33341 l.touch ? (o[p](a.start, b, d), o[p](a.move, x, d), o[p](a.end, y, c)) : (o[p](i.start, b, d), r[p](i.move, x, d), r[p](i.end, y, c)); 33342 } 33343 function T() { 33344 var t = e.scrollbar, 33345 s = e.$el; 33346 e.params.scrollbar = Y(e, e.originalParams.scrollbar, e.params.scrollbar, { 33347 el: "swiper-scrollbar" 33348 }); 33349 var a = e.params.scrollbar; 33350 if (!a.el) return; 33351 var i = d(a.el); 33352 e.params.uniqueNavElements && "string" == typeof a.el && i.length > 1 && 1 === s.find(a.el).length && (i = s.find(a.el)); 33353 var r = i.find(".".concat(e.params.scrollbar.dragClass)); 33354 0 === r.length && (r = d("<div class=\"".concat(e.params.scrollbar.dragClass, "\"></div>")), i.append(r)), Object.assign(t, { 33355 $el: i, 33356 el: i[0], 33357 $dragEl: r, 33358 dragEl: r[0] 33359 }), a.draggable && e.params.scrollbar.el && E("on"), i && i[e.enabled ? "removeClass" : "addClass"](e.params.scrollbar.lockClass); 33360 } 33361 function C() { 33362 e.params.scrollbar.el && E("off"); 33363 } 33364 t({ 33365 scrollbar: { 33366 el: null, 33367 dragSize: "auto", 33368 hide: !1, 33369 draggable: !1, 33370 snapOnRelease: !0, 33371 lockClass: "swiper-scrollbar-lock", 33372 dragClass: "swiper-scrollbar-drag" 33373 } 33374 }), e.scrollbar = { 33375 el: null, 33376 dragEl: null, 33377 $el: null, 33378 $dragEl: null 33379 }, s("init", function () { 33380 T(), g(), f(); 33381 }), s("update resize observerUpdate lock unlock", function () { 33382 g(); 33383 }), s("setTranslate", function () { 33384 f(); 33385 }), s("setTransition", function (t, s) { 33386 !function (t) { 33387 e.params.scrollbar.el && e.scrollbar.el && e.scrollbar.$dragEl.transition(t); 33388 }(s); 33389 }), s("enable disable", function () { 33390 var t = e.scrollbar.$el; 33391 t && t[e.enabled ? "removeClass" : "addClass"](e.params.scrollbar.lockClass); 33392 }), s("destroy", function () { 33393 C(); 33394 }), Object.assign(e.scrollbar, { 33395 updateSize: g, 33396 setTranslate: f, 33397 init: T, 33398 destroy: C 33399 }); 33400 }, function (_ref14) { 33401 var e = _ref14.swiper, 33402 t = _ref14.extendParams, 33403 s = _ref14.on; 33404 t({ 33405 parallax: { 33406 enabled: !1 33407 } 33408 }); 33409 var a = function a(t, s) { 33410 var a = e.rtl, 33411 i = d(t), 33412 r = a ? -1 : 1, 33413 n = i.attr("data-swiper-parallax") || "0"; 33414 var l = i.attr("data-swiper-parallax-x"), 33415 o = i.attr("data-swiper-parallax-y"); 33416 var c = i.attr("data-swiper-parallax-scale"), 33417 p = i.attr("data-swiper-parallax-opacity"); 33418 if (l || o ? (l = l || "0", o = o || "0") : e.isHorizontal() ? (l = n, o = "0") : (o = n, l = "0"), l = l.indexOf("%") >= 0 ? parseInt(l, 10) * s * r + "%" : l * s * r + "px", o = o.indexOf("%") >= 0 ? parseInt(o, 10) * s + "%" : o * s + "px", null != p) { 33419 var _e61 = p - (p - 1) * (1 - Math.abs(s)); 33420 i[0].style.opacity = _e61; 33421 } 33422 if (null == c) i.transform("translate3d(".concat(l, ", ").concat(o, ", 0px)"));else { 33423 var _e62 = c - (c - 1) * (1 - Math.abs(s)); 33424 i.transform("translate3d(".concat(l, ", ").concat(o, ", 0px) scale(").concat(_e62, ")")); 33425 } 33426 }, 33427 i = function i() { 33428 var t = e.$el, 33429 s = e.slides, 33430 i = e.progress, 33431 r = e.snapGrid; 33432 t.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each(function (e) { 33433 a(e, i); 33434 }), s.each(function (t, s) { 33435 var n = t.progress; 33436 e.params.slidesPerGroup > 1 && "auto" !== e.params.slidesPerView && (n += Math.ceil(s / 2) - i * (r.length - 1)), n = Math.min(Math.max(n, -1), 1), d(t).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each(function (e) { 33437 a(e, n); 33438 }); 33439 }); 33440 }; 33441 s("beforeInit", function () { 33442 e.params.parallax.enabled && (e.params.watchSlidesProgress = !0, e.originalParams.watchSlidesProgress = !0); 33443 }), s("init", function () { 33444 e.params.parallax.enabled && i(); 33445 }), s("setTranslate", function () { 33446 e.params.parallax.enabled && i(); 33447 }), s("setTransition", function (t, s) { 33448 e.params.parallax.enabled && function () { 33449 var t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : e.params.speed; 33450 var s = e.$el; 33451 s.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each(function (e) { 33452 var s = d(e); 33453 var a = parseInt(s.attr("data-swiper-parallax-duration"), 10) || t; 33454 0 === t && (a = 0), s.transition(a); 33455 }); 33456 }(s); 33457 }); 33458 }, function (_ref15) { 33459 var e = _ref15.swiper, 33460 t = _ref15.extendParams, 33461 s = _ref15.on, 33462 a = _ref15.emit; 33463 var i = r(); 33464 t({ 33465 zoom: { 33466 enabled: !1, 33467 maxRatio: 3, 33468 minRatio: 1, 33469 toggle: !0, 33470 containerClass: "swiper-zoom-container", 33471 zoomedSlideClass: "swiper-slide-zoomed" 33472 } 33473 }), e.zoom = { 33474 enabled: !1 33475 }; 33476 var n, 33477 l, 33478 o, 33479 c = 1, 33480 p = !1; 33481 var u = { 33482 $slideEl: void 0, 33483 slideWidth: void 0, 33484 slideHeight: void 0, 33485 $imageEl: void 0, 33486 $imageWrapEl: void 0, 33487 maxRatio: 3 33488 }, 33489 m = { 33490 isTouched: void 0, 33491 isMoved: void 0, 33492 currentX: void 0, 33493 currentY: void 0, 33494 minX: void 0, 33495 minY: void 0, 33496 maxX: void 0, 33497 maxY: void 0, 33498 width: void 0, 33499 height: void 0, 33500 startX: void 0, 33501 startY: void 0, 33502 touchesStart: {}, 33503 touchesCurrent: {} 33504 }, 33505 f = { 33506 x: void 0, 33507 y: void 0, 33508 prevPositionX: void 0, 33509 prevPositionY: void 0, 33510 prevTime: void 0 33511 }; 33512 var g = 1; 33513 function v(e) { 33514 if (e.targetTouches.length < 2) return 1; 33515 var t = e.targetTouches[0].pageX, 33516 s = e.targetTouches[0].pageY, 33517 a = e.targetTouches[1].pageX, 33518 i = e.targetTouches[1].pageY; 33519 return Math.sqrt(Math.pow(a - t, 2) + Math.pow(i - s, 2)); 33520 } 33521 function w(t) { 33522 var s = e.support, 33523 a = e.params.zoom; 33524 if (l = !1, o = !1, !s.gestures) { 33525 if ("touchstart" !== t.type || "touchstart" === t.type && t.targetTouches.length < 2) return; 33526 l = !0, u.scaleStart = v(t); 33527 } 33528 u.$slideEl && u.$slideEl.length || (u.$slideEl = d(t.target).closest(".".concat(e.params.slideClass)), 0 === u.$slideEl.length && (u.$slideEl = e.slides.eq(e.activeIndex)), u.$imageEl = u.$slideEl.find(".".concat(a.containerClass)).eq(0).find("img, svg, canvas, picture, .swiper-zoom-target"), u.$imageWrapEl = u.$imageEl.parent(".".concat(a.containerClass)), u.maxRatio = u.$imageWrapEl.attr("data-swiper-zoom") || a.maxRatio, 0 !== u.$imageWrapEl.length) ? (u.$imageEl && u.$imageEl.transition(0), p = !0) : u.$imageEl = void 0; 33529 } 33530 function b(t) { 33531 var s = e.support, 33532 a = e.params.zoom, 33533 i = e.zoom; 33534 if (!s.gestures) { 33535 if ("touchmove" !== t.type || "touchmove" === t.type && t.targetTouches.length < 2) return; 33536 o = !0, u.scaleMove = v(t); 33537 } 33538 u.$imageEl && 0 !== u.$imageEl.length ? (s.gestures ? i.scale = t.scale * c : i.scale = u.scaleMove / u.scaleStart * c, i.scale > u.maxRatio && (i.scale = u.maxRatio - 1 + Math.pow(i.scale - u.maxRatio + 1, .5)), i.scale < a.minRatio && (i.scale = a.minRatio + 1 - Math.pow(a.minRatio - i.scale + 1, .5)), u.$imageEl.transform("translate3d(0,0,0) scale(".concat(i.scale, ")"))) : "gesturechange" === t.type && w(t); 33539 } 33540 function x(t) { 33541 var s = e.device, 33542 a = e.support, 33543 i = e.params.zoom, 33544 r = e.zoom; 33545 if (!a.gestures) { 33546 if (!l || !o) return; 33547 if ("touchend" !== t.type || "touchend" === t.type && t.changedTouches.length < 2 && !s.android) return; 33548 l = !1, o = !1; 33549 } 33550 u.$imageEl && 0 !== u.$imageEl.length && (r.scale = Math.max(Math.min(r.scale, u.maxRatio), i.minRatio), u.$imageEl.transition(e.params.speed).transform("translate3d(0,0,0) scale(".concat(r.scale, ")")), c = r.scale, p = !1, 1 === r.scale && (u.$slideEl = void 0)); 33551 } 33552 function y(t) { 33553 var s = e.zoom; 33554 if (!u.$imageEl || 0 === u.$imageEl.length) return; 33555 if (e.allowClick = !1, !m.isTouched || !u.$slideEl) return; 33556 m.isMoved || (m.width = u.$imageEl[0].offsetWidth, m.height = u.$imageEl[0].offsetHeight, m.startX = h(u.$imageWrapEl[0], "x") || 0, m.startY = h(u.$imageWrapEl[0], "y") || 0, u.slideWidth = u.$slideEl[0].offsetWidth, u.slideHeight = u.$slideEl[0].offsetHeight, u.$imageWrapEl.transition(0)); 33557 var a = m.width * s.scale, 33558 i = m.height * s.scale; 33559 if (!(a < u.slideWidth && i < u.slideHeight)) { 33560 if (m.minX = Math.min(u.slideWidth / 2 - a / 2, 0), m.maxX = -m.minX, m.minY = Math.min(u.slideHeight / 2 - i / 2, 0), m.maxY = -m.minY, m.touchesCurrent.x = "touchmove" === t.type ? t.targetTouches[0].pageX : t.pageX, m.touchesCurrent.y = "touchmove" === t.type ? t.targetTouches[0].pageY : t.pageY, !m.isMoved && !p) { 33561 if (e.isHorizontal() && (Math.floor(m.minX) === Math.floor(m.startX) && m.touchesCurrent.x < m.touchesStart.x || Math.floor(m.maxX) === Math.floor(m.startX) && m.touchesCurrent.x > m.touchesStart.x)) return void (m.isTouched = !1); 33562 if (!e.isHorizontal() && (Math.floor(m.minY) === Math.floor(m.startY) && m.touchesCurrent.y < m.touchesStart.y || Math.floor(m.maxY) === Math.floor(m.startY) && m.touchesCurrent.y > m.touchesStart.y)) return void (m.isTouched = !1); 33563 } 33564 t.cancelable && t.preventDefault(), t.stopPropagation(), m.isMoved = !0, m.currentX = m.touchesCurrent.x - m.touchesStart.x + m.startX, m.currentY = m.touchesCurrent.y - m.touchesStart.y + m.startY, m.currentX < m.minX && (m.currentX = m.minX + 1 - Math.pow(m.minX - m.currentX + 1, .8)), m.currentX > m.maxX && (m.currentX = m.maxX - 1 + Math.pow(m.currentX - m.maxX + 1, .8)), m.currentY < m.minY && (m.currentY = m.minY + 1 - Math.pow(m.minY - m.currentY + 1, .8)), m.currentY > m.maxY && (m.currentY = m.maxY - 1 + Math.pow(m.currentY - m.maxY + 1, .8)), f.prevPositionX || (f.prevPositionX = m.touchesCurrent.x), f.prevPositionY || (f.prevPositionY = m.touchesCurrent.y), f.prevTime || (f.prevTime = Date.now()), f.x = (m.touchesCurrent.x - f.prevPositionX) / (Date.now() - f.prevTime) / 2, f.y = (m.touchesCurrent.y - f.prevPositionY) / (Date.now() - f.prevTime) / 2, Math.abs(m.touchesCurrent.x - f.prevPositionX) < 2 && (f.x = 0), Math.abs(m.touchesCurrent.y - f.prevPositionY) < 2 && (f.y = 0), f.prevPositionX = m.touchesCurrent.x, f.prevPositionY = m.touchesCurrent.y, f.prevTime = Date.now(), u.$imageWrapEl.transform("translate3d(".concat(m.currentX, "px, ").concat(m.currentY, "px,0)")); 33565 } 33566 } 33567 function E() { 33568 var t = e.zoom; 33569 u.$slideEl && e.previousIndex !== e.activeIndex && (u.$imageEl && u.$imageEl.transform("translate3d(0,0,0) scale(1)"), u.$imageWrapEl && u.$imageWrapEl.transform("translate3d(0,0,0)"), t.scale = 1, c = 1, u.$slideEl = void 0, u.$imageEl = void 0, u.$imageWrapEl = void 0); 33570 } 33571 function T(t) { 33572 var s = e.zoom, 33573 a = e.params.zoom; 33574 if (u.$slideEl || (t && t.target && (u.$slideEl = d(t.target).closest(".".concat(e.params.slideClass))), u.$slideEl || (e.params.virtual && e.params.virtual.enabled && e.virtual ? u.$slideEl = e.$wrapperEl.children(".".concat(e.params.slideActiveClass)) : u.$slideEl = e.slides.eq(e.activeIndex)), u.$imageEl = u.$slideEl.find(".".concat(a.containerClass)).eq(0).find("img, svg, canvas, picture, .swiper-zoom-target"), u.$imageWrapEl = u.$imageEl.parent(".".concat(a.containerClass))), !u.$imageEl || 0 === u.$imageEl.length || !u.$imageWrapEl || 0 === u.$imageWrapEl.length) return; 33575 var r, n, l, o, p, h, f, g, v, w, b, x, y, E, T, C, $, S; 33576 e.params.cssMode && (e.wrapperEl.style.overflow = "hidden", e.wrapperEl.style.touchAction = "none"), u.$slideEl.addClass("".concat(a.zoomedSlideClass)), void 0 === m.touchesStart.x && t ? (r = "touchend" === t.type ? t.changedTouches[0].pageX : t.pageX, n = "touchend" === t.type ? t.changedTouches[0].pageY : t.pageY) : (r = m.touchesStart.x, n = m.touchesStart.y), s.scale = u.$imageWrapEl.attr("data-swiper-zoom") || a.maxRatio, c = u.$imageWrapEl.attr("data-swiper-zoom") || a.maxRatio, t ? ($ = u.$slideEl[0].offsetWidth, S = u.$slideEl[0].offsetHeight, l = u.$slideEl.offset().left + i.scrollX, o = u.$slideEl.offset().top + i.scrollY, p = l + $ / 2 - r, h = o + S / 2 - n, v = u.$imageEl[0].offsetWidth, w = u.$imageEl[0].offsetHeight, b = v * s.scale, x = w * s.scale, y = Math.min($ / 2 - b / 2, 0), E = Math.min(S / 2 - x / 2, 0), T = -y, C = -E, f = p * s.scale, g = h * s.scale, f < y && (f = y), f > T && (f = T), g < E && (g = E), g > C && (g = C)) : (f = 0, g = 0), u.$imageWrapEl.transition(300).transform("translate3d(".concat(f, "px, ").concat(g, "px,0)")), u.$imageEl.transition(300).transform("translate3d(0,0,0) scale(".concat(s.scale, ")")); 33577 } 33578 function C() { 33579 var t = e.zoom, 33580 s = e.params.zoom; 33581 u.$slideEl || (e.params.virtual && e.params.virtual.enabled && e.virtual ? u.$slideEl = e.$wrapperEl.children(".".concat(e.params.slideActiveClass)) : u.$slideEl = e.slides.eq(e.activeIndex), u.$imageEl = u.$slideEl.find(".".concat(s.containerClass)).eq(0).find("img, svg, canvas, picture, .swiper-zoom-target"), u.$imageWrapEl = u.$imageEl.parent(".".concat(s.containerClass))), u.$imageEl && 0 !== u.$imageEl.length && u.$imageWrapEl && 0 !== u.$imageWrapEl.length && (e.params.cssMode && (e.wrapperEl.style.overflow = "", e.wrapperEl.style.touchAction = ""), t.scale = 1, c = 1, u.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"), u.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)"), u.$slideEl.removeClass("".concat(s.zoomedSlideClass)), u.$slideEl = void 0); 33582 } 33583 function $(t) { 33584 var s = e.zoom; 33585 s.scale && 1 !== s.scale ? C() : T(t); 33586 } 33587 function S() { 33588 var t = e.support; 33589 return { 33590 passiveListener: !("touchstart" !== e.touchEvents.start || !t.passiveListener || !e.params.passiveListeners) && { 33591 passive: !0, 33592 capture: !1 33593 }, 33594 activeListenerWithCapture: !t.passiveListener || { 33595 passive: !1, 33596 capture: !0 33597 } 33598 }; 33599 } 33600 function M() { 33601 return ".".concat(e.params.slideClass); 33602 } 33603 function P(t) { 33604 var _S = S(), 33605 s = _S.passiveListener, 33606 a = M(); 33607 e.$wrapperEl[t]("gesturestart", a, w, s), e.$wrapperEl[t]("gesturechange", a, b, s), e.$wrapperEl[t]("gestureend", a, x, s); 33608 } 33609 function k() { 33610 n || (n = !0, P("on")); 33611 } 33612 function z() { 33613 n && (n = !1, P("off")); 33614 } 33615 function O() { 33616 var t = e.zoom; 33617 if (t.enabled) return; 33618 t.enabled = !0; 33619 var s = e.support, 33620 _S2 = S(), 33621 a = _S2.passiveListener, 33622 i = _S2.activeListenerWithCapture, 33623 r = M(); 33624 s.gestures ? (e.$wrapperEl.on(e.touchEvents.start, k, a), e.$wrapperEl.on(e.touchEvents.end, z, a)) : "touchstart" === e.touchEvents.start && (e.$wrapperEl.on(e.touchEvents.start, r, w, a), e.$wrapperEl.on(e.touchEvents.move, r, b, i), e.$wrapperEl.on(e.touchEvents.end, r, x, a), e.touchEvents.cancel && e.$wrapperEl.on(e.touchEvents.cancel, r, x, a)), e.$wrapperEl.on(e.touchEvents.move, ".".concat(e.params.zoom.containerClass), y, i); 33625 } 33626 function I() { 33627 var t = e.zoom; 33628 if (!t.enabled) return; 33629 var s = e.support; 33630 t.enabled = !1; 33631 var _S3 = S(), 33632 a = _S3.passiveListener, 33633 i = _S3.activeListenerWithCapture, 33634 r = M(); 33635 s.gestures ? (e.$wrapperEl.off(e.touchEvents.start, k, a), e.$wrapperEl.off(e.touchEvents.end, z, a)) : "touchstart" === e.touchEvents.start && (e.$wrapperEl.off(e.touchEvents.start, r, w, a), e.$wrapperEl.off(e.touchEvents.move, r, b, i), e.$wrapperEl.off(e.touchEvents.end, r, x, a), e.touchEvents.cancel && e.$wrapperEl.off(e.touchEvents.cancel, r, x, a)), e.$wrapperEl.off(e.touchEvents.move, ".".concat(e.params.zoom.containerClass), y, i); 33636 } 33637 Object.defineProperty(e.zoom, "scale", { 33638 get: function get() { 33639 return g; 33640 }, 33641 set: function set(e) { 33642 if (g !== e) { 33643 var _t43 = u.$imageEl ? u.$imageEl[0] : void 0, 33644 _s39 = u.$slideEl ? u.$slideEl[0] : void 0; 33645 a("zoomChange", e, _t43, _s39); 33646 } 33647 g = e; 33648 } 33649 }), s("init", function () { 33650 e.params.zoom.enabled && O(); 33651 }), s("destroy", function () { 33652 I(); 33653 }), s("touchStart", function (t, s) { 33654 e.zoom.enabled && function (t) { 33655 var s = e.device; 33656 u.$imageEl && 0 !== u.$imageEl.length && (m.isTouched || (s.android && t.cancelable && t.preventDefault(), m.isTouched = !0, m.touchesStart.x = "touchstart" === t.type ? t.targetTouches[0].pageX : t.pageX, m.touchesStart.y = "touchstart" === t.type ? t.targetTouches[0].pageY : t.pageY)); 33657 }(s); 33658 }), s("touchEnd", function (t, s) { 33659 e.zoom.enabled && function () { 33660 var t = e.zoom; 33661 if (!u.$imageEl || 0 === u.$imageEl.length) return; 33662 if (!m.isTouched || !m.isMoved) return m.isTouched = !1, void (m.isMoved = !1); 33663 m.isTouched = !1, m.isMoved = !1; 33664 var s = 300, 33665 a = 300; 33666 var i = f.x * s, 33667 r = m.currentX + i, 33668 n = f.y * a, 33669 l = m.currentY + n; 33670 0 !== f.x && (s = Math.abs((r - m.currentX) / f.x)), 0 !== f.y && (a = Math.abs((l - m.currentY) / f.y)); 33671 var o = Math.max(s, a); 33672 m.currentX = r, m.currentY = l; 33673 var d = m.width * t.scale, 33674 c = m.height * t.scale; 33675 m.minX = Math.min(u.slideWidth / 2 - d / 2, 0), m.maxX = -m.minX, m.minY = Math.min(u.slideHeight / 2 - c / 2, 0), m.maxY = -m.minY, m.currentX = Math.max(Math.min(m.currentX, m.maxX), m.minX), m.currentY = Math.max(Math.min(m.currentY, m.maxY), m.minY), u.$imageWrapEl.transition(o).transform("translate3d(".concat(m.currentX, "px, ").concat(m.currentY, "px,0)")); 33676 }(); 33677 }), s("doubleTap", function (t, s) { 33678 !e.animating && e.params.zoom.enabled && e.zoom.enabled && e.params.zoom.toggle && $(s); 33679 }), s("transitionEnd", function () { 33680 e.zoom.enabled && e.params.zoom.enabled && E(); 33681 }), s("slideChange", function () { 33682 e.zoom.enabled && e.params.zoom.enabled && e.params.cssMode && E(); 33683 }), Object.assign(e.zoom, { 33684 enable: O, 33685 disable: I, 33686 in: T, 33687 out: C, 33688 toggle: $ 33689 }); 33690 }, function (_ref16) { 33691 var e = _ref16.swiper, 33692 t = _ref16.extendParams, 33693 s = _ref16.on, 33694 a = _ref16.emit; 33695 t({ 33696 lazy: { 33697 checkInView: !1, 33698 enabled: !1, 33699 loadPrevNext: !1, 33700 loadPrevNextAmount: 1, 33701 loadOnTransitionStart: !1, 33702 scrollingElement: "", 33703 elementClass: "swiper-lazy", 33704 loadingClass: "swiper-lazy-loading", 33705 loadedClass: "swiper-lazy-loaded", 33706 preloaderClass: "swiper-lazy-preloader" 33707 } 33708 }), e.lazy = {}; 33709 var i = !1, 33710 n = !1; 33711 function l(t) { 33712 var s = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !0; 33713 var i = e.params.lazy; 33714 if (void 0 === t) return; 33715 if (0 === e.slides.length) return; 33716 var r = e.virtual && e.params.virtual.enabled ? e.$wrapperEl.children(".".concat(e.params.slideClass, "[data-swiper-slide-index=\"").concat(t, "\"]")) : e.slides.eq(t), 33717 n = r.find(".".concat(i.elementClass, ":not(.").concat(i.loadedClass, "):not(.").concat(i.loadingClass, ")")); 33718 !r.hasClass(i.elementClass) || r.hasClass(i.loadedClass) || r.hasClass(i.loadingClass) || n.push(r[0]), 0 !== n.length && n.each(function (t) { 33719 var n = d(t); 33720 n.addClass(i.loadingClass); 33721 var o = n.attr("data-background"), 33722 c = n.attr("data-src"), 33723 p = n.attr("data-srcset"), 33724 u = n.attr("data-sizes"), 33725 h = n.parent("picture"); 33726 e.loadImage(n[0], c || o, p, u, !1, function () { 33727 if (null != e && e && (!e || e.params) && !e.destroyed) { 33728 if (o ? (n.css("background-image", "url(\"".concat(o, "\")")), n.removeAttr("data-background")) : (p && (n.attr("srcset", p), n.removeAttr("data-srcset")), u && (n.attr("sizes", u), n.removeAttr("data-sizes")), h.length && h.children("source").each(function (e) { 33729 var t = d(e); 33730 t.attr("data-srcset") && (t.attr("srcset", t.attr("data-srcset")), t.removeAttr("data-srcset")); 33731 }), c && (n.attr("src", c), n.removeAttr("data-src"))), n.addClass(i.loadedClass).removeClass(i.loadingClass), r.find(".".concat(i.preloaderClass)).remove(), e.params.loop && s) { 33732 var _t44 = r.attr("data-swiper-slide-index"); 33733 if (r.hasClass(e.params.slideDuplicateClass)) { 33734 l(e.$wrapperEl.children("[data-swiper-slide-index=\"".concat(_t44, "\"]:not(.").concat(e.params.slideDuplicateClass, ")")).index(), !1); 33735 } else { 33736 l(e.$wrapperEl.children(".".concat(e.params.slideDuplicateClass, "[data-swiper-slide-index=\"").concat(_t44, "\"]")).index(), !1); 33737 } 33738 } 33739 a("lazyImageReady", r[0], n[0]), e.params.autoHeight && e.updateAutoHeight(); 33740 } 33741 }), a("lazyImageLoad", r[0], n[0]); 33742 }); 33743 } 33744 function o() { 33745 var t = e.$wrapperEl, 33746 s = e.params, 33747 a = e.slides, 33748 i = e.activeIndex, 33749 r = e.virtual && s.virtual.enabled, 33750 o = s.lazy; 33751 var c = s.slidesPerView; 33752 function p(e) { 33753 if (r) { 33754 if (t.children(".".concat(s.slideClass, "[data-swiper-slide-index=\"").concat(e, "\"]")).length) return !0; 33755 } else if (a[e]) return !0; 33756 return !1; 33757 } 33758 function u(e) { 33759 return r ? d(e).attr("data-swiper-slide-index") : d(e).index(); 33760 } 33761 if ("auto" === c && (c = 0), n || (n = !0), e.params.watchSlidesProgress) t.children(".".concat(s.slideVisibleClass)).each(function (e) { 33762 l(r ? d(e).attr("data-swiper-slide-index") : d(e).index()); 33763 });else if (c > 1) for (var _e63 = i; _e63 < i + c; _e63 += 1) { 33764 p(_e63) && l(_e63); 33765 } else l(i); 33766 if (o.loadPrevNext) if (c > 1 || o.loadPrevNextAmount && o.loadPrevNextAmount > 1) { 33767 var _e64 = o.loadPrevNextAmount, 33768 _t45 = c, 33769 _s40 = Math.min(i + _t45 + Math.max(_e64, _t45), a.length), 33770 _r11 = Math.max(i - Math.max(_t45, _e64), 0); 33771 for (var _e65 = i + c; _e65 < _s40; _e65 += 1) { 33772 p(_e65) && l(_e65); 33773 } 33774 for (var _e66 = _r11; _e66 < i; _e66 += 1) { 33775 p(_e66) && l(_e66); 33776 } 33777 } else { 33778 var _e67 = t.children(".".concat(s.slideNextClass)); 33779 _e67.length > 0 && l(u(_e67)); 33780 var _a23 = t.children(".".concat(s.slidePrevClass)); 33781 _a23.length > 0 && l(u(_a23)); 33782 } 33783 } 33784 function c() { 33785 var t = r(); 33786 if (!e || e.destroyed) return; 33787 var s = e.params.lazy.scrollingElement ? d(e.params.lazy.scrollingElement) : d(t), 33788 a = s[0] === t, 33789 n = a ? t.innerWidth : s[0].offsetWidth, 33790 l = a ? t.innerHeight : s[0].offsetHeight, 33791 p = e.$el.offset(), 33792 u = e.rtlTranslate; 33793 var h = !1; 33794 u && (p.left -= e.$el[0].scrollLeft); 33795 var m = [[p.left, p.top], [p.left + e.width, p.top], [p.left, p.top + e.height], [p.left + e.width, p.top + e.height]]; 33796 for (var _e68 = 0; _e68 < m.length; _e68 += 1) { 33797 var _t46 = m[_e68]; 33798 if (_t46[0] >= 0 && _t46[0] <= n && _t46[1] >= 0 && _t46[1] <= l) { 33799 if (0 === _t46[0] && 0 === _t46[1]) continue; 33800 h = !0; 33801 } 33802 } 33803 var f = !("touchstart" !== e.touchEvents.start || !e.support.passiveListener || !e.params.passiveListeners) && { 33804 passive: !0, 33805 capture: !1 33806 }; 33807 h ? (o(), s.off("scroll", c, f)) : i || (i = !0, s.on("scroll", c, f)); 33808 } 33809 s("beforeInit", function () { 33810 e.params.lazy.enabled && e.params.preloadImages && (e.params.preloadImages = !1); 33811 }), s("init", function () { 33812 e.params.lazy.enabled && (e.params.lazy.checkInView ? c() : o()); 33813 }), s("scroll", function () { 33814 e.params.freeMode && e.params.freeMode.enabled && !e.params.freeMode.sticky && o(); 33815 }), s("scrollbarDragMove resize _freeModeNoMomentumRelease", function () { 33816 e.params.lazy.enabled && (e.params.lazy.checkInView ? c() : o()); 33817 }), s("transitionStart", function () { 33818 e.params.lazy.enabled && (e.params.lazy.loadOnTransitionStart || !e.params.lazy.loadOnTransitionStart && !n) && (e.params.lazy.checkInView ? c() : o()); 33819 }), s("transitionEnd", function () { 33820 e.params.lazy.enabled && !e.params.lazy.loadOnTransitionStart && (e.params.lazy.checkInView ? c() : o()); 33821 }), s("slideChange", function () { 33822 var _e$params2 = e.params, 33823 t = _e$params2.lazy, 33824 s = _e$params2.cssMode, 33825 a = _e$params2.watchSlidesProgress, 33826 i = _e$params2.touchReleaseOnEdges, 33827 r = _e$params2.resistanceRatio; 33828 t.enabled && (s || a && (i || 0 === r)) && o(); 33829 }), Object.assign(e.lazy, { 33830 load: o, 33831 loadInSlide: l 33832 }); 33833 }, function (_ref17) { 33834 var e = _ref17.swiper, 33835 t = _ref17.extendParams, 33836 s = _ref17.on; 33837 function a(e, t) { 33838 var s = function () { 33839 var e, t, s; 33840 return function (a, i) { 33841 for (t = -1, e = a.length; e - t > 1;) { 33842 s = e + t >> 1, a[s] <= i ? t = s : e = s; 33843 } 33844 return e; 33845 }; 33846 }(); 33847 var a, i; 33848 return this.x = e, this.y = t, this.lastIndex = e.length - 1, this.interpolate = function (e) { 33849 return e ? (i = s(this.x, e), a = i - 1, (e - this.x[a]) * (this.y[i] - this.y[a]) / (this.x[i] - this.x[a]) + this.y[a]) : 0; 33850 }, this; 33851 } 33852 function i() { 33853 e.controller.control && e.controller.spline && (e.controller.spline = void 0, delete e.controller.spline); 33854 } 33855 t({ 33856 controller: { 33857 control: void 0, 33858 inverse: !1, 33859 by: "slide" 33860 } 33861 }), e.controller = { 33862 control: void 0 33863 }, s("beforeInit", function () { 33864 e.controller.control = e.params.controller.control; 33865 }), s("update", function () { 33866 i(); 33867 }), s("resize", function () { 33868 i(); 33869 }), s("observerUpdate", function () { 33870 i(); 33871 }), s("setTranslate", function (t, s, a) { 33872 e.controller.control && e.controller.setTranslate(s, a); 33873 }), s("setTransition", function (t, s, a) { 33874 e.controller.control && e.controller.setTransition(s, a); 33875 }), Object.assign(e.controller, { 33876 setTranslate: function setTranslate(t, s) { 33877 var i = e.controller.control; 33878 var r, n; 33879 var l = e.constructor; 33880 function o(t) { 33881 var s = e.rtlTranslate ? -e.translate : e.translate; 33882 "slide" === e.params.controller.by && (!function (t) { 33883 e.controller.spline || (e.controller.spline = e.params.loop ? new a(e.slidesGrid, t.slidesGrid) : new a(e.snapGrid, t.snapGrid)); 33884 }(t), n = -e.controller.spline.interpolate(-s)), n && "container" !== e.params.controller.by || (r = (t.maxTranslate() - t.minTranslate()) / (e.maxTranslate() - e.minTranslate()), n = (s - e.minTranslate()) * r + t.minTranslate()), e.params.controller.inverse && (n = t.maxTranslate() - n), t.updateProgress(n), t.setTranslate(n, e), t.updateActiveIndex(), t.updateSlidesClasses(); 33885 } 33886 if (Array.isArray(i)) for (var _e69 = 0; _e69 < i.length; _e69 += 1) { 33887 i[_e69] !== s && i[_e69] instanceof l && o(i[_e69]); 33888 } else i instanceof l && s !== i && o(i); 33889 }, 33890 setTransition: function setTransition(t, s) { 33891 var a = e.constructor, 33892 i = e.controller.control; 33893 var r; 33894 function n(s) { 33895 s.setTransition(t, e), 0 !== t && (s.transitionStart(), s.params.autoHeight && p(function () { 33896 s.updateAutoHeight(); 33897 }), s.$wrapperEl.transitionEnd(function () { 33898 i && (s.params.loop && "slide" === e.params.controller.by && s.loopFix(), s.transitionEnd()); 33899 })); 33900 } 33901 if (Array.isArray(i)) for (r = 0; r < i.length; r += 1) { 33902 i[r] !== s && i[r] instanceof a && n(i[r]); 33903 } else i instanceof a && s !== i && n(i); 33904 } 33905 }); 33906 }, function (_ref18) { 33907 var e = _ref18.swiper, 33908 t = _ref18.extendParams, 33909 s = _ref18.on; 33910 t({ 33911 a11y: { 33912 enabled: !0, 33913 notificationClass: "swiper-notification", 33914 prevSlideMessage: "Previous slide", 33915 nextSlideMessage: "Next slide", 33916 firstSlideMessage: "This is the first slide", 33917 lastSlideMessage: "This is the last slide", 33918 paginationBulletMessage: "Go to slide {{index}}", 33919 slideLabelMessage: "{{index}} / {{slidesLength}}", 33920 containerMessage: null, 33921 containerRoleDescriptionMessage: null, 33922 itemRoleDescriptionMessage: null, 33923 slideRole: "group" 33924 } 33925 }); 33926 var a = null; 33927 function i(e) { 33928 var t = a; 33929 0 !== t.length && (t.html(""), t.html(e)); 33930 } 33931 function r(e) { 33932 e.attr("tabIndex", "0"); 33933 } 33934 function n(e) { 33935 e.attr("tabIndex", "-1"); 33936 } 33937 function l(e, t) { 33938 e.attr("role", t); 33939 } 33940 function o(e, t) { 33941 e.attr("aria-roledescription", t); 33942 } 33943 function c(e, t) { 33944 e.attr("aria-label", t); 33945 } 33946 function p(e) { 33947 e.attr("aria-disabled", !0); 33948 } 33949 function u(e) { 33950 e.attr("aria-disabled", !1); 33951 } 33952 function h(t) { 33953 if (13 !== t.keyCode && 32 !== t.keyCode) return; 33954 var s = e.params.a11y, 33955 a = d(t.target); 33956 e.navigation && e.navigation.$nextEl && a.is(e.navigation.$nextEl) && (e.isEnd && !e.params.loop || e.slideNext(), e.isEnd ? i(s.lastSlideMessage) : i(s.nextSlideMessage)), e.navigation && e.navigation.$prevEl && a.is(e.navigation.$prevEl) && (e.isBeginning && !e.params.loop || e.slidePrev(), e.isBeginning ? i(s.firstSlideMessage) : i(s.prevSlideMessage)), e.pagination && a.is(W(e.params.pagination.bulletClass)) && a[0].click(); 33957 } 33958 function m() { 33959 if (e.params.loop || !e.navigation) return; 33960 var _e$navigation5 = e.navigation, 33961 t = _e$navigation5.$nextEl, 33962 s = _e$navigation5.$prevEl; 33963 s && s.length > 0 && (e.isBeginning ? (p(s), n(s)) : (u(s), r(s))), t && t.length > 0 && (e.isEnd ? (p(t), n(t)) : (u(t), r(t))); 33964 } 33965 function f() { 33966 return e.pagination && e.params.pagination.clickable && e.pagination.bullets && e.pagination.bullets.length; 33967 } 33968 var g = function g(e, t, s) { 33969 r(e), "BUTTON" !== e[0].tagName && (l(e, "button"), e.on("keydown", h)), c(e, s), function (e, t) { 33970 e.attr("aria-controls", t); 33971 }(e, t); 33972 }; 33973 function v() { 33974 var t = e.params.a11y; 33975 e.$el.append(a); 33976 var s = e.$el; 33977 t.containerRoleDescriptionMessage && o(s, t.containerRoleDescriptionMessage), t.containerMessage && c(s, t.containerMessage); 33978 var i = e.$wrapperEl, 33979 r = i.attr("id") || "swiper-wrapper-".concat(function () { 33980 var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16; 33981 return "x".repeat(e).replace(/x/g, function () { 33982 return Math.round(16 * Math.random()).toString(16); 33983 }); 33984 }(16)), 33985 n = e.params.autoplay && e.params.autoplay.enabled ? "off" : "polite"; 33986 var p; 33987 p = r, i.attr("id", p), function (e, t) { 33988 e.attr("aria-live", t); 33989 }(i, n), t.itemRoleDescriptionMessage && o(d(e.slides), t.itemRoleDescriptionMessage), l(d(e.slides), t.slideRole); 33990 var u = e.params.loop ? e.slides.filter(function (t) { 33991 return !t.classList.contains(e.params.slideDuplicateClass); 33992 }).length : e.slides.length; 33993 var m, v; 33994 e.slides.each(function (s, a) { 33995 var i = d(s), 33996 r = e.params.loop ? parseInt(i.attr("data-swiper-slide-index"), 10) : a; 33997 c(i, t.slideLabelMessage.replace(/\{\{index\}\}/, r + 1).replace(/\{\{slidesLength\}\}/, u)); 33998 }), e.navigation && e.navigation.$nextEl && (m = e.navigation.$nextEl), e.navigation && e.navigation.$prevEl && (v = e.navigation.$prevEl), m && m.length && g(m, r, t.nextSlideMessage), v && v.length && g(v, r, t.prevSlideMessage), f() && e.pagination.$el.on("keydown", W(e.params.pagination.bulletClass), h); 33999 } 34000 s("beforeInit", function () { 34001 a = d("<span class=\"".concat(e.params.a11y.notificationClass, "\" aria-live=\"assertive\" aria-atomic=\"true\"></span>")); 34002 }), s("afterInit", function () { 34003 e.params.a11y.enabled && (v(), m()); 34004 }), s("toEdge", function () { 34005 e.params.a11y.enabled && m(); 34006 }), s("fromEdge", function () { 34007 e.params.a11y.enabled && m(); 34008 }), s("paginationUpdate", function () { 34009 e.params.a11y.enabled && function () { 34010 var t = e.params.a11y; 34011 f() && e.pagination.bullets.each(function (s) { 34012 var a = d(s); 34013 r(a), e.params.pagination.renderBullet || (l(a, "button"), c(a, t.paginationBulletMessage.replace(/\{\{index\}\}/, a.index() + 1))); 34014 }); 34015 }(); 34016 }), s("destroy", function () { 34017 e.params.a11y.enabled && function () { 34018 var t, s; 34019 a && a.length > 0 && a.remove(), e.navigation && e.navigation.$nextEl && (t = e.navigation.$nextEl), e.navigation && e.navigation.$prevEl && (s = e.navigation.$prevEl), t && t.off("keydown", h), s && s.off("keydown", h), f() && e.pagination.$el.off("keydown", W(e.params.pagination.bulletClass), h); 34020 }(); 34021 }); 34022 }, function (_ref19) { 34023 var e = _ref19.swiper, 34024 t = _ref19.extendParams, 34025 s = _ref19.on; 34026 t({ 34027 history: { 34028 enabled: !1, 34029 root: "", 34030 replaceState: !1, 34031 key: "slides" 34032 } 34033 }); 34034 var a = !1, 34035 i = {}; 34036 var n = function n(e) { 34037 return e.toString().replace(/\s+/g, "-").replace(/[^\w-]+/g, "").replace(/--+/g, "-").replace(/^-+/, "").replace(/-+$/, ""); 34038 }, 34039 l = function l(e) { 34040 var t = r(); 34041 var s; 34042 s = e ? new URL(e) : t.location; 34043 var a = s.pathname.slice(1).split("/").filter(function (e) { 34044 return "" !== e; 34045 }), 34046 i = a.length; 34047 return { 34048 key: a[i - 2], 34049 value: a[i - 1] 34050 }; 34051 }, 34052 o = function o(t, s) { 34053 var i = r(); 34054 if (!a || !e.params.history.enabled) return; 34055 var l; 34056 l = e.params.url ? new URL(e.params.url) : i.location; 34057 var o = e.slides.eq(s); 34058 var d = n(o.attr("data-history")); 34059 if (e.params.history.root.length > 0) { 34060 var _s41 = e.params.history.root; 34061 "/" === _s41[_s41.length - 1] && (_s41 = _s41.slice(0, _s41.length - 1)), d = "".concat(_s41, "/").concat(t, "/").concat(d); 34062 } else l.pathname.includes(t) || (d = "".concat(t, "/").concat(d)); 34063 var c = i.history.state; 34064 c && c.value === d || (e.params.history.replaceState ? i.history.replaceState({ 34065 value: d 34066 }, null, d) : i.history.pushState({ 34067 value: d 34068 }, null, d)); 34069 }, 34070 d = function d(t, s, a) { 34071 if (s) for (var _i15 = 0, _r12 = e.slides.length; _i15 < _r12; _i15 += 1) { 34072 var _r13 = e.slides.eq(_i15); 34073 if (n(_r13.attr("data-history")) === s && !_r13.hasClass(e.params.slideDuplicateClass)) { 34074 var _s42 = _r13.index(); 34075 e.slideTo(_s42, t, a); 34076 } 34077 } else e.slideTo(0, t, a); 34078 }, 34079 c = function c() { 34080 i = l(e.params.url), d(e.params.speed, e.paths.value, !1); 34081 }; 34082 s("init", function () { 34083 e.params.history.enabled && function () { 34084 var t = r(); 34085 if (e.params.history) { 34086 if (!t.history || !t.history.pushState) return e.params.history.enabled = !1, void (e.params.hashNavigation.enabled = !0); 34087 a = !0, i = l(e.params.url), (i.key || i.value) && (d(0, i.value, e.params.runCallbacksOnInit), e.params.history.replaceState || t.addEventListener("popstate", c)); 34088 } 34089 }(); 34090 }), s("destroy", function () { 34091 e.params.history.enabled && function () { 34092 var t = r(); 34093 e.params.history.replaceState || t.removeEventListener("popstate", c); 34094 }(); 34095 }), s("transitionEnd _freeModeNoMomentumRelease", function () { 34096 a && o(e.params.history.key, e.activeIndex); 34097 }), s("slideChange", function () { 34098 a && e.params.cssMode && o(e.params.history.key, e.activeIndex); 34099 }); 34100 }, function (_ref20) { 34101 var e = _ref20.swiper, 34102 t = _ref20.extendParams, 34103 s = _ref20.emit, 34104 i = _ref20.on; 34105 var n = !1; 34106 var l = a(), 34107 o = r(); 34108 t({ 34109 hashNavigation: { 34110 enabled: !1, 34111 replaceState: !1, 34112 watchState: !1 34113 } 34114 }); 34115 var c = function c() { 34116 s("hashChange"); 34117 var t = l.location.hash.replace("#", ""); 34118 if (t !== e.slides.eq(e.activeIndex).attr("data-hash")) { 34119 var _s43 = e.$wrapperEl.children(".".concat(e.params.slideClass, "[data-hash=\"").concat(t, "\"]")).index(); 34120 if (void 0 === _s43) return; 34121 e.slideTo(_s43); 34122 } 34123 }, 34124 p = function p() { 34125 if (n && e.params.hashNavigation.enabled) if (e.params.hashNavigation.replaceState && o.history && o.history.replaceState) o.history.replaceState(null, null, "#".concat(e.slides.eq(e.activeIndex).attr("data-hash")) || false), s("hashSet");else { 34126 var _t47 = e.slides.eq(e.activeIndex), 34127 _a24 = _t47.attr("data-hash") || _t47.attr("data-history"); 34128 l.location.hash = _a24 || "", s("hashSet"); 34129 } 34130 }; 34131 i("init", function () { 34132 e.params.hashNavigation.enabled && function () { 34133 if (!e.params.hashNavigation.enabled || e.params.history && e.params.history.enabled) return; 34134 n = !0; 34135 var t = l.location.hash.replace("#", ""); 34136 if (t) { 34137 var _s44 = 0; 34138 for (var _a25 = 0, _i16 = e.slides.length; _a25 < _i16; _a25 += 1) { 34139 var _i17 = e.slides.eq(_a25); 34140 if ((_i17.attr("data-hash") || _i17.attr("data-history")) === t && !_i17.hasClass(e.params.slideDuplicateClass)) { 34141 var _t48 = _i17.index(); 34142 e.slideTo(_t48, _s44, e.params.runCallbacksOnInit, !0); 34143 } 34144 } 34145 } 34146 e.params.hashNavigation.watchState && d(o).on("hashchange", c); 34147 }(); 34148 }), i("destroy", function () { 34149 e.params.hashNavigation.enabled && e.params.hashNavigation.watchState && d(o).off("hashchange", c); 34150 }), i("transitionEnd _freeModeNoMomentumRelease", function () { 34151 n && p(); 34152 }), i("slideChange", function () { 34153 n && e.params.cssMode && p(); 34154 }); 34155 }, function (_ref21) { 34156 var e = _ref21.swiper, 34157 t = _ref21.extendParams, 34158 s = _ref21.on, 34159 i = _ref21.emit; 34160 var r; 34161 function n() { 34162 var t = e.slides.eq(e.activeIndex); 34163 var s = e.params.autoplay.delay; 34164 t.attr("data-swiper-autoplay") && (s = t.attr("data-swiper-autoplay") || e.params.autoplay.delay), clearTimeout(r), r = p(function () { 34165 var t; 34166 e.params.autoplay.reverseDirection ? e.params.loop ? (e.loopFix(), t = e.slidePrev(e.params.speed, !0, !0), i("autoplay")) : e.isBeginning ? e.params.autoplay.stopOnLastSlide ? o() : (t = e.slideTo(e.slides.length - 1, e.params.speed, !0, !0), i("autoplay")) : (t = e.slidePrev(e.params.speed, !0, !0), i("autoplay")) : e.params.loop ? (e.loopFix(), t = e.slideNext(e.params.speed, !0, !0), i("autoplay")) : e.isEnd ? e.params.autoplay.stopOnLastSlide ? o() : (t = e.slideTo(0, e.params.speed, !0, !0), i("autoplay")) : (t = e.slideNext(e.params.speed, !0, !0), i("autoplay")), (e.params.cssMode && e.autoplay.running || !1 === t) && n(); 34167 }, s); 34168 } 34169 function l() { 34170 return void 0 === r && !e.autoplay.running && (e.autoplay.running = !0, i("autoplayStart"), n(), !0); 34171 } 34172 function o() { 34173 return !!e.autoplay.running && void 0 !== r && (r && (clearTimeout(r), r = void 0), e.autoplay.running = !1, i("autoplayStop"), !0); 34174 } 34175 function d(t) { 34176 e.autoplay.running && (e.autoplay.paused || (r && clearTimeout(r), e.autoplay.paused = !0, 0 !== t && e.params.autoplay.waitForTransition ? ["transitionend", "webkitTransitionEnd"].forEach(function (t) { 34177 e.$wrapperEl[0].addEventListener(t, u); 34178 }) : (e.autoplay.paused = !1, n()))); 34179 } 34180 function c() { 34181 var t = a(); 34182 "hidden" === t.visibilityState && e.autoplay.running && d(), "visible" === t.visibilityState && e.autoplay.paused && (n(), e.autoplay.paused = !1); 34183 } 34184 function u(t) { 34185 e && !e.destroyed && e.$wrapperEl && t.target === e.$wrapperEl[0] && (["transitionend", "webkitTransitionEnd"].forEach(function (t) { 34186 e.$wrapperEl[0].removeEventListener(t, u); 34187 }), e.autoplay.paused = !1, e.autoplay.running ? n() : o()); 34188 } 34189 function h() { 34190 e.params.autoplay.disableOnInteraction ? o() : d(), ["transitionend", "webkitTransitionEnd"].forEach(function (t) { 34191 e.$wrapperEl[0].removeEventListener(t, u); 34192 }); 34193 } 34194 function m() { 34195 e.params.autoplay.disableOnInteraction || (e.autoplay.paused = !1, n()); 34196 } 34197 e.autoplay = { 34198 running: !1, 34199 paused: !1 34200 }, t({ 34201 autoplay: { 34202 enabled: !1, 34203 delay: 3e3, 34204 waitForTransition: !0, 34205 disableOnInteraction: !0, 34206 stopOnLastSlide: !1, 34207 reverseDirection: !1, 34208 pauseOnMouseEnter: !1 34209 } 34210 }), s("init", function () { 34211 if (e.params.autoplay.enabled) { 34212 l(); 34213 a().addEventListener("visibilitychange", c), e.params.autoplay.pauseOnMouseEnter && (e.$el.on("mouseenter", h), e.$el.on("mouseleave", m)); 34214 } 34215 }), s("beforeTransitionStart", function (t, s, a) { 34216 e.autoplay.running && (a || !e.params.autoplay.disableOnInteraction ? e.autoplay.pause(s) : o()); 34217 }), s("sliderFirstMove", function () { 34218 e.autoplay.running && (e.params.autoplay.disableOnInteraction ? o() : d()); 34219 }), s("touchEnd", function () { 34220 e.params.cssMode && e.autoplay.paused && !e.params.autoplay.disableOnInteraction && n(); 34221 }), s("destroy", function () { 34222 e.$el.off("mouseenter", h), e.$el.off("mouseleave", m), e.autoplay.running && o(); 34223 a().removeEventListener("visibilitychange", c); 34224 }), Object.assign(e.autoplay, { 34225 pause: d, 34226 run: n, 34227 start: l, 34228 stop: o 34229 }); 34230 }, function (_ref22) { 34231 var e = _ref22.swiper, 34232 t = _ref22.extendParams, 34233 s = _ref22.on; 34234 t({ 34235 thumbs: { 34236 swiper: null, 34237 multipleActiveThumbs: !0, 34238 autoScrollOffset: 0, 34239 slideThumbActiveClass: "swiper-slide-thumb-active", 34240 thumbsContainerClass: "swiper-thumbs" 34241 } 34242 }); 34243 var a = !1, 34244 i = !1; 34245 function r() { 34246 var t = e.thumbs.swiper; 34247 if (!t) return; 34248 var s = t.clickedIndex, 34249 a = t.clickedSlide; 34250 if (a && d(a).hasClass(e.params.thumbs.slideThumbActiveClass)) return; 34251 if (null == s) return; 34252 var i; 34253 if (i = t.params.loop ? parseInt(d(t.clickedSlide).attr("data-swiper-slide-index"), 10) : s, e.params.loop) { 34254 var _t49 = e.activeIndex; 34255 e.slides.eq(_t49).hasClass(e.params.slideDuplicateClass) && (e.loopFix(), e._clientLeft = e.$wrapperEl[0].clientLeft, _t49 = e.activeIndex); 34256 var _s45 = e.slides.eq(_t49).prevAll("[data-swiper-slide-index=\"".concat(i, "\"]")).eq(0).index(), 34257 _a26 = e.slides.eq(_t49).nextAll("[data-swiper-slide-index=\"".concat(i, "\"]")).eq(0).index(); 34258 i = void 0 === _s45 ? _a26 : void 0 === _a26 ? _s45 : _a26 - _t49 < _t49 - _s45 ? _a26 : _s45; 34259 } 34260 e.slideTo(i); 34261 } 34262 function n() { 34263 var t = e.params.thumbs; 34264 if (a) return !1; 34265 a = !0; 34266 var s = e.constructor; 34267 if (t.swiper instanceof s) e.thumbs.swiper = t.swiper, Object.assign(e.thumbs.swiper.originalParams, { 34268 watchSlidesProgress: !0, 34269 slideToClickedSlide: !1 34270 }), Object.assign(e.thumbs.swiper.params, { 34271 watchSlidesProgress: !0, 34272 slideToClickedSlide: !1 34273 });else if (m(t.swiper)) { 34274 var _a27 = Object.assign({}, t.swiper); 34275 Object.assign(_a27, { 34276 watchSlidesProgress: !0, 34277 slideToClickedSlide: !1 34278 }), e.thumbs.swiper = new s(_a27), i = !0; 34279 } 34280 return e.thumbs.swiper.$el.addClass(e.params.thumbs.thumbsContainerClass), e.thumbs.swiper.on("tap", r), !0; 34281 } 34282 function l(t) { 34283 var s = e.thumbs.swiper; 34284 if (!s) return; 34285 var a = "auto" === s.params.slidesPerView ? s.slidesPerViewDynamic() : s.params.slidesPerView, 34286 i = e.params.thumbs.autoScrollOffset, 34287 r = i && !s.params.loop; 34288 if (e.realIndex !== s.realIndex || r) { 34289 var _n11, 34290 _l8, 34291 _o7 = s.activeIndex; 34292 if (s.params.loop) { 34293 s.slides.eq(_o7).hasClass(s.params.slideDuplicateClass) && (s.loopFix(), s._clientLeft = s.$wrapperEl[0].clientLeft, _o7 = s.activeIndex); 34294 var _t50 = s.slides.eq(_o7).prevAll("[data-swiper-slide-index=\"".concat(e.realIndex, "\"]")).eq(0).index(), 34295 _a28 = s.slides.eq(_o7).nextAll("[data-swiper-slide-index=\"".concat(e.realIndex, "\"]")).eq(0).index(); 34296 _n11 = void 0 === _t50 ? _a28 : void 0 === _a28 ? _t50 : _a28 - _o7 == _o7 - _t50 ? s.params.slidesPerGroup > 1 ? _a28 : _o7 : _a28 - _o7 < _o7 - _t50 ? _a28 : _t50, _l8 = e.activeIndex > e.previousIndex ? "next" : "prev"; 34297 } else _n11 = e.realIndex, _l8 = _n11 > e.previousIndex ? "next" : "prev"; 34298 r && (_n11 += "next" === _l8 ? i : -1 * i), s.visibleSlidesIndexes && s.visibleSlidesIndexes.indexOf(_n11) < 0 && (s.params.centeredSlides ? _n11 = _n11 > _o7 ? _n11 - Math.floor(a / 2) + 1 : _n11 + Math.floor(a / 2) - 1 : _n11 > _o7 && s.params.slidesPerGroup, s.slideTo(_n11, t ? 0 : void 0)); 34299 } 34300 var n = 1; 34301 var l = e.params.thumbs.slideThumbActiveClass; 34302 if (e.params.slidesPerView > 1 && !e.params.centeredSlides && (n = e.params.slidesPerView), e.params.thumbs.multipleActiveThumbs || (n = 1), n = Math.floor(n), s.slides.removeClass(l), s.params.loop || s.params.virtual && s.params.virtual.enabled) for (var _t51 = 0; _t51 < n; _t51 += 1) { 34303 s.$wrapperEl.children("[data-swiper-slide-index=\"".concat(e.realIndex + _t51, "\"]")).addClass(l); 34304 } else for (var _t52 = 0; _t52 < n; _t52 += 1) { 34305 s.slides.eq(e.realIndex + _t52).addClass(l); 34306 } 34307 } 34308 e.thumbs = { 34309 swiper: null 34310 }, s("beforeInit", function () { 34311 var t = e.params.thumbs; 34312 t && t.swiper && (n(), l(!0)); 34313 }), s("slideChange update resize observerUpdate", function () { 34314 e.thumbs.swiper && l(); 34315 }), s("setTransition", function (t, s) { 34316 var a = e.thumbs.swiper; 34317 a && a.setTransition(s); 34318 }), s("beforeDestroy", function () { 34319 var t = e.thumbs.swiper; 34320 t && i && t && t.destroy(); 34321 }), Object.assign(e.thumbs, { 34322 init: n, 34323 update: l 34324 }); 34325 }, function (_ref23) { 34326 var e = _ref23.swiper, 34327 t = _ref23.extendParams, 34328 s = _ref23.emit, 34329 a = _ref23.once; 34330 t({ 34331 freeMode: { 34332 enabled: !1, 34333 momentum: !0, 34334 momentumRatio: 1, 34335 momentumBounce: !0, 34336 momentumBounceRatio: 1, 34337 momentumVelocityRatio: 1, 34338 sticky: !1, 34339 minimumVelocity: .02 34340 } 34341 }), Object.assign(e, { 34342 freeMode: { 34343 onTouchMove: function onTouchMove() { 34344 var t = e.touchEventsData, 34345 s = e.touches; 34346 0 === t.velocities.length && t.velocities.push({ 34347 position: s[e.isHorizontal() ? "startX" : "startY"], 34348 time: t.touchStartTime 34349 }), t.velocities.push({ 34350 position: s[e.isHorizontal() ? "currentX" : "currentY"], 34351 time: u() 34352 }); 34353 }, 34354 onTouchEnd: function onTouchEnd(_ref24) { 34355 var t = _ref24.currentPos; 34356 var i = e.params, 34357 r = e.$wrapperEl, 34358 n = e.rtlTranslate, 34359 l = e.snapGrid, 34360 o = e.touchEventsData, 34361 d = u() - o.touchStartTime; 34362 if (t < -e.minTranslate()) e.slideTo(e.activeIndex);else if (t > -e.maxTranslate()) e.slides.length < l.length ? e.slideTo(l.length - 1) : e.slideTo(e.slides.length - 1);else { 34363 if (i.freeMode.momentum) { 34364 if (o.velocities.length > 1) { 34365 var _t54 = o.velocities.pop(), 34366 _s46 = o.velocities.pop(), 34367 _a29 = _t54.position - _s46.position, 34368 _r14 = _t54.time - _s46.time; 34369 e.velocity = _a29 / _r14, e.velocity /= 2, Math.abs(e.velocity) < i.freeMode.minimumVelocity && (e.velocity = 0), (_r14 > 150 || u() - _t54.time > 300) && (e.velocity = 0); 34370 } else e.velocity = 0; 34371 e.velocity *= i.freeMode.momentumVelocityRatio, o.velocities.length = 0; 34372 var _t53 = 1e3 * i.freeMode.momentumRatio; 34373 var _d6 = e.velocity * _t53; 34374 var _c4 = e.translate + _d6; 34375 n && (_c4 = -_c4); 34376 var _p, 34377 _h = !1; 34378 var _m = 20 * Math.abs(e.velocity) * i.freeMode.momentumBounceRatio; 34379 var _f; 34380 if (_c4 < e.maxTranslate()) i.freeMode.momentumBounce ? (_c4 + e.maxTranslate() < -_m && (_c4 = e.maxTranslate() - _m), _p = e.maxTranslate(), _h = !0, o.allowMomentumBounce = !0) : _c4 = e.maxTranslate(), i.loop && i.centeredSlides && (_f = !0);else if (_c4 > e.minTranslate()) i.freeMode.momentumBounce ? (_c4 - e.minTranslate() > _m && (_c4 = e.minTranslate() + _m), _p = e.minTranslate(), _h = !0, o.allowMomentumBounce = !0) : _c4 = e.minTranslate(), i.loop && i.centeredSlides && (_f = !0);else if (i.freeMode.sticky) { 34381 var _t55; 34382 for (var _e70 = 0; _e70 < l.length; _e70 += 1) { 34383 if (l[_e70] > -_c4) { 34384 _t55 = _e70; 34385 break; 34386 } 34387 } 34388 _c4 = Math.abs(l[_t55] - _c4) < Math.abs(l[_t55 - 1] - _c4) || "next" === e.swipeDirection ? l[_t55] : l[_t55 - 1], _c4 = -_c4; 34389 } 34390 if (_f && a("transitionEnd", function () { 34391 e.loopFix(); 34392 }), 0 !== e.velocity) { 34393 if (_t53 = n ? Math.abs((-_c4 - e.translate) / e.velocity) : Math.abs((_c4 - e.translate) / e.velocity), i.freeMode.sticky) { 34394 var _s47 = Math.abs((n ? -_c4 : _c4) - e.translate), 34395 _a30 = e.slidesSizesGrid[e.activeIndex]; 34396 _t53 = _s47 < _a30 ? i.speed : _s47 < 2 * _a30 ? 1.5 * i.speed : 2.5 * i.speed; 34397 } 34398 } else if (i.freeMode.sticky) return void e.slideToClosest(); 34399 i.freeMode.momentumBounce && _h ? (e.updateProgress(_p), e.setTransition(_t53), e.setTranslate(_c4), e.transitionStart(!0, e.swipeDirection), e.animating = !0, r.transitionEnd(function () { 34400 e && !e.destroyed && o.allowMomentumBounce && (s("momentumBounce"), e.setTransition(i.speed), setTimeout(function () { 34401 e.setTranslate(_p), r.transitionEnd(function () { 34402 e && !e.destroyed && e.transitionEnd(); 34403 }); 34404 }, 0)); 34405 })) : e.velocity ? (s("_freeModeNoMomentumRelease"), e.updateProgress(_c4), e.setTransition(_t53), e.setTranslate(_c4), e.transitionStart(!0, e.swipeDirection), e.animating || (e.animating = !0, r.transitionEnd(function () { 34406 e && !e.destroyed && e.transitionEnd(); 34407 }))) : e.updateProgress(_c4), e.updateActiveIndex(), e.updateSlidesClasses(); 34408 } else { 34409 if (i.freeMode.sticky) return void e.slideToClosest(); 34410 i.freeMode && s("_freeModeNoMomentumRelease"); 34411 } 34412 (!i.freeMode.momentum || d >= i.longSwipesMs) && (e.updateProgress(), e.updateActiveIndex(), e.updateSlidesClasses()); 34413 } 34414 } 34415 } 34416 }); 34417 }, function (_ref25) { 34418 var e = _ref25.swiper, 34419 t = _ref25.extendParams; 34420 var s, a, i; 34421 t({ 34422 grid: { 34423 rows: 1, 34424 fill: "column" 34425 } 34426 }), e.grid = { 34427 initSlides: function initSlides(t) { 34428 var r = e.params.slidesPerView, 34429 _e$params$grid = e.params.grid, 34430 n = _e$params$grid.rows, 34431 l = _e$params$grid.fill; 34432 a = s / n, i = Math.floor(t / n), s = Math.floor(t / n) === t / n ? t : Math.ceil(t / n) * n, "auto" !== r && "row" === l && (s = Math.max(s, r * n)); 34433 }, 34434 updateSlide: function updateSlide(t, r, n, l) { 34435 var _e$params3 = e.params, 34436 o = _e$params3.slidesPerGroup, 34437 d = _e$params3.spaceBetween, 34438 _e$params$grid2 = e.params.grid, 34439 c = _e$params$grid2.rows, 34440 p = _e$params$grid2.fill; 34441 var u, h, m; 34442 if ("row" === p && o > 1) { 34443 var _e71 = Math.floor(t / (o * c)), 34444 _a31 = t - c * o * _e71, 34445 _i18 = 0 === _e71 ? o : Math.min(Math.ceil((n - _e71 * c * o) / c), o); 34446 m = Math.floor(_a31 / _i18), h = _a31 - m * _i18 + _e71 * o, u = h + m * s / c, r.css({ 34447 "-webkit-order": u, 34448 order: u 34449 }); 34450 } else "column" === p ? (h = Math.floor(t / c), m = t - h * c, (h > i || h === i && m === c - 1) && (m += 1, m >= c && (m = 0, h += 1))) : (m = Math.floor(t / a), h = t - m * a); 34451 r.css(l("margin-top"), 0 !== m ? d && "".concat(d, "px") : ""); 34452 }, 34453 updateWrapperSize: function updateWrapperSize(t, a, i) { 34454 var _e$params4 = e.params, 34455 r = _e$params4.spaceBetween, 34456 n = _e$params4.centeredSlides, 34457 l = _e$params4.roundLengths, 34458 o = e.params.grid.rows; 34459 if (e.virtualSize = (t + r) * s, e.virtualSize = Math.ceil(e.virtualSize / o) - r, e.$wrapperEl.css(_defineProperty({}, i("width"), "".concat(e.virtualSize + r, "px"))), n) { 34460 a.splice(0, a.length); 34461 var _t56 = []; 34462 for (var _s48 = 0; _s48 < a.length; _s48 += 1) { 34463 var _i19 = a[_s48]; 34464 l && (_i19 = Math.floor(_i19)), a[_s48] < e.virtualSize + a[0] && _t56.push(_i19); 34465 } 34466 a.push.apply(a, _t56); 34467 } 34468 } 34469 }; 34470 }, function (_ref26) { 34471 var e = _ref26.swiper; 34472 Object.assign(e, { 34473 appendSlide: R.bind(e), 34474 prependSlide: j.bind(e), 34475 addSlide: _.bind(e), 34476 removeSlide: V.bind(e), 34477 removeAllSlides: q.bind(e) 34478 }); 34479 }, function (_ref27) { 34480 var e = _ref27.swiper, 34481 t = _ref27.extendParams, 34482 s = _ref27.on; 34483 t({ 34484 fadeEffect: { 34485 crossFade: !1, 34486 transformEl: null 34487 } 34488 }), F({ 34489 effect: "fade", 34490 swiper: e, 34491 on: s, 34492 setTranslate: function setTranslate() { 34493 var t = e.slides, 34494 s = e.params.fadeEffect; 34495 for (var _a32 = 0; _a32 < t.length; _a32 += 1) { 34496 var _t57 = e.slides.eq(_a32); 34497 var _i20 = -_t57[0].swiperSlideOffset; 34498 e.params.virtualTranslate || (_i20 -= e.translate); 34499 var _r15 = 0; 34500 e.isHorizontal() || (_r15 = _i20, _i20 = 0); 34501 var _n12 = e.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(_t57[0].progress), 0) : 1 + Math.min(Math.max(_t57[0].progress, -1), 0); 34502 U(s, _t57).css({ 34503 opacity: _n12 34504 }).transform("translate3d(".concat(_i20, "px, ").concat(_r15, "px, 0px)")); 34505 } 34506 }, 34507 setTransition: function setTransition(t) { 34508 var s = e.params.fadeEffect.transformEl; 34509 (s ? e.slides.find(s) : e.slides).transition(t), K({ 34510 swiper: e, 34511 duration: t, 34512 transformEl: s, 34513 allSlides: !0 34514 }); 34515 }, 34516 overwriteParams: function overwriteParams() { 34517 return { 34518 slidesPerView: 1, 34519 slidesPerGroup: 1, 34520 watchSlidesProgress: !0, 34521 spaceBetween: 0, 34522 virtualTranslate: !e.params.cssMode 34523 }; 34524 } 34525 }); 34526 }, function (_ref28) { 34527 var e = _ref28.swiper, 34528 t = _ref28.extendParams, 34529 s = _ref28.on; 34530 t({ 34531 cubeEffect: { 34532 slideShadows: !0, 34533 shadow: !0, 34534 shadowOffset: 20, 34535 shadowScale: .94 34536 } 34537 }), F({ 34538 effect: "cube", 34539 swiper: e, 34540 on: s, 34541 setTranslate: function setTranslate() { 34542 var t = e.$el, 34543 s = e.$wrapperEl, 34544 a = e.slides, 34545 i = e.width, 34546 r = e.height, 34547 n = e.rtlTranslate, 34548 l = e.size, 34549 o = e.browser, 34550 c = e.params.cubeEffect, 34551 p = e.isHorizontal(), 34552 u = e.virtual && e.params.virtual.enabled; 34553 var h, 34554 m = 0; 34555 c.shadow && (p ? (h = s.find(".swiper-cube-shadow"), 0 === h.length && (h = d('<div class="swiper-cube-shadow"></div>'), s.append(h)), h.css({ 34556 height: "".concat(i, "px") 34557 })) : (h = t.find(".swiper-cube-shadow"), 0 === h.length && (h = d('<div class="swiper-cube-shadow"></div>'), t.append(h)))); 34558 for (var _e72 = 0; _e72 < a.length; _e72 += 1) { 34559 var _t58 = a.eq(_e72); 34560 var _s49 = _e72; 34561 u && (_s49 = parseInt(_t58.attr("data-swiper-slide-index"), 10)); 34562 var _i21 = 90 * _s49, 34563 _r16 = Math.floor(_i21 / 360); 34564 n && (_i21 = -_i21, _r16 = Math.floor(-_i21 / 360)); 34565 var _o8 = Math.max(Math.min(_t58[0].progress, 1), -1); 34566 var _h2 = 0, 34567 _f2 = 0, 34568 _g = 0; 34569 _s49 % 4 == 0 ? (_h2 = 4 * -_r16 * l, _g = 0) : (_s49 - 1) % 4 == 0 ? (_h2 = 0, _g = 4 * -_r16 * l) : (_s49 - 2) % 4 == 0 ? (_h2 = l + 4 * _r16 * l, _g = l) : (_s49 - 3) % 4 == 0 && (_h2 = -l, _g = 3 * l + 4 * l * _r16), n && (_h2 = -_h2), p || (_f2 = _h2, _h2 = 0); 34570 var _v = "rotateX(".concat(p ? 0 : -_i21, "deg) rotateY(").concat(p ? _i21 : 0, "deg) translate3d(").concat(_h2, "px, ").concat(_f2, "px, ").concat(_g, "px)"); 34571 if (_o8 <= 1 && _o8 > -1 && (m = 90 * _s49 + 90 * _o8, n && (m = 90 * -_s49 - 90 * _o8)), _t58.transform(_v), c.slideShadows) { 34572 var _e73 = p ? _t58.find(".swiper-slide-shadow-left") : _t58.find(".swiper-slide-shadow-top"), 34573 _s50 = p ? _t58.find(".swiper-slide-shadow-right") : _t58.find(".swiper-slide-shadow-bottom"); 34574 0 === _e73.length && (_e73 = d("<div class=\"swiper-slide-shadow-".concat(p ? "left" : "top", "\"></div>")), _t58.append(_e73)), 0 === _s50.length && (_s50 = d("<div class=\"swiper-slide-shadow-".concat(p ? "right" : "bottom", "\"></div>")), _t58.append(_s50)), _e73.length && (_e73[0].style.opacity = Math.max(-_o8, 0)), _s50.length && (_s50[0].style.opacity = Math.max(_o8, 0)); 34575 } 34576 } 34577 if (s.css({ 34578 "-webkit-transform-origin": "50% 50% -".concat(l / 2, "px"), 34579 "transform-origin": "50% 50% -".concat(l / 2, "px") 34580 }), c.shadow) if (p) h.transform("translate3d(0px, ".concat(i / 2 + c.shadowOffset, "px, ").concat(-i / 2, "px) rotateX(90deg) rotateZ(0deg) scale(").concat(c.shadowScale, ")"));else { 34581 var _e74 = Math.abs(m) - 90 * Math.floor(Math.abs(m) / 90), 34582 _t59 = 1.5 - (Math.sin(2 * _e74 * Math.PI / 360) / 2 + Math.cos(2 * _e74 * Math.PI / 360) / 2), 34583 _s51 = c.shadowScale, 34584 _a33 = c.shadowScale / _t59, 34585 _i22 = c.shadowOffset; 34586 h.transform("scale3d(".concat(_s51, ", 1, ").concat(_a33, ") translate3d(0px, ").concat(r / 2 + _i22, "px, ").concat(-r / 2 / _a33, "px) rotateX(-90deg)")); 34587 } 34588 var f = o.isSafari || o.isWebView ? -l / 2 : 0; 34589 s.transform("translate3d(0px,0,".concat(f, "px) rotateX(").concat(e.isHorizontal() ? 0 : m, "deg) rotateY(").concat(e.isHorizontal() ? -m : 0, "deg)")); 34590 }, 34591 setTransition: function setTransition(t) { 34592 var s = e.$el, 34593 a = e.slides; 34594 a.transition(t).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(t), e.params.cubeEffect.shadow && !e.isHorizontal() && s.find(".swiper-cube-shadow").transition(t); 34595 }, 34596 perspective: function perspective() { 34597 return !0; 34598 }, 34599 overwriteParams: function overwriteParams() { 34600 return { 34601 slidesPerView: 1, 34602 slidesPerGroup: 1, 34603 watchSlidesProgress: !0, 34604 resistanceRatio: 0, 34605 spaceBetween: 0, 34606 centeredSlides: !1, 34607 virtualTranslate: !0 34608 }; 34609 } 34610 }); 34611 }, function (_ref29) { 34612 var e = _ref29.swiper, 34613 t = _ref29.extendParams, 34614 s = _ref29.on; 34615 t({ 34616 flipEffect: { 34617 slideShadows: !0, 34618 limitRotation: !0, 34619 transformEl: null 34620 } 34621 }), F({ 34622 effect: "flip", 34623 swiper: e, 34624 on: s, 34625 setTranslate: function setTranslate() { 34626 var t = e.slides, 34627 s = e.rtlTranslate, 34628 a = e.params.flipEffect; 34629 for (var _i23 = 0; _i23 < t.length; _i23 += 1) { 34630 var _r17 = t.eq(_i23); 34631 var _n13 = _r17[0].progress; 34632 e.params.flipEffect.limitRotation && (_n13 = Math.max(Math.min(_r17[0].progress, 1), -1)); 34633 var _l9 = _r17[0].swiperSlideOffset; 34634 var _o9 = -180 * _n13, 34635 _d7 = 0, 34636 _c5 = e.params.cssMode ? -_l9 - e.translate : -_l9, 34637 _p2 = 0; 34638 if (e.isHorizontal() ? s && (_o9 = -_o9) : (_p2 = _c5, _c5 = 0, _d7 = -_o9, _o9 = 0), _r17[0].style.zIndex = -Math.abs(Math.round(_n13)) + t.length, a.slideShadows) { 34639 var _t60 = e.isHorizontal() ? _r17.find(".swiper-slide-shadow-left") : _r17.find(".swiper-slide-shadow-top"), 34640 _s52 = e.isHorizontal() ? _r17.find(".swiper-slide-shadow-right") : _r17.find(".swiper-slide-shadow-bottom"); 34641 0 === _t60.length && (_t60 = Z(a, _r17, e.isHorizontal() ? "left" : "top")), 0 === _s52.length && (_s52 = Z(a, _r17, e.isHorizontal() ? "right" : "bottom")), _t60.length && (_t60[0].style.opacity = Math.max(-_n13, 0)), _s52.length && (_s52[0].style.opacity = Math.max(_n13, 0)); 34642 } 34643 var _u3 = "translate3d(".concat(_c5, "px, ").concat(_p2, "px, 0px) rotateX(").concat(_d7, "deg) rotateY(").concat(_o9, "deg)"); 34644 U(a, _r17).transform(_u3); 34645 } 34646 }, 34647 setTransition: function setTransition(t) { 34648 var s = e.params.flipEffect.transformEl; 34649 (s ? e.slides.find(s) : e.slides).transition(t).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(t), K({ 34650 swiper: e, 34651 duration: t, 34652 transformEl: s 34653 }); 34654 }, 34655 perspective: function perspective() { 34656 return !0; 34657 }, 34658 overwriteParams: function overwriteParams() { 34659 return { 34660 slidesPerView: 1, 34661 slidesPerGroup: 1, 34662 watchSlidesProgress: !0, 34663 spaceBetween: 0, 34664 virtualTranslate: !e.params.cssMode 34665 }; 34666 } 34667 }); 34668 }, function (_ref30) { 34669 var e = _ref30.swiper, 34670 t = _ref30.extendParams, 34671 s = _ref30.on; 34672 t({ 34673 coverflowEffect: { 34674 rotate: 50, 34675 stretch: 0, 34676 depth: 100, 34677 scale: 1, 34678 modifier: 1, 34679 slideShadows: !0, 34680 transformEl: null 34681 } 34682 }), F({ 34683 effect: "coverflow", 34684 swiper: e, 34685 on: s, 34686 setTranslate: function setTranslate() { 34687 var t = e.width, 34688 s = e.height, 34689 a = e.slides, 34690 i = e.slidesSizesGrid, 34691 r = e.params.coverflowEffect, 34692 n = e.isHorizontal(), 34693 l = e.translate, 34694 o = n ? t / 2 - l : s / 2 - l, 34695 d = n ? r.rotate : -r.rotate, 34696 c = r.depth; 34697 for (var _e75 = 0, _t61 = a.length; _e75 < _t61; _e75 += 1) { 34698 var _t62 = a.eq(_e75), 34699 _s53 = i[_e75], 34700 _l10 = (o - _t62[0].swiperSlideOffset - _s53 / 2) / _s53 * r.modifier; 34701 var _p3 = n ? d * _l10 : 0, 34702 _u4 = n ? 0 : d * _l10, 34703 _h3 = -c * Math.abs(_l10), 34704 _m2 = r.stretch; 34705 "string" == typeof _m2 && -1 !== _m2.indexOf("%") && (_m2 = parseFloat(r.stretch) / 100 * _s53); 34706 var _f3 = n ? 0 : _m2 * _l10, 34707 _g2 = n ? _m2 * _l10 : 0, 34708 _v2 = 1 - (1 - r.scale) * Math.abs(_l10); 34709 Math.abs(_g2) < .001 && (_g2 = 0), Math.abs(_f3) < .001 && (_f3 = 0), Math.abs(_h3) < .001 && (_h3 = 0), Math.abs(_p3) < .001 && (_p3 = 0), Math.abs(_u4) < .001 && (_u4 = 0), Math.abs(_v2) < .001 && (_v2 = 0); 34710 var _w = "translate3d(".concat(_g2, "px,").concat(_f3, "px,").concat(_h3, "px) rotateX(").concat(_u4, "deg) rotateY(").concat(_p3, "deg) scale(").concat(_v2, ")"); 34711 if (U(r, _t62).transform(_w), _t62[0].style.zIndex = 1 - Math.abs(Math.round(_l10)), r.slideShadows) { 34712 var _e76 = n ? _t62.find(".swiper-slide-shadow-left") : _t62.find(".swiper-slide-shadow-top"), 34713 _s54 = n ? _t62.find(".swiper-slide-shadow-right") : _t62.find(".swiper-slide-shadow-bottom"); 34714 0 === _e76.length && (_e76 = Z(r, _t62, n ? "left" : "top")), 0 === _s54.length && (_s54 = Z(r, _t62, n ? "right" : "bottom")), _e76.length && (_e76[0].style.opacity = _l10 > 0 ? _l10 : 0), _s54.length && (_s54[0].style.opacity = -_l10 > 0 ? -_l10 : 0); 34715 } 34716 } 34717 }, 34718 setTransition: function setTransition(t) { 34719 var s = e.params.coverflowEffect.transformEl; 34720 (s ? e.slides.find(s) : e.slides).transition(t).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(t); 34721 }, 34722 perspective: function perspective() { 34723 return !0; 34724 }, 34725 overwriteParams: function overwriteParams() { 34726 return { 34727 watchSlidesProgress: !0 34728 }; 34729 } 34730 }); 34731 }, function (_ref31) { 34732 var e = _ref31.swiper, 34733 t = _ref31.extendParams, 34734 s = _ref31.on; 34735 t({ 34736 creativeEffect: { 34737 transformEl: null, 34738 limitProgress: 1, 34739 shadowPerProgress: !1, 34740 progressMultiplier: 1, 34741 perspective: !0, 34742 prev: { 34743 translate: [0, 0, 0], 34744 rotate: [0, 0, 0], 34745 opacity: 1, 34746 scale: 1 34747 }, 34748 next: { 34749 translate: [0, 0, 0], 34750 rotate: [0, 0, 0], 34751 opacity: 1, 34752 scale: 1 34753 } 34754 } 34755 }); 34756 var a = function a(e) { 34757 return "string" == typeof e ? e : "".concat(e, "px"); 34758 }; 34759 F({ 34760 effect: "creative", 34761 swiper: e, 34762 on: s, 34763 setTranslate: function setTranslate() { 34764 var t = e.slides, 34765 s = e.params.creativeEffect, 34766 i = s.progressMultiplier; 34767 var _loop = function _loop(_r18) { 34768 var n = t.eq(_r18), 34769 l = n[0].progress, 34770 o = Math.min(Math.max(n[0].progress, -s.limitProgress), s.limitProgress), 34771 d = n[0].swiperSlideOffset, 34772 c = [e.params.cssMode ? -d - e.translate : -d, 0, 0], 34773 p = [0, 0, 0]; 34774 var u = !1; 34775 e.isHorizontal() || (c[1] = c[0], c[0] = 0); 34776 var h = { 34777 translate: [0, 0, 0], 34778 rotate: [0, 0, 0], 34779 scale: 1, 34780 opacity: 1 34781 }; 34782 o < 0 ? (h = s.next, u = !0) : o > 0 && (h = s.prev, u = !0), c.forEach(function (e, t) { 34783 c[t] = "calc(".concat(e, "px + (").concat(a(h.translate[t]), " * ").concat(Math.abs(o * i), "))"); 34784 }), p.forEach(function (e, t) { 34785 p[t] = h.rotate[t] * Math.abs(o * i); 34786 }), n[0].style.zIndex = -Math.abs(Math.round(l)) + t.length; 34787 var m = c.join(", "), 34788 f = "rotateX(".concat(p[0], "deg) rotateY(").concat(p[1], "deg) rotateZ(").concat(p[2], "deg)"), 34789 g = o < 0 ? "scale(".concat(1 + (1 - h.scale) * o * i, ")") : "scale(".concat(1 - (1 - h.scale) * o * i, ")"), 34790 v = o < 0 ? 1 + (1 - h.opacity) * o * i : 1 - (1 - h.opacity) * o * i, 34791 w = "translate3d(".concat(m, ") ").concat(f, " ").concat(g); 34792 if (u && h.shadow || !u) { 34793 var _e77 = n.children(".swiper-slide-shadow"); 34794 if (0 === _e77.length && h.shadow && (_e77 = Z(s, n)), _e77.length) { 34795 var _t63 = s.shadowPerProgress ? o * (1 / s.limitProgress) : o; 34796 _e77[0].style.opacity = Math.min(Math.max(Math.abs(_t63), 0), 1); 34797 } 34798 } 34799 var b = U(s, n); 34800 b.transform(w).css({ 34801 opacity: v 34802 }), h.origin && b.css("transform-origin", h.origin); 34803 }; 34804 for (var _r18 = 0; _r18 < t.length; _r18 += 1) { 34805 _loop(_r18); 34806 } 34807 }, 34808 setTransition: function setTransition(t) { 34809 var s = e.params.creativeEffect.transformEl; 34810 (s ? e.slides.find(s) : e.slides).transition(t).find(".swiper-slide-shadow").transition(t), K({ 34811 swiper: e, 34812 duration: t, 34813 transformEl: s, 34814 allSlides: !0 34815 }); 34816 }, 34817 perspective: function perspective() { 34818 return e.params.creativeEffect.perspective; 34819 }, 34820 overwriteParams: function overwriteParams() { 34821 return { 34822 watchSlidesProgress: !0, 34823 virtualTranslate: !e.params.cssMode 34824 }; 34825 } 34826 }); 34827 }, function (_ref32) { 34828 var e = _ref32.swiper, 34829 t = _ref32.extendParams, 34830 s = _ref32.on; 34831 t({ 34832 cardsEffect: { 34833 slideShadows: !0, 34834 transformEl: null 34835 } 34836 }), F({ 34837 effect: "cards", 34838 swiper: e, 34839 on: s, 34840 setTranslate: function setTranslate() { 34841 var t = e.slides, 34842 s = e.activeIndex, 34843 a = e.params.cardsEffect, 34844 _e$touchEventsData = e.touchEventsData, 34845 i = _e$touchEventsData.startTranslate, 34846 r = _e$touchEventsData.isTouched, 34847 n = e.translate; 34848 for (var _l11 = 0; _l11 < t.length; _l11 += 1) { 34849 var _o10 = t.eq(_l11), 34850 _d8 = _o10[0].progress, 34851 _c6 = Math.min(Math.max(_d8, -4), 4); 34852 var _p4 = _o10[0].swiperSlideOffset; 34853 e.params.centeredSlides && !e.params.cssMode && e.$wrapperEl.transform("translateX(".concat(e.minTranslate(), "px)")), e.params.centeredSlides && e.params.cssMode && (_p4 -= t[0].swiperSlideOffset); 34854 var _u5 = e.params.cssMode ? -_p4 - e.translate : -_p4, 34855 _h4 = 0; 34856 var _m3 = -100 * Math.abs(_c6); 34857 var _f4 = 1, 34858 _g3 = -2 * _c6, 34859 _v3 = 8 - .75 * Math.abs(_c6); 34860 var _w2 = (_l11 === s || _l11 === s - 1) && _c6 > 0 && _c6 < 1 && (r || e.params.cssMode) && n < i, 34861 _b = (_l11 === s || _l11 === s + 1) && _c6 < 0 && _c6 > -1 && (r || e.params.cssMode) && n > i; 34862 if (_w2 || _b) { 34863 var _e78 = Math.pow(1 - Math.abs((Math.abs(_c6) - .5) / .5), .5); 34864 _g3 += -28 * _c6 * _e78, _f4 += -.5 * _e78, _v3 += 96 * _e78, _h4 = -25 * _e78 * Math.abs(_c6) + "%"; 34865 } 34866 if (_u5 = _c6 < 0 ? "calc(".concat(_u5, "px + (").concat(_v3 * Math.abs(_c6), "%))") : _c6 > 0 ? "calc(".concat(_u5, "px + (-").concat(_v3 * Math.abs(_c6), "%))") : "".concat(_u5, "px"), !e.isHorizontal()) { 34867 var _e79 = _h4; 34868 _h4 = _u5, _u5 = _e79; 34869 } 34870 var _x2 = "\n translate3d(".concat(_u5, ", ").concat(_h4, ", ").concat(_m3, "px)\n rotateZ(").concat(_g3, "deg)\n scale(").concat(_c6 < 0 ? "" + (1 + (1 - _f4) * _c6) : "" + (1 - (1 - _f4) * _c6), ")\n "); 34871 if (a.slideShadows) { 34872 var _e80 = _o10.find(".swiper-slide-shadow"); 34873 0 === _e80.length && (_e80 = Z(a, _o10)), _e80.length && (_e80[0].style.opacity = Math.min(Math.max((Math.abs(_c6) - .5) / .5, 0), 1)); 34874 } 34875 _o10[0].style.zIndex = -Math.abs(Math.round(_d8)) + t.length; 34876 U(a, _o10).transform(_x2); 34877 } 34878 }, 34879 setTransition: function setTransition(t) { 34880 var s = e.params.cardsEffect.transformEl; 34881 (s ? e.slides.find(s) : e.slides).transition(t).find(".swiper-slide-shadow").transition(t), K({ 34882 swiper: e, 34883 duration: t, 34884 transformEl: s 34885 }); 34886 }, 34887 perspective: function perspective() { 34888 return !0; 34889 }, 34890 overwriteParams: function overwriteParams() { 34891 return { 34892 watchSlidesProgress: !0, 34893 virtualTranslate: !e.params.cssMode 34894 }; 34895 } 34896 }); 34897 }]; 34898 return H.use(J), H; 34899}); 34900 34901/***/ }), 34902
vendor: 2,446 bytes, lines 34903-34964
34903/***/ "./node_modules/timers-browserify/main.js": 34904/*!************************************************!*\ 34905 !*** ./node_modules/timers-browserify/main.js ***! 34906 \************************************************/ 34907/*! no static exports found */ 34908/***/ (function(module, exports, __webpack_require__) { 34909 34910/* WEBPACK VAR INJECTION */(function(global) {var scope = typeof global !== "undefined" && global || typeof self !== "undefined" && self || window; 34911var apply = Function.prototype.apply; 34912 34913// DOM APIs, for completeness 34914 34915exports.setTimeout = function () { 34916 return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout); 34917}; 34918exports.setInterval = function () { 34919 return new Timeout(apply.call(setInterval, scope, arguments), clearInterval); 34920}; 34921exports.clearTimeout = exports.clearInterval = function (timeout) { 34922 if (timeout) { 34923 timeout.close(); 34924 } 34925}; 34926function Timeout(id, clearFn) { 34927 this._id = id; 34928 this._clearFn = clearFn; 34929} 34930Timeout.prototype.unref = Timeout.prototype.ref = function () {}; 34931Timeout.prototype.close = function () { 34932 this._clearFn.call(scope, this._id); 34933}; 34934 34935// Does not start the time, just sets up the members needed. 34936exports.enroll = function (item, msecs) { 34937 clearTimeout(item._idleTimeoutId); 34938 item._idleTimeout = msecs; 34939}; 34940exports.unenroll = function (item) { 34941 clearTimeout(item._idleTimeoutId); 34942 item._idleTimeout = -1; 34943}; 34944exports._unrefActive = exports.active = function (item) { 34945 clearTimeout(item._idleTimeoutId); 34946 var msecs = item._idleTimeout; 34947 if (msecs >= 0) { 34948 item._idleTimeoutId = setTimeout(function onTimeout() { 34949 if (item._onTimeout) item._onTimeout(); 34950 }, msecs); 34951 } 34952}; 34953 34954// setimmediate attaches itself to the global object 34955__webpack_require__(/*! setimmediate */ "./node_modules/setimmediate/setImmediate.js"); 34956// On some exotic environments, it's not clear which object `setimmediate` was 34957// able to install onto. Search each possibility in the same order as the 34958// `setimmediate` library. 34959exports.setImmediate = typeof self !== "undefined" && self.setImmediate || typeof global !== "undefined" && global.setImmediate || this && this.setImmediate; 34960exports.clearImmediate = typeof self !== "undefined" && self.clearImmediate || typeof global !== "undefined" && global.clearImmediate || this && this.clearImmediate; 34961/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) 34962 34963/***/ }), 34964
vendor: 24,208 bytes, lines 34965-35260
34965/***/ "./node_modules/underscore/modules/index-all.js": 34966/*!******************************************************!*\ 34967 !*** ./node_modules/underscore/modules/index-all.js ***! 34968 \******************************************************/ 34969/*! exports provided: default, VERSION, iteratee, restArguments, each, forEach, map, collect, reduce, foldl, inject, reduceRight, foldr, find, detect, filter, select, reject, every, all, some, any, contains, includes, include, invoke, pluck, where, findWhere, max, min, shuffle, sample, sortBy, groupBy, indexBy, countBy, toArray, size, partition, first, head, take, initial, last, rest, tail, drop, compact, flatten, without, uniq, unique, union, intersection, difference, unzip, zip, object, findIndex, findLastIndex, sortedIndex, indexOf, lastIndexOf, range, chunk, bind, partial, bindAll, memoize, delay, defer, throttle, debounce, wrap, negate, compose, after, before, once, keys, allKeys, values, mapObject, pairs, invert, functions, methods, extend, extendOwn, assign, findKey, pick, omit, defaults, create, clone, tap, isMatch, isEqual, isEmpty, isElement, isArray, isObject, isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError, isSymbol, isMap, isWeakMap, isSet, isWeakSet, isFinite, isNaN, isBoolean, isNull, isUndefined, has, identity, constant, noop, property, propertyOf, matcher, matches, times, random, now, escape, unescape, result, uniqueId, templateSettings, template, chain, mixin */ 34970/***/ (function(module, __webpack_exports__, __webpack_require__) { 34971 34972"use strict"; 34973__webpack_require__.r(__webpack_exports__); 34974/* harmony import */ var _index_default_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index-default.js */ "./node_modules/underscore/modules/index-default.js"); 34975/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _index_default_js__WEBPACK_IMPORTED_MODULE_0__["default"]; }); 34976 34977/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.js */ "./node_modules/underscore/modules/index.js"); 34978/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VERSION", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["VERSION"]; }); 34979 34980/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "iteratee", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["iteratee"]; }); 34981 34982/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "restArguments", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["restArguments"]; }); 34983 34984/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "each", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["each"]; }); 34985 34986/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forEach", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["forEach"]; }); 34987 34988/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "map", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["map"]; }); 34989 34990/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "collect", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["collect"]; }); 34991 34992/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["reduce"]; }); 34993 34994/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "foldl", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["foldl"]; }); 34995 34996/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "inject", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["inject"]; }); 34997 34998/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduceRight", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["reduceRight"]; }); 34999 35000/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "foldr", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["foldr"]; }); 35001 35002/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "find", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["find"]; }); 35003 35004/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "detect", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["detect"]; }); 35005 35006/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["filter"]; }); 35007 35008/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "select", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["select"]; }); 35009 35010/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reject", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["reject"]; }); 35011 35012/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "every", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["every"]; }); 35013 35014/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "all", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["all"]; }); 35015 35016/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "some", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["some"]; }); 35017 35018/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "any", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["any"]; }); 35019 35020/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "contains", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["contains"]; }); 35021 35022/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "includes", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["includes"]; }); 35023 35024/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "include", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["include"]; }); 35025 35026/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "invoke", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["invoke"]; }); 35027 35028/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["pluck"]; }); 35029 35030/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "where", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["where"]; }); 35031 35032/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findWhere", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["findWhere"]; }); 35033 35034/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "max", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["max"]; }); 35035 35036/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "min", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["min"]; }); 35037 35038/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "shuffle", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["shuffle"]; }); 35039 35040/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["sample"]; }); 35041 35042/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sortBy", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["sortBy"]; }); 35043 35044/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["groupBy"]; }); 35045 35046/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "indexBy", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["indexBy"]; }); 35047 35048/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "countBy", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["countBy"]; }); 35049 35050/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["toArray"]; }); 35051 35052/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "size", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["size"]; }); 35053 35054/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["partition"]; }); 35055 35056/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "first", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["first"]; }); 35057 35058/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "head", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["head"]; }); 35059 35060/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "take", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["take"]; }); 35061 35062/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "initial", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["initial"]; }); 35063 35064/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "last", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["last"]; }); 35065 35066/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "rest", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["rest"]; }); 35067 35068/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tail", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["tail"]; }); 35069 35070/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "drop", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["drop"]; }); 35071 35072/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "compact", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["compact"]; }); 35073 35074/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flatten", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["flatten"]; }); 35075 35076/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "without", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["without"]; }); 35077 35078/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "uniq", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["uniq"]; }); 35079 35080/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "unique", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["unique"]; }); 35081 35082/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "union", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["union"]; }); 35083 35084/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "intersection", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["intersection"]; }); 35085 35086/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "difference", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["difference"]; }); 35087 35088/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "unzip", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["unzip"]; }); 35089 35090/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["zip"]; }); 35091 35092/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "object", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["object"]; }); 35093 35094/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["findIndex"]; }); 35095 35096/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findLastIndex", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["findLastIndex"]; }); 35097 35098/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sortedIndex", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["sortedIndex"]; }); 35099 35100/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "indexOf", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["indexOf"]; }); 35101 35102/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lastIndexOf", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["lastIndexOf"]; }); 35103 35104/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "range", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["range"]; }); 35105 35106/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "chunk", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["chunk"]; }); 35107 35108/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bind", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["bind"]; }); 35109 35110/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partial", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["partial"]; }); 35111 35112/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindAll", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["bindAll"]; }); 35113 35114/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "memoize", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["memoize"]; }); 35115 35116/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["delay"]; }); 35117 35118/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defer", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["defer"]; }); 35119 35120/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["throttle"]; }); 35121 35122/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["debounce"]; }); 35123 35124/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "wrap", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["wrap"]; }); 35125 35126/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "negate", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["negate"]; }); 35127 35128/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "compose", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["compose"]; }); 35129 35130/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "after", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["after"]; }); 35131 35132/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "before", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["before"]; }); 35133 35134/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "once", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["once"]; }); 35135 35136/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "keys", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["keys"]; }); 35137 35138/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "allKeys", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["allKeys"]; }); 35139 35140/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "values", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["values"]; }); 35141 35142/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mapObject", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["mapObject"]; }); 35143 35144/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["pairs"]; }); 35145 35146/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "invert", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["invert"]; }); 35147 35148/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "functions", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["functions"]; }); 35149 35150/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "methods", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["methods"]; }); 35151 35152/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "extend", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["extend"]; }); 35153 35154/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "extendOwn", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["extendOwn"]; }); 35155 35156/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "assign", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["assign"]; }); 35157 35158/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findKey", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["findKey"]; }); 35159 35160/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pick", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["pick"]; }); 35161 35162/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "omit", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["omit"]; }); 35163 35164/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaults", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["defaults"]; }); 35165 35166/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "create", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["create"]; }); 35167 35168/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "clone", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["clone"]; }); 35169 35170/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["tap"]; }); 35171 35172/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isMatch", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["isMatch"]; }); 35173 35174/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isEqual", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["isEqual"]; }); 35175 35176/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["isEmpty"]; }); 35177 35178/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isElement", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["isElement"]; }); 35179 35180/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isArray", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["isArray"]; }); 35181 35182/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isObject", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["isObject"]; }); 35183 35184/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isArguments", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["isArguments"]; }); 35185 35186/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isFunction", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["isFunction"]; }); 35187 35188/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isString", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["isString"]; }); 35189 35190/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isNumber", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["isNumber"]; }); 35191 35192/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isDate", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["isDate"]; }); 35193 35194/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isRegExp", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["isRegExp"]; }); 35195 35196/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isError", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["isError"]; }); 35197 35198/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isSymbol", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["isSymbol"]; }); 35199 35200/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isMap", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["isMap"]; }); 35201 35202/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isWeakMap", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["isWeakMap"]; }); 35203 35204/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isSet", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["isSet"]; }); 35205 35206/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isWeakSet", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["isWeakSet"]; }); 35207 35208/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isFinite", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["isFinite"]; }); 35209 35210/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isNaN", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["isNaN"]; }); 35211 35212/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isBoolean", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["isBoolean"]; }); 35213 35214/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isNull", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["isNull"]; }); 35215 35216/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isUndefined", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["isUndefined"]; }); 35217 35218/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "has", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["has"]; }); 35219 35220/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["identity"]; }); 35221 35222/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "constant", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["constant"]; }); 35223 35224/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "noop", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["noop"]; }); 35225 35226/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "property", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["property"]; }); 35227 35228/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "propertyOf", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["propertyOf"]; }); 35229 35230/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "matcher", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["matcher"]; }); 35231 35232/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "matches", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["matches"]; }); 35233 35234/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "times", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["times"]; }); 35235 35236/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "random", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["random"]; }); 35237 35238/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "now", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["now"]; }); 35239 35240/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "escape", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["escape"]; }); 35241 35242/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "unescape", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["unescape"]; }); 35243 35244/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "result", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["result"]; }); 35245 35246/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "uniqueId", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["uniqueId"]; }); 35247 35248/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "templateSettings", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["templateSettings"]; }); 35249 35250/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "template", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["template"]; }); 35251 35252/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "chain", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["chain"]; }); 35253 35254/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mixin", function() { return _index_js__WEBPACK_IMPORTED_MODULE_1__["mixin"]; }); 35255 35256 35257 35258 35259/***/ }), 35260
vendor: 872 bytes, lines 35261-35282
35261/***/ "./node_modules/underscore/modules/index-default.js": 35262/*!**********************************************************!*\ 35263 !*** ./node_modules/underscore/modules/index-default.js ***! 35264 \**********************************************************/ 35265/*! exports provided: default */ 35266/***/ (function(module, __webpack_exports__, __webpack_require__) { 35267 35268"use strict"; 35269__webpack_require__.r(__webpack_exports__); 35270/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ "./node_modules/underscore/modules/index.js"); 35271 35272 35273 35274// Add all of the Underscore functions to the wrapper object. 35275var _ = Object(_index_js__WEBPACK_IMPORTED_MODULE_0__["mixin"])(_index_js__WEBPACK_IMPORTED_MODULE_0__); 35276// Legacy Node.js API 35277_._ = _; 35278// Export the Underscore API. 35279/* harmony default export */ __webpack_exports__["default"] = (_); 35280 35281/***/ }), 35282
vendor: 72,398 bytes, lines 35283-37107
35283/***/ "./node_modules/underscore/modules/index.js": 35284/*!**************************************************!*\ 35285 !*** ./node_modules/underscore/modules/index.js ***! 35286 \**************************************************/ 35287/*! exports provided: default, VERSION, iteratee, restArguments, each, forEach, map, collect, reduce, foldl, inject, reduceRight, foldr, find, detect, filter, select, reject, every, all, some, any, contains, includes, include, invoke, pluck, where, findWhere, max, min, shuffle, sample, sortBy, groupBy, indexBy, countBy, toArray, size, partition, first, head, take, initial, last, rest, tail, drop, compact, flatten, without, uniq, unique, union, intersection, difference, unzip, zip, object, findIndex, findLastIndex, sortedIndex, indexOf, lastIndexOf, range, chunk, bind, partial, bindAll, memoize, delay, defer, throttle, debounce, wrap, negate, compose, after, before, once, keys, allKeys, values, mapObject, pairs, invert, functions, methods, extend, extendOwn, assign, findKey, pick, omit, defaults, create, clone, tap, isMatch, isEqual, isEmpty, isElement, isArray, isObject, isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError, isSymbol, isMap, isWeakMap, isSet, isWeakSet, isFinite, isNaN, isBoolean, isNull, isUndefined, has, identity, constant, noop, property, propertyOf, matcher, matches, times, random, now, escape, unescape, result, uniqueId, templateSettings, template, chain, mixin */ 35288/***/ (function(module, __webpack_exports__, __webpack_require__) { 35289 35290"use strict"; 35291__webpack_require__.r(__webpack_exports__); 35292/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _; }); 35293/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VERSION", function() { return VERSION; }); 35294/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "iteratee", function() { return iteratee; }); 35295/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "restArguments", function() { return restArguments; }); 35296/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "each", function() { return each; }); 35297/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "forEach", function() { return each; }); 35298/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "map", function() { return map; }); 35299/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "collect", function() { return map; }); 35300/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return reduce; }); 35301/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "foldl", function() { return reduce; }); 35302/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "inject", function() { return reduce; }); 35303/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "reduceRight", function() { return reduceRight; }); 35304/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "foldr", function() { return reduceRight; }); 35305/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "find", function() { return find; }); 35306/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "detect", function() { return find; }); 35307/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return filter; }); 35308/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "select", function() { return filter; }); 35309/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "reject", function() { return reject; }); 35310/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "every", function() { return every; }); 35311/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "all", function() { return every; }); 35312/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "some", function() { return some; }); 35313/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "any", function() { return some; }); 35314/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "contains", function() { return contains; }); 35315/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "includes", function() { return contains; }); 35316/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "include", function() { return contains; }); 35317/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "invoke", function() { return invoke; }); 35318/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return pluck; }); 35319/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "where", function() { return where; }); 35320/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findWhere", function() { return findWhere; }); 35321/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "max", function() { return max; }); 35322/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "min", function() { return min; }); 35323/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "shuffle", function() { return shuffle; }); 35324/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return sample; }); 35325/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sortBy", function() { return sortBy; }); 35326/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return groupBy; }); 35327/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "indexBy", function() { return indexBy; }); 35328/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "countBy", function() { return countBy; }); 35329/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return toArray; }); 35330/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "size", function() { return size; }); 35331/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return partition; }); 35332/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "first", function() { return first; }); 35333/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "head", function() { return first; }); 35334/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "take", function() { return first; }); 35335/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initial", function() { return initial; }); 35336/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "last", function() { return last; }); 35337/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rest", function() { return rest; }); 35338/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tail", function() { return rest; }); 35339/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "drop", function() { return rest; }); 35340/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "compact", function() { return compact; }); 35341/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flatten", function() { return flatten; }); 35342/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "without", function() { return without; }); 35343/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "uniq", function() { return uniq; }); 35344/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "unique", function() { return uniq; }); 35345/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "union", function() { return union; }); 35346/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "intersection", function() { return intersection; }); 35347/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "difference", function() { return difference; }); 35348/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "unzip", function() { return unzip; }); 35349/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return zip; }); 35350/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "object", function() { return object; }); 35351/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return findIndex; }); 35352/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findLastIndex", function() { return findLastIndex; }); 35353/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sortedIndex", function() { return sortedIndex; }); 35354/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "indexOf", function() { return indexOf; }); 35355/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "lastIndexOf", function() { return lastIndexOf; }); 35356/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "range", function() { return range; }); 35357/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "chunk", function() { return chunk; }); 35358/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bind", function() { return bind; }); 35359/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "partial", function() { return partial; }); 35360/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bindAll", function() { return bindAll; }); 35361/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "memoize", function() { return memoize; }); 35362/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return delay; }); 35363/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defer", function() { return defer; }); 35364/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return throttle; }); 35365/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return debounce; }); 35366/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "wrap", function() { return wrap; }); 35367/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "negate", function() { return negate; }); 35368/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "compose", function() { return compose; }); 35369/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "after", function() { return after; }); 35370/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "before", function() { return before; }); 35371/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "once", function() { return once; }); 35372/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keys", function() { return keys; }); 35373/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "allKeys", function() { return allKeys; }); 35374/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "values", function() { return values; }); 35375/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapObject", function() { return mapObject; }); 35376/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return pairs; }); 35377/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "invert", function() { return invert; }); 35378/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "functions", function() { return functions; }); 35379/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "methods", function() { return functions; }); 35380/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "extend", function() { return extend; }); 35381/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "extendOwn", function() { return extendOwn; }); 35382/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "assign", function() { return extendOwn; }); 35383/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findKey", function() { return findKey; }); 35384/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pick", function() { return pick; }); 35385/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "omit", function() { return omit; }); 35386/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaults", function() { return defaults; }); 35387/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "create", function() { return create; }); 35388/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clone", function() { return clone; }); 35389/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return tap; }); 35390/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isMatch", function() { return isMatch; }); 35391/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEqual", function() { return isEqual; }); 35392/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return isEmpty; }); 35393/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isElement", function() { return isElement; }); 35394/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isArray", function() { return isArray; }); 35395/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isObject", function() { return isObject; }); 35396/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isArguments", function() { return isArguments; }); 35397/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFunction", function() { return isFunction; }); 35398/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isString", function() { return isString; }); 35399/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNumber", function() { return isNumber; }); 35400/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isDate", function() { return isDate; }); 35401/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isRegExp", function() { return isRegExp; }); 35402/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isError", function() { return isError; }); 35403/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSymbol", function() { return isSymbol; }); 35404/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isMap", function() { return isMap; }); 35405/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isWeakMap", function() { return isWeakMap; }); 35406/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSet", function() { return isSet; }); 35407/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isWeakSet", function() { return isWeakSet; }); 35408/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFinite", function() { return isFinite; }); 35409/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNaN", function() { return isNaN; }); 35410/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isBoolean", function() { return isBoolean; }); 35411/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNull", function() { return isNull; }); 35412/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isUndefined", function() { return isUndefined; }); 35413/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "has", function() { return has; }); 35414/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return identity; }); 35415/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "constant", function() { return constant; }); 35416/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "noop", function() { return noop; }); 35417/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "property", function() { return property; }); 35418/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "propertyOf", function() { return propertyOf; }); 35419/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "matcher", function() { return matcher; }); 35420/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "matches", function() { return matcher; }); 35421/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "times", function() { return times; }); 35422/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "random", function() { return random; }); 35423/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "now", function() { return now; }); 35424/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "escape", function() { return escape; }); 35425/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "unescape", function() { return unescape; }); 35426/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "result", function() { return result; }); 35427/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "uniqueId", function() { return uniqueId; }); 35428/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "templateSettings", function() { return templateSettings; }); 35429/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "template", function() { return template; }); 35430/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "chain", function() { return chain; }); 35431/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mixin", function() { return mixin; }); 35432function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 35433// Underscore.js 1.10.2 35434// https://underscorejs.org 35435// (c) 2009-2020 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors 35436// Underscore may be freely distributed under the MIT license. 35437 35438// Baseline setup 35439// -------------- 35440 35441// Establish the root object, `window` (`self`) in the browser, `global` 35442// on the server, or `this` in some virtual machines. We use `self` 35443// instead of `window` for `WebWorker` support. 35444var root = (typeof self === "undefined" ? "undefined" : _typeof(self)) == 'object' && self.self === self && self || (typeof global === "undefined" ? "undefined" : _typeof(global)) == 'object' && global.global === global && global || Function('return this')() || {}; 35445 35446// Save bytes in the minified (but not gzipped) version: 35447var ArrayProto = Array.prototype, 35448 ObjProto = Object.prototype; 35449var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; 35450 35451// Create quick reference variables for speed access to core prototypes. 35452var push = ArrayProto.push, 35453 slice = ArrayProto.slice, 35454 toString = ObjProto.toString, 35455 hasOwnProperty = ObjProto.hasOwnProperty; 35456 35457// All **ECMAScript 5** native function implementations that we hope to use 35458// are declared here. 35459var nativeIsArray = Array.isArray, 35460 nativeKeys = Object.keys, 35461 nativeCreate = Object.create; 35462 35463// Create references to these builtin functions because we override them. 35464var _isNaN = root.isNaN, 35465 _isFinite = root.isFinite; 35466 35467// Naked function reference for surrogate-prototype-swapping. 35468var Ctor = function Ctor() {}; 35469 35470// The Underscore object. All exported functions below are added to it in the 35471// modules/index-all.js using the mixin function. 35472function _(obj) { 35473 if (obj instanceof _) return obj; 35474 if (!(this instanceof _)) return new _(obj); 35475 this._wrapped = obj; 35476} 35477 35478// Current version. 35479var VERSION = _.VERSION = '1.10.2'; 35480 35481// Internal function that returns an efficient (for current engines) version 35482// of the passed-in callback, to be repeatedly applied in other Underscore 35483// functions. 35484function optimizeCb(func, context, argCount) { 35485 if (context === void 0) return func; 35486 switch (argCount == null ? 3 : argCount) { 35487 case 1: 35488 return function (value) { 35489 return func.call(context, value); 35490 }; 35491 // The 2-argument case is omitted because weâre not using it. 35492 case 3: 35493 return function (value, index, collection) { 35494 return func.call(context, value, index, collection); 35495 }; 35496 case 4: 35497 return function (accumulator, value, index, collection) { 35498 return func.call(context, accumulator, value, index, collection); 35499 }; 35500 } 35501 return function () { 35502 return func.apply(context, arguments); 35503 }; 35504} 35505 35506// An internal function to generate callbacks that can be applied to each 35507// element in a collection, returning the desired result â either `identity`, 35508// an arbitrary callback, a property matcher, or a property accessor. 35509function baseIteratee(value, context, argCount) { 35510 if (value == null) return identity; 35511 if (isFunction(value)) return optimizeCb(value, context, argCount); 35512 if (isObject(value) && !isArray(value)) return matcher(value); 35513 return property(value); 35514} 35515 35516// External wrapper for our callback generator. Users may customize 35517// `_.iteratee` if they want additional predicate/iteratee shorthand styles. 35518// This abstraction hides the internal-only argCount argument. 35519_.iteratee = iteratee; 35520function iteratee(value, context) { 35521 return baseIteratee(value, context, Infinity); 35522} 35523 35524// The function we actually call internally. It invokes _.iteratee if 35525// overridden, otherwise baseIteratee. 35526function cb(value, context, argCount) { 35527 if (_.iteratee !== iteratee) return _.iteratee(value, context); 35528 return baseIteratee(value, context, argCount); 35529} 35530 35531// Some functions take a variable number of arguments, or a few expected 35532// arguments at the beginning and then a variable number of values to operate 35533// on. This helper accumulates all remaining arguments past the functionâs 35534// argument length (or an explicit `startIndex`), into an array that becomes 35535// the last argument. Similar to ES6âs "rest parameter". 35536function restArguments(func, startIndex) { 35537 startIndex = startIndex == null ? func.length - 1 : +startIndex; 35538 return function () { 35539 var length = Math.max(arguments.length - startIndex, 0), 35540 rest = Array(length), 35541 index = 0; 35542 for (; index < length; index++) { 35543 rest[index] = arguments[index + startIndex]; 35544 } 35545 switch (startIndex) { 35546 case 0: 35547 return func.call(this, rest); 35548 case 1: 35549 return func.call(this, arguments[0], rest); 35550 case 2: 35551 return func.call(this, arguments[0], arguments[1], rest); 35552 } 35553 var args = Array(startIndex + 1); 35554 for (index = 0; index < startIndex; index++) { 35555 args[index] = arguments[index]; 35556 } 35557 args[startIndex] = rest; 35558 return func.apply(this, args); 35559 }; 35560} 35561 35562// An internal function for creating a new object that inherits from another. 35563function baseCreate(prototype) { 35564 if (!isObject(prototype)) return {}; 35565 if (nativeCreate) return nativeCreate(prototype); 35566 Ctor.prototype = prototype; 35567 var result = new Ctor(); 35568 Ctor.prototype = null; 35569 return result; 35570} 35571function shallowProperty(key) { 35572 return function (obj) { 35573 return obj == null ? void 0 : obj[key]; 35574 }; 35575} 35576function _has(obj, path) { 35577 return obj != null && hasOwnProperty.call(obj, path); 35578} 35579function deepGet(obj, path) { 35580 var length = path.length; 35581 for (var i = 0; i < length; i++) { 35582 if (obj == null) return void 0; 35583 obj = obj[path[i]]; 35584 } 35585 return length ? obj : void 0; 35586} 35587 35588// Helper for collection methods to determine whether a collection 35589// should be iterated as an array or as an object. 35590// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength 35591// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 35592var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; 35593var getLength = shallowProperty('length'); 35594function isArrayLike(collection) { 35595 var length = getLength(collection); 35596 return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX; 35597} 35598 35599// Collection Functions 35600// -------------------- 35601 35602// The cornerstone, an `each` implementation, aka `forEach`. 35603// Handles raw objects in addition to array-likes. Treats all 35604// sparse array-likes as if they were dense. 35605function each(obj, iteratee, context) { 35606 iteratee = optimizeCb(iteratee, context); 35607 var i, length; 35608 if (isArrayLike(obj)) { 35609 for (i = 0, length = obj.length; i < length; i++) { 35610 iteratee(obj[i], i, obj); 35611 } 35612 } else { 35613 var _keys = keys(obj); 35614 for (i = 0, length = _keys.length; i < length; i++) { 35615 iteratee(obj[_keys[i]], _keys[i], obj); 35616 } 35617 } 35618 return obj; 35619} 35620 35621 35622// Return the results of applying the iteratee to each element. 35623function map(obj, iteratee, context) { 35624 iteratee = cb(iteratee, context); 35625 var _keys = !isArrayLike(obj) && keys(obj), 35626 length = (_keys || obj).length, 35627 results = Array(length); 35628 for (var index = 0; index < length; index++) { 35629 var currentKey = _keys ? _keys[index] : index; 35630 results[index] = iteratee(obj[currentKey], currentKey, obj); 35631 } 35632 return results; 35633} 35634 35635 35636// Create a reducing function iterating left or right. 35637function createReduce(dir) { 35638 // Wrap code that reassigns argument variables in a separate function than 35639 // the one that accesses `arguments.length` to avoid a perf hit. (#1991) 35640 var reducer = function reducer(obj, iteratee, memo, initial) { 35641 var _keys = !isArrayLike(obj) && keys(obj), 35642 length = (_keys || obj).length, 35643 index = dir > 0 ? 0 : length - 1; 35644 if (!initial) { 35645 memo = obj[_keys ? _keys[index] : index]; 35646 index += dir; 35647 } 35648 for (; index >= 0 && index < length; index += dir) { 35649 var currentKey = _keys ? _keys[index] : index; 35650 memo = iteratee(memo, obj[currentKey], currentKey, obj); 35651 } 35652 return memo; 35653 }; 35654 return function (obj, iteratee, memo, context) { 35655 var initial = arguments.length >= 3; 35656 return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial); 35657 }; 35658} 35659 35660// **Reduce** builds up a single result from a list of values, aka `inject`, 35661// or `foldl`. 35662var reduce = createReduce(1); 35663 35664 35665// The right-associative version of reduce, also known as `foldr`. 35666var reduceRight = createReduce(-1); 35667 35668 35669// Return the first value which passes a truth test. 35670function find(obj, predicate, context) { 35671 var keyFinder = isArrayLike(obj) ? findIndex : findKey; 35672 var key = keyFinder(obj, predicate, context); 35673 if (key !== void 0 && key !== -1) return obj[key]; 35674} 35675 35676 35677// Return all the elements that pass a truth test. 35678function filter(obj, predicate, context) { 35679 var results = []; 35680 predicate = cb(predicate, context); 35681 each(obj, function (value, index, list) { 35682 if (predicate(value, index, list)) results.push(value); 35683 }); 35684 return results; 35685} 35686 35687 35688// Return all the elements for which a truth test fails. 35689function reject(obj, predicate, context) { 35690 return filter(obj, negate(cb(predicate)), context); 35691} 35692 35693// Determine whether all of the elements match a truth test. 35694function every(obj, predicate, context) { 35695 predicate = cb(predicate, context); 35696 var _keys = !isArrayLike(obj) && keys(obj), 35697 length = (_keys || obj).length; 35698 for (var index = 0; index < length; index++) { 35699 var currentKey = _keys ? _keys[index] : index; 35700 if (!predicate(obj[currentKey], currentKey, obj)) return false; 35701 } 35702 return true; 35703} 35704 35705 35706// Determine if at least one element in the object matches a truth test. 35707function some(obj, predicate, context) { 35708 predicate = cb(predicate, context); 35709 var _keys = !isArrayLike(obj) && keys(obj), 35710 length = (_keys || obj).length; 35711 for (var index = 0; index < length; index++) { 35712 var currentKey = _keys ? _keys[index] : index; 35713 if (predicate(obj[currentKey], currentKey, obj)) return true; 35714 } 35715 return false; 35716} 35717 35718 35719// Determine if the array or object contains a given item (using `===`). 35720function contains(obj, item, fromIndex, guard) { 35721 if (!isArrayLike(obj)) obj = values(obj); 35722 if (typeof fromIndex != 'number' || guard) fromIndex = 0; 35723 return indexOf(obj, item, fromIndex) >= 0; 35724} 35725 35726 35727// Invoke a method (with arguments) on every item in a collection. 35728var invoke = restArguments(function (obj, path, args) { 35729 var contextPath, func; 35730 if (isFunction(path)) { 35731 func = path; 35732 } else if (isArray(path)) { 35733 contextPath = path.slice(0, -1); 35734 path = path[path.length - 1]; 35735 } 35736 return map(obj, function (context) { 35737 var method = func; 35738 if (!method) { 35739 if (contextPath && contextPath.length) { 35740 context = deepGet(context, contextPath); 35741 } 35742 if (context == null) return void 0; 35743 method = context[path]; 35744 } 35745 return method == null ? method : method.apply(context, args); 35746 }); 35747}); 35748 35749// Convenience version of a common use case of `map`: fetching a property. 35750function pluck(obj, key) { 35751 return map(obj, property(key)); 35752} 35753 35754// Convenience version of a common use case of `filter`: selecting only objects 35755// containing specific `key:value` pairs. 35756function where(obj, attrs) { 35757 return filter(obj, matcher(attrs)); 35758} 35759 35760// Convenience version of a common use case of `find`: getting the first object 35761// containing specific `key:value` pairs. 35762function findWhere(obj, attrs) { 35763 return find(obj, matcher(attrs)); 35764} 35765 35766// Return the maximum element (or element-based computation). 35767function max(obj, iteratee, context) { 35768 var result = -Infinity, 35769 lastComputed = -Infinity, 35770 value, 35771 computed; 35772 if (iteratee == null || typeof iteratee == 'number' && _typeof(obj[0]) != 'object' && obj != null) { 35773 obj = isArrayLike(obj) ? obj : values(obj); 35774 for (var i = 0, length = obj.length; i < length; i++) { 35775 value = obj[i]; 35776 if (value != null && value > result) { 35777 result = value; 35778 } 35779 } 35780 } else { 35781 iteratee = cb(iteratee, context); 35782 each(obj, function (v, index, list) { 35783 computed = iteratee(v, index, list); 35784 if (computed > lastComputed || computed === -Infinity && result === -Infinity) { 35785 result = v; 35786 lastComputed = computed; 35787 } 35788 }); 35789 } 35790 return result; 35791} 35792 35793// Return the minimum element (or element-based computation). 35794function min(obj, iteratee, context) { 35795 var result = Infinity, 35796 lastComputed = Infinity, 35797 value, 35798 computed; 35799 if (iteratee == null || typeof iteratee == 'number' && _typeof(obj[0]) != 'object' && obj != null) { 35800 obj = isArrayLike(obj) ? obj : values(obj); 35801 for (var i = 0, length = obj.length; i < length; i++) { 35802 value = obj[i]; 35803 if (value != null && value < result) { 35804 result = value; 35805 } 35806 } 35807 } else { 35808 iteratee = cb(iteratee, context); 35809 each(obj, function (v, index, list) { 35810 computed = iteratee(v, index, list); 35811 if (computed < lastComputed || computed === Infinity && result === Infinity) { 35812 result = v; 35813 lastComputed = computed; 35814 } 35815 }); 35816 } 35817 return result; 35818} 35819 35820// Shuffle a collection. 35821function shuffle(obj) { 35822 return sample(obj, Infinity); 35823} 35824 35825// Sample **n** random values from a collection using the modern version of the 35826// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/FisherâYates_shuffle). 35827// If **n** is not specified, returns a single random element. 35828// The internal `guard` argument allows it to work with `map`. 35829function sample(obj, n, guard) { 35830 if (n == null || guard) { 35831 if (!isArrayLike(obj)) obj = values(obj); 35832 return obj[random(obj.length - 1)]; 35833 } 35834 var sample = isArrayLike(obj) ? clone(obj) : values(obj); 35835 var length = getLength(sample); 35836 n = Math.max(Math.min(n, length), 0); 35837 var last = length - 1; 35838 for (var index = 0; index < n; index++) { 35839 var rand = random(index, last); 35840 var temp = sample[index]; 35841 sample[index] = sample[rand]; 35842 sample[rand] = temp; 35843 } 35844 return sample.slice(0, n); 35845} 35846 35847// Sort the object's values by a criterion produced by an iteratee. 35848function sortBy(obj, iteratee, context) { 35849 var index = 0; 35850 iteratee = cb(iteratee, context); 35851 return pluck(map(obj, function (value, key, list) { 35852 return { 35853 value: value, 35854 index: index++, 35855 criteria: iteratee(value, key, list) 35856 }; 35857 }).sort(function (left, right) { 35858 var a = left.criteria; 35859 var b = right.criteria; 35860 if (a !== b) { 35861 if (a > b || a === void 0) return 1; 35862 if (a < b || b === void 0) return -1; 35863 } 35864 return left.index - right.index; 35865 }), 'value'); 35866} 35867 35868// An internal function used for aggregate "group by" operations. 35869function group(behavior, partition) { 35870 return function (obj, iteratee, context) { 35871 var result = partition ? [[], []] : {}; 35872 iteratee = cb(iteratee, context); 35873 each(obj, function (value, index) { 35874 var key = iteratee(value, index, obj); 35875 behavior(result, value, key); 35876 }); 35877 return result; 35878 }; 35879} 35880 35881// Groups the object's values by a criterion. Pass either a string attribute 35882// to group by, or a function that returns the criterion. 35883var groupBy = group(function (result, value, key) { 35884 if (_has(result, key)) result[key].push(value);else result[key] = [value]; 35885}); 35886 35887// Indexes the object's values by a criterion, similar to `groupBy`, but for 35888// when you know that your index values will be unique. 35889var indexBy = group(function (result, value, key) { 35890 result[key] = value; 35891}); 35892 35893// Counts instances of an object that group by a certain criterion. Pass 35894// either a string attribute to count by, or a function that returns the 35895// criterion. 35896var countBy = group(function (result, value, key) { 35897 if (_has(result, key)) result[key]++;else result[key] = 1; 35898}); 35899var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; 35900// Safely create a real, live array from anything iterable. 35901function toArray(obj) { 35902 if (!obj) return []; 35903 if (isArray(obj)) return slice.call(obj); 35904 if (isString(obj)) { 35905 // Keep surrogate pair characters together 35906 return obj.match(reStrSymbol); 35907 } 35908 if (isArrayLike(obj)) return map(obj, identity); 35909 return values(obj); 35910} 35911 35912// Return the number of elements in an object. 35913function size(obj) { 35914 if (obj == null) return 0; 35915 return isArrayLike(obj) ? obj.length : keys(obj).length; 35916} 35917 35918// Split a collection into two arrays: one whose elements all satisfy the given 35919// predicate, and one whose elements all do not satisfy the predicate. 35920var partition = group(function (result, value, pass) { 35921 result[pass ? 0 : 1].push(value); 35922}, true); 35923 35924// Array Functions 35925// --------------- 35926 35927// Get the first element of an array. Passing **n** will return the first N 35928// values in the array. The **guard** check allows it to work with `map`. 35929function first(array, n, guard) { 35930 if (array == null || array.length < 1) return n == null ? void 0 : []; 35931 if (n == null || guard) return array[0]; 35932 return initial(array, array.length - n); 35933} 35934 35935 35936// Returns everything but the last entry of the array. Especially useful on 35937// the arguments object. Passing **n** will return all the values in 35938// the array, excluding the last N. 35939function initial(array, n, guard) { 35940 return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); 35941} 35942 35943// Get the last element of an array. Passing **n** will return the last N 35944// values in the array. 35945function last(array, n, guard) { 35946 if (array == null || array.length < 1) return n == null ? void 0 : []; 35947 if (n == null || guard) return array[array.length - 1]; 35948 return rest(array, Math.max(0, array.length - n)); 35949} 35950 35951// Returns everything but the first entry of the array. Especially useful on 35952// the arguments object. Passing an **n** will return the rest N values in the 35953// array. 35954function rest(array, n, guard) { 35955 return slice.call(array, n == null || guard ? 1 : n); 35956} 35957 35958 35959// Trim out all falsy values from an array. 35960function compact(array) { 35961 return filter(array, Boolean); 35962} 35963 35964// Internal implementation of a recursive `flatten` function. 35965function _flatten(input, shallow, strict, output) { 35966 output = output || []; 35967 var idx = output.length; 35968 for (var i = 0, length = getLength(input); i < length; i++) { 35969 var value = input[i]; 35970 if (isArrayLike(value) && (isArray(value) || isArguments(value))) { 35971 // Flatten current level of array or arguments object. 35972 if (shallow) { 35973 var j = 0, 35974 len = value.length; 35975 while (j < len) { 35976 output[idx++] = value[j++]; 35977 } 35978 } else { 35979 _flatten(value, shallow, strict, output); 35980 idx = output.length; 35981 } 35982 } else if (!strict) { 35983 output[idx++] = value; 35984 } 35985 } 35986 return output; 35987} 35988 35989// Flatten out an array, either recursively (by default), or just one level. 35990function flatten(array, shallow) { 35991 return _flatten(array, shallow, false); 35992} 35993 35994// Return a version of the array that does not contain the specified value(s). 35995var without = restArguments(function (array, otherArrays) { 35996 return difference(array, otherArrays); 35997}); 35998 35999// Produce a duplicate-free version of the array. If the array has already 36000// been sorted, you have the option of using a faster algorithm. 36001// The faster algorithm will not work with an iteratee if the iteratee 36002// is not a one-to-one function, so providing an iteratee will disable 36003// the faster algorithm. 36004function uniq(array, isSorted, iteratee, context) { 36005 if (!isBoolean(isSorted)) { 36006 context = iteratee; 36007 iteratee = isSorted; 36008 isSorted = false; 36009 } 36010 if (iteratee != null) iteratee = cb(iteratee, context); 36011 var result = []; 36012 var seen = []; 36013 for (var i = 0, length = getLength(array); i < length; i++) { 36014 var value = array[i], 36015 computed = iteratee ? iteratee(value, i, array) : value; 36016 if (isSorted && !iteratee) { 36017 if (!i || seen !== computed) result.push(value); 36018 seen = computed; 36019 } else if (iteratee) { 36020 if (!contains(seen, computed)) { 36021 seen.push(computed); 36022 result.push(value); 36023 } 36024 } else if (!contains(result, value)) { 36025 result.push(value); 36026 } 36027 } 36028 return result; 36029} 36030 36031 36032// Produce an array that contains the union: each distinct element from all of 36033// the passed-in arrays. 36034var union = restArguments(function (arrays) { 36035 return uniq(_flatten(arrays, true, true)); 36036}); 36037 36038// Produce an array that contains every item shared between all the 36039// passed-in arrays. 36040function intersection(array) { 36041 var result = []; 36042 var argsLength = arguments.length; 36043 for (var i = 0, length = getLength(array); i < length; i++) { 36044 var item = array[i]; 36045 if (contains(result, item)) continue; 36046 var j; 36047 for (j = 1; j < argsLength; j++) { 36048 if (!contains(arguments[j], item)) break; 36049 } 36050 if (j === argsLength) result.push(item); 36051 } 36052 return result; 36053} 36054 36055// Take the difference between one array and a number of other arrays. 36056// Only the elements present in just the first array will remain. 36057var difference = restArguments(function (array, rest) { 36058 rest = _flatten(rest, true, true); 36059 return filter(array, function (value) { 36060 return !contains(rest, value); 36061 }); 36062}); 36063 36064// Complement of zip. Unzip accepts an array of arrays and groups 36065// each array's elements on shared indices. 36066function unzip(array) { 36067 var length = array && max(array, getLength).length || 0; 36068 var result = Array(length); 36069 for (var index = 0; index < length; index++) { 36070 result[index] = pluck(array, index); 36071 } 36072 return result; 36073} 36074 36075// Zip together multiple lists into a single array -- elements that share 36076// an index go together. 36077var zip = restArguments(unzip); 36078 36079// Converts lists into objects. Pass either a single array of `[key, value]` 36080// pairs, or two parallel arrays of the same length -- one of keys, and one of 36081// the corresponding values. Passing by pairs is the reverse of pairs. 36082function object(list, values) { 36083 var result = {}; 36084 for (var i = 0, length = getLength(list); i < length; i++) { 36085 if (values) { 36086 result[list[i]] = values[i]; 36087 } else { 36088 result[list[i][0]] = list[i][1]; 36089 } 36090 } 36091 return result; 36092} 36093 36094// Generator function to create the findIndex and findLastIndex functions. 36095function createPredicateIndexFinder(dir) { 36096 return function (array, predicate, context) { 36097 predicate = cb(predicate, context); 36098 var length = getLength(array); 36099 var index = dir > 0 ? 0 : length - 1; 36100 for (; index >= 0 && index < length; index += dir) { 36101 if (predicate(array[index], index, array)) return index; 36102 } 36103 return -1; 36104 }; 36105} 36106 36107// Returns the first index on an array-like that passes a predicate test. 36108var findIndex = createPredicateIndexFinder(1); 36109var findLastIndex = createPredicateIndexFinder(-1); 36110 36111// Use a comparator function to figure out the smallest index at which 36112// an object should be inserted so as to maintain order. Uses binary search. 36113function sortedIndex(array, obj, iteratee, context) { 36114 iteratee = cb(iteratee, context, 1); 36115 var value = iteratee(obj); 36116 var low = 0, 36117 high = getLength(array); 36118 while (low < high) { 36119 var mid = Math.floor((low + high) / 2); 36120 if (iteratee(array[mid]) < value) low = mid + 1;else high = mid; 36121 } 36122 return low; 36123} 36124 36125// Generator function to create the indexOf and lastIndexOf functions. 36126function createIndexFinder(dir, predicateFind, sortedIndex) { 36127 return function (array, item, idx) { 36128 var i = 0, 36129 length = getLength(array); 36130 if (typeof idx == 'number') { 36131 if (dir > 0) { 36132 i = idx >= 0 ? idx : Math.max(idx + length, i); 36133 } else { 36134 length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; 36135 } 36136 } else if (sortedIndex && idx && length) { 36137 idx = sortedIndex(array, item); 36138 return array[idx] === item ? idx : -1; 36139 } 36140 if (item !== item) { 36141 idx = predicateFind(slice.call(array, i, length), isNaN); 36142 return idx >= 0 ? idx + i : -1; 36143 } 36144 for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { 36145 if (array[idx] === item) return idx; 36146 } 36147 return -1; 36148 }; 36149} 36150 36151// Return the position of the first occurrence of an item in an array, 36152// or -1 if the item is not included in the array. 36153// If the array is large and already in sort order, pass `true` 36154// for **isSorted** to use binary search. 36155var indexOf = createIndexFinder(1, findIndex, sortedIndex); 36156var lastIndexOf = createIndexFinder(-1, findLastIndex); 36157 36158// Generate an integer Array containing an arithmetic progression. A port of 36159// the native Python `range()` function. See 36160// [the Python documentation](https://docs.python.org/library/functions.html#range). 36161function range(start, stop, step) { 36162 if (stop == null) { 36163 stop = start || 0; 36164 start = 0; 36165 } 36166 if (!step) { 36167 step = stop < start ? -1 : 1; 36168 } 36169 var length = Math.max(Math.ceil((stop - start) / step), 0); 36170 var range = Array(length); 36171 for (var idx = 0; idx < length; idx++, start += step) { 36172 range[idx] = start; 36173 } 36174 return range; 36175} 36176 36177// Chunk a single array into multiple arrays, each containing `count` or fewer 36178// items. 36179function chunk(array, count) { 36180 if (count == null || count < 1) return []; 36181 var result = []; 36182 var i = 0, 36183 length = array.length; 36184 while (i < length) { 36185 result.push(slice.call(array, i, i += count)); 36186 } 36187 return result; 36188} 36189 36190// Function (ahem) Functions 36191// ------------------ 36192 36193// Determines whether to execute a function as a constructor 36194// or a normal function with the provided arguments. 36195function executeBound(sourceFunc, boundFunc, context, callingContext, args) { 36196 if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); 36197 var self = baseCreate(sourceFunc.prototype); 36198 var result = sourceFunc.apply(self, args); 36199 if (isObject(result)) return result; 36200 return self; 36201} 36202 36203// Create a function bound to a given object (assigning `this`, and arguments, 36204// optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if 36205// available. 36206var bind = restArguments(function (func, context, args) { 36207 if (!isFunction(func)) throw new TypeError('Bind must be called on a function'); 36208 var bound = restArguments(function (callArgs) { 36209 return executeBound(func, bound, context, this, args.concat(callArgs)); 36210 }); 36211 return bound; 36212}); 36213 36214// Partially apply a function by creating a version that has had some of its 36215// arguments pre-filled, without changing its dynamic `this` context. _ acts 36216// as a placeholder by default, allowing any combination of arguments to be 36217// pre-filled. Set `partial.placeholder` for a custom placeholder argument. 36218var partial = restArguments(function (func, boundArgs) { 36219 var placeholder = partial.placeholder; 36220 var bound = function bound() { 36221 var position = 0, 36222 length = boundArgs.length; 36223 var args = Array(length); 36224 for (var i = 0; i < length; i++) { 36225 args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i]; 36226 } 36227 while (position < arguments.length) { 36228 args.push(arguments[position++]); 36229 } 36230 return executeBound(func, bound, this, this, args); 36231 }; 36232 return bound; 36233}); 36234partial.placeholder = _; 36235 36236// Bind a number of an object's methods to that object. Remaining arguments 36237// are the method names to be bound. Useful for ensuring that all callbacks 36238// defined on an object belong to it. 36239var bindAll = restArguments(function (obj, _keys) { 36240 _keys = _flatten(_keys, false, false); 36241 var index = _keys.length; 36242 if (index < 1) throw new Error('bindAll must be passed function names'); 36243 while (index--) { 36244 var key = _keys[index]; 36245 obj[key] = bind(obj[key], obj); 36246 } 36247}); 36248 36249// Memoize an expensive function by storing its results. 36250function memoize(func, hasher) { 36251 var memoize = function memoize(key) { 36252 var cache = memoize.cache; 36253 var address = '' + (hasher ? hasher.apply(this, arguments) : key); 36254 if (!_has(cache, address)) cache[address] = func.apply(this, arguments); 36255 return cache[address]; 36256 }; 36257 memoize.cache = {}; 36258 return memoize; 36259} 36260 36261// Delays a function for the given number of milliseconds, and then calls 36262// it with the arguments supplied. 36263var delay = restArguments(function (func, wait, args) { 36264 return setTimeout(function () { 36265 return func.apply(null, args); 36266 }, wait); 36267}); 36268 36269// Defers a function, scheduling it to run after the current call stack has 36270// cleared. 36271var defer = partial(delay, _, 1); 36272 36273// Returns a function, that, when invoked, will only be triggered at most once 36274// during a given window of time. Normally, the throttled function will run 36275// as much as it can, without ever going more than once per `wait` duration; 36276// but if you'd like to disable the execution on the leading edge, pass 36277// `{leading: false}`. To disable execution on the trailing edge, ditto. 36278function throttle(func, wait, options) { 36279 var timeout, context, args, result; 36280 var previous = 0; 36281 if (!options) options = {}; 36282 var later = function later() { 36283 previous = options.leading === false ? 0 : now(); 36284 timeout = null; 36285 result = func.apply(context, args); 36286 if (!timeout) context = args = null; 36287 }; 36288 var throttled = function throttled() { 36289 var _now = now(); 36290 if (!previous && options.leading === false) previous = _now; 36291 var remaining = wait - (_now - previous); 36292 context = this; 36293 args = arguments; 36294 if (remaining <= 0 || remaining > wait) { 36295 if (timeout) { 36296 clearTimeout(timeout); 36297 timeout = null; 36298 } 36299 previous = _now; 36300 result = func.apply(context, args); 36301 if (!timeout) context = args = null; 36302 } else if (!timeout && options.trailing !== false) { 36303 timeout = setTimeout(later, remaining); 36304 } 36305 return result; 36306 }; 36307 throttled.cancel = function () { 36308 clearTimeout(timeout); 36309 previous = 0; 36310 timeout = context = args = null; 36311 }; 36312 return throttled; 36313} 36314 36315// Returns a function, that, as long as it continues to be invoked, will not 36316// be triggered. The function will be called after it stops being called for 36317// N milliseconds. If `immediate` is passed, trigger the function on the 36318// leading edge, instead of the trailing. 36319function debounce(func, wait, immediate) { 36320 var timeout, result; 36321 var later = function later(context, args) { 36322 timeout = null; 36323 if (args) result = func.apply(context, args); 36324 }; 36325 var debounced = restArguments(function (args) { 36326 if (timeout) clearTimeout(timeout); 36327 if (immediate) { 36328 var callNow = !timeout; 36329 timeout = setTimeout(later, wait); 36330 if (callNow) result = func.apply(this, args); 36331 } else { 36332 timeout = delay(later, wait, this, args); 36333 } 36334 return result; 36335 }); 36336 debounced.cancel = function () { 36337 clearTimeout(timeout); 36338 timeout = null; 36339 }; 36340 return debounced; 36341} 36342 36343// Returns the first function passed as an argument to the second, 36344// allowing you to adjust arguments, run code before and after, and 36345// conditionally execute the original function. 36346function wrap(func, wrapper) { 36347 return partial(wrapper, func); 36348} 36349 36350// Returns a negated version of the passed-in predicate. 36351function negate(predicate) { 36352 return function () { 36353 return !predicate.apply(this, arguments); 36354 }; 36355} 36356 36357// Returns a function that is the composition of a list of functions, each 36358// consuming the return value of the function that follows. 36359function compose() { 36360 var args = arguments; 36361 var start = args.length - 1; 36362 return function () { 36363 var i = start; 36364 var result = args[start].apply(this, arguments); 36365 while (i--) { 36366 result = args[i].call(this, result); 36367 } 36368 return result; 36369 }; 36370} 36371 36372// Returns a function that will only be executed on and after the Nth call. 36373function after(times, func) { 36374 return function () { 36375 if (--times < 1) { 36376 return func.apply(this, arguments); 36377 } 36378 }; 36379} 36380 36381// Returns a function that will only be executed up to (but not including) the Nth call. 36382function before(times, func) { 36383 var memo; 36384 return function () { 36385 if (--times > 0) { 36386 memo = func.apply(this, arguments); 36387 } 36388 if (times <= 1) func = null; 36389 return memo; 36390 }; 36391} 36392 36393// Returns a function that will be executed at most one time, no matter how 36394// often you call it. Useful for lazy initialization. 36395var once = partial(before, 2); 36396 36397// Object Functions 36398// ---------------- 36399 36400// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. 36401var hasEnumBug = !{ 36402 toString: null 36403}.propertyIsEnumerable('toString'); 36404var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; 36405function collectNonEnumProps(obj, _keys) { 36406 var nonEnumIdx = nonEnumerableProps.length; 36407 var constructor = obj.constructor; 36408 var proto = isFunction(constructor) && constructor.prototype || ObjProto; 36409 36410 // Constructor is a special case. 36411 var prop = 'constructor'; 36412 if (_has(obj, prop) && !contains(_keys, prop)) _keys.push(prop); 36413 while (nonEnumIdx--) { 36414 prop = nonEnumerableProps[nonEnumIdx]; 36415 if (prop in obj && obj[prop] !== proto[prop] && !contains(_keys, prop)) { 36416 _keys.push(prop); 36417 } 36418 } 36419} 36420 36421// Retrieve the names of an object's own properties. 36422// Delegates to **ECMAScript 5**'s native `Object.keys`. 36423function keys(obj) { 36424 if (!isObject(obj)) return []; 36425 if (nativeKeys) return nativeKeys(obj); 36426 var _keys = []; 36427 for (var key in obj) { 36428 if (_has(obj, key)) _keys.push(key); 36429 } 36430 // Ahem, IE < 9. 36431 if (hasEnumBug) collectNonEnumProps(obj, _keys); 36432 return _keys; 36433} 36434 36435// Retrieve all the property names of an object. 36436function allKeys(obj) { 36437 if (!isObject(obj)) return []; 36438 var _keys = []; 36439 for (var key in obj) { 36440 _keys.push(key); 36441 } 36442 // Ahem, IE < 9. 36443 if (hasEnumBug) collectNonEnumProps(obj, _keys); 36444 return _keys; 36445} 36446 36447// Retrieve the values of an object's properties. 36448function values(obj) { 36449 var _keys = keys(obj); 36450 var length = _keys.length; 36451 var values = Array(length); 36452 for (var i = 0; i < length; i++) { 36453 values[i] = obj[_keys[i]]; 36454 } 36455 return values; 36456} 36457 36458// Returns the results of applying the iteratee to each element of the object. 36459// In contrast to map it returns an object. 36460function mapObject(obj, iteratee, context) { 36461 iteratee = cb(iteratee, context); 36462 var _keys = keys(obj), 36463 length = _keys.length, 36464 results = {}; 36465 for (var index = 0; index < length; index++) { 36466 var currentKey = _keys[index]; 36467 results[currentKey] = iteratee(obj[currentKey], currentKey, obj); 36468 } 36469 return results; 36470} 36471 36472// Convert an object into a list of `[key, value]` pairs. 36473// The opposite of object. 36474function pairs(obj) { 36475 var _keys = keys(obj); 36476 var length = _keys.length; 36477 var pairs = Array(length); 36478 for (var i = 0; i < length; i++) { 36479 pairs[i] = [_keys[i], obj[_keys[i]]]; 36480 } 36481 return pairs; 36482} 36483 36484// Invert the keys and values of an object. The values must be serializable. 36485function invert(obj) { 36486 var result = {}; 36487 var _keys = keys(obj); 36488 for (var i = 0, length = _keys.length; i < length; i++) { 36489 result[obj[_keys[i]]] = _keys[i]; 36490 } 36491 return result; 36492} 36493 36494// Return a sorted list of the function names available on the object. 36495function functions(obj) { 36496 var names = []; 36497 for (var key in obj) { 36498 if (isFunction(obj[key])) names.push(key); 36499 } 36500 return names.sort(); 36501} 36502 36503 36504// An internal function for creating assigner functions. 36505function createAssigner(keysFunc, defaults) { 36506 return function (obj) { 36507 var length = arguments.length; 36508 if (defaults) obj = Object(obj); 36509 if (length < 2 || obj == null) return obj; 36510 for (var index = 1; index < length; index++) { 36511 var source = arguments[index], 36512 _keys = keysFunc(source), 36513 l = _keys.length; 36514 for (var i = 0; i < l; i++) { 36515 var key = _keys[i]; 36516 if (!defaults || obj[key] === void 0) obj[key] = source[key]; 36517 } 36518 } 36519 return obj; 36520 }; 36521} 36522 36523// Extend a given object with all the properties in passed-in object(s). 36524var extend = createAssigner(allKeys); 36525 36526// Assigns a given object with all the own properties in the passed-in object(s). 36527// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) 36528var extendOwn = createAssigner(keys); 36529 36530 36531// Returns the first key on an object that passes a predicate test. 36532function findKey(obj, predicate, context) { 36533 predicate = cb(predicate, context); 36534 var _keys = keys(obj), 36535 key; 36536 for (var i = 0, length = _keys.length; i < length; i++) { 36537 key = _keys[i]; 36538 if (predicate(obj[key], key, obj)) return key; 36539 } 36540} 36541 36542// Internal pick helper function to determine if `obj` has key `key`. 36543function keyInObj(value, key, obj) { 36544 return key in obj; 36545} 36546 36547// Return a copy of the object only containing the whitelisted properties. 36548var pick = restArguments(function (obj, _keys) { 36549 var result = {}, 36550 iteratee = _keys[0]; 36551 if (obj == null) return result; 36552 if (isFunction(iteratee)) { 36553 if (_keys.length > 1) iteratee = optimizeCb(iteratee, _keys[1]); 36554 _keys = allKeys(obj); 36555 } else { 36556 iteratee = keyInObj; 36557 _keys = _flatten(_keys, false, false); 36558 obj = Object(obj); 36559 } 36560 for (var i = 0, length = _keys.length; i < length; i++) { 36561 var key = _keys[i]; 36562 var value = obj[key]; 36563 if (iteratee(value, key, obj)) result[key] = value; 36564 } 36565 return result; 36566}); 36567 36568// Return a copy of the object without the blacklisted properties. 36569var omit = restArguments(function (obj, _keys) { 36570 var iteratee = _keys[0], 36571 context; 36572 if (isFunction(iteratee)) { 36573 iteratee = negate(iteratee); 36574 if (_keys.length > 1) context = _keys[1]; 36575 } else { 36576 _keys = map(_flatten(_keys, false, false), String); 36577 iteratee = function iteratee(value, key) { 36578 return !contains(_keys, key); 36579 }; 36580 } 36581 return pick(obj, iteratee, context); 36582}); 36583 36584// Fill in a given object with default properties. 36585var defaults = createAssigner(allKeys, true); 36586 36587// Creates an object that inherits from the given prototype object. 36588// If additional properties are provided then they will be added to the 36589// created object. 36590function create(prototype, props) { 36591 var result = baseCreate(prototype); 36592 if (props) extendOwn(result, props); 36593 return result; 36594} 36595 36596// Create a (shallow-cloned) duplicate of an object. 36597function clone(obj) { 36598 if (!isObject(obj)) return obj; 36599 return isArray(obj) ? obj.slice() : extend({}, obj); 36600} 36601 36602// Invokes interceptor with the obj, and then returns obj. 36603// The primary purpose of this method is to "tap into" a method chain, in 36604// order to perform operations on intermediate results within the chain. 36605function tap(obj, interceptor) { 36606 interceptor(obj); 36607 return obj; 36608} 36609 36610// Returns whether an object has a given set of `key:value` pairs. 36611function isMatch(object, attrs) { 36612 var _keys = keys(attrs), 36613 length = _keys.length; 36614 if (object == null) return !length; 36615 var obj = Object(object); 36616 for (var i = 0; i < length; i++) { 36617 var key = _keys[i]; 36618 if (attrs[key] !== obj[key] || !(key in obj)) return false; 36619 } 36620 return true; 36621} 36622 36623// Internal recursive comparison function for `isEqual`. 36624function eq(a, b, aStack, bStack) { 36625 // Identical objects are equal. `0 === -0`, but they aren't identical. 36626 // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). 36627 if (a === b) return a !== 0 || 1 / a === 1 / b; 36628 // `null` or `undefined` only equal to itself (strict comparison). 36629 if (a == null || b == null) return false; 36630 // `NaN`s are equivalent, but non-reflexive. 36631 if (a !== a) return b !== b; 36632 // Exhaust primitive checks 36633 var type = _typeof(a); 36634 if (type !== 'function' && type !== 'object' && _typeof(b) != 'object') return false; 36635 return deepEq(a, b, aStack, bStack); 36636} 36637 36638// Internal recursive comparison function for `isEqual`. 36639function deepEq(a, b, aStack, bStack) { 36640 // Unwrap any wrapped objects. 36641 if (a instanceof _) a = a._wrapped; 36642 if (b instanceof _) b = b._wrapped; 36643 // Compare `[[Class]]` names. 36644 var className = toString.call(a); 36645 if (className !== toString.call(b)) return false; 36646 switch (className) { 36647 // Strings, numbers, regular expressions, dates, and booleans are compared by value. 36648 case '[object RegExp]': 36649 // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') 36650 case '[object String]': 36651 // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is 36652 // equivalent to `new String("5")`. 36653 return '' + a === '' + b; 36654 case '[object Number]': 36655 // `NaN`s are equivalent, but non-reflexive. 36656 // Object(NaN) is equivalent to NaN. 36657 if (+a !== +a) return +b !== +b; 36658 // An `egal` comparison is performed for other numeric values. 36659 return +a === 0 ? 1 / +a === 1 / b : +a === +b; 36660 case '[object Date]': 36661 case '[object Boolean]': 36662 // Coerce dates and booleans to numeric primitive values. Dates are compared by their 36663 // millisecond representations. Note that invalid dates with millisecond representations 36664 // of `NaN` are not equivalent. 36665 return +a === +b; 36666 case '[object Symbol]': 36667 return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); 36668 } 36669 var areArrays = className === '[object Array]'; 36670 if (!areArrays) { 36671 if (_typeof(a) != 'object' || _typeof(b) != 'object') return false; 36672 36673 // Objects with different constructors are not equivalent, but `Object`s or `Array`s 36674 // from different frames are. 36675 var aCtor = a.constructor, 36676 bCtor = b.constructor; 36677 if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor && isFunction(bCtor) && bCtor instanceof bCtor) && 'constructor' in a && 'constructor' in b) { 36678 return false; 36679 } 36680 } 36681 // Assume equality for cyclic structures. The algorithm for detecting cyclic 36682 // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. 36683 36684 // Initializing stack of traversed objects. 36685 // It's done here since we only need them for objects and arrays comparison. 36686 aStack = aStack || []; 36687 bStack = bStack || []; 36688 var length = aStack.length; 36689 while (length--) { 36690 // Linear search. Performance is inversely proportional to the number of 36691 // unique nested structures. 36692 if (aStack[length] === a) return bStack[length] === b; 36693 } 36694 36695 // Add the first object to the stack of traversed objects. 36696 aStack.push(a); 36697 bStack.push(b); 36698 36699 // Recursively compare objects and arrays. 36700 if (areArrays) { 36701 // Compare array lengths to determine if a deep comparison is necessary. 36702 length = a.length; 36703 if (length !== b.length) return false; 36704 // Deep compare the contents, ignoring non-numeric properties. 36705 while (length--) { 36706 if (!eq(a[length], b[length], aStack, bStack)) return false; 36707 } 36708 } else { 36709 // Deep compare objects. 36710 var _keys = keys(a), 36711 key; 36712 length = _keys.length; 36713 // Ensure that both objects contain the same number of properties before comparing deep equality. 36714 if (keys(b).length !== length) return false; 36715 while (length--) { 36716 // Deep compare each member 36717 key = _keys[length]; 36718 if (!(_has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; 36719 } 36720 } 36721 // Remove the first object from the stack of traversed objects. 36722 aStack.pop(); 36723 bStack.pop(); 36724 return true; 36725} 36726 36727// Perform a deep comparison to check if two objects are equal. 36728function isEqual(a, b) { 36729 return eq(a, b); 36730} 36731 36732// Is a given array, string, or object empty? 36733// An "empty" object has no enumerable own-properties. 36734function isEmpty(obj) { 36735 if (obj == null) return true; 36736 if (isArrayLike(obj) && (isArray(obj) || isString(obj) || isArguments(obj))) return obj.length === 0; 36737 return keys(obj).length === 0; 36738} 36739 36740// Is a given value a DOM element? 36741function isElement(obj) { 36742 return !!(obj && obj.nodeType === 1); 36743} 36744 36745// Internal function for creating a toString-based type tester. 36746function tagTester(name) { 36747 return function (obj) { 36748 return toString.call(obj) === '[object ' + name + ']'; 36749 }; 36750} 36751 36752// Is a given value an array? 36753// Delegates to ECMA5's native Array.isArray 36754var isArray = nativeIsArray || tagTester('Array'); 36755 36756// Is a given variable an object? 36757function isObject(obj) { 36758 var type = _typeof(obj); 36759 return type === 'function' || type === 'object' && !!obj; 36760} 36761 36762// Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError, isMap, isWeakMap, isSet, isWeakSet. 36763var isArguments = tagTester('Arguments'); 36764var isFunction = tagTester('Function'); 36765var isString = tagTester('String'); 36766var isNumber = tagTester('Number'); 36767var isDate = tagTester('Date'); 36768var isRegExp = tagTester('RegExp'); 36769var isError = tagTester('Error'); 36770var isSymbol = tagTester('Symbol'); 36771var isMap = tagTester('Map'); 36772var isWeakMap = tagTester('WeakMap'); 36773var isSet = tagTester('Set'); 36774var isWeakSet = tagTester('WeakSet'); 36775 36776// Define a fallback version of the method in browsers (ahem, IE < 9), where 36777// there isn't any inspectable "Arguments" type. 36778(function () { 36779 if (!isArguments(arguments)) { 36780 isArguments = function isArguments(obj) { 36781 return _has(obj, 'callee'); 36782 }; 36783 } 36784})(); 36785 36786// Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8, 36787// IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). 36788var nodelist = root.document && root.document.childNodes; 36789if ( true && (typeof Int8Array === "undefined" ? "undefined" : _typeof(Int8Array)) != 'object' && typeof nodelist != 'function') { 36790 isFunction = function isFunction(obj) { 36791 return typeof obj == 'function' || false; 36792 }; 36793} 36794 36795// Is a given object a finite number? 36796function isFinite(obj) { 36797 return !isSymbol(obj) && _isFinite(obj) && !_isNaN(parseFloat(obj)); 36798} 36799 36800// Is the given value `NaN`? 36801function isNaN(obj) { 36802 return isNumber(obj) && _isNaN(obj); 36803} 36804 36805// Is a given value a boolean? 36806function isBoolean(obj) { 36807 return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; 36808} 36809 36810// Is a given value equal to null? 36811function isNull(obj) { 36812 return obj === null; 36813} 36814 36815// Is a given variable undefined? 36816function isUndefined(obj) { 36817 return obj === void 0; 36818} 36819 36820// Shortcut function for checking if an object has a given property directly 36821// on itself (in other words, not on a prototype). 36822function has(obj, path) { 36823 if (!isArray(path)) { 36824 return _has(obj, path); 36825 } 36826 var length = path.length; 36827 for (var i = 0; i < length; i++) { 36828 var key = path[i]; 36829 if (obj == null || !hasOwnProperty.call(obj, key)) { 36830 return false; 36831 } 36832 obj = obj[key]; 36833 } 36834 return !!length; 36835} 36836 36837// Utility Functions 36838// ----------------- 36839 36840// Keep the identity function around for default iteratees. 36841function identity(value) { 36842 return value; 36843} 36844 36845// Predicate-generating functions. Often useful outside of Underscore. 36846function constant(value) { 36847 return function () { 36848 return value; 36849 }; 36850} 36851function noop() {} 36852 36853// Creates a function that, when passed an object, will traverse that objectâs 36854// properties down the given `path`, specified as an array of keys or indexes. 36855function property(path) { 36856 if (!isArray(path)) { 36857 return shallowProperty(path); 36858 } 36859 return function (obj) { 36860 return deepGet(obj, path); 36861 }; 36862} 36863 36864// Generates a function for a given object that returns a given property. 36865function propertyOf(obj) { 36866 if (obj == null) { 36867 return function () {}; 36868 } 36869 return function (path) { 36870 return !isArray(path) ? obj[path] : deepGet(obj, path); 36871 }; 36872} 36873 36874// Returns a predicate for checking whether an object has a given set of 36875// `key:value` pairs. 36876function matcher(attrs) { 36877 attrs = extendOwn({}, attrs); 36878 return function (obj) { 36879 return isMatch(obj, attrs); 36880 }; 36881} 36882 36883 36884// Run a function **n** times. 36885function times(n, iteratee, context) { 36886 var accum = Array(Math.max(0, n)); 36887 iteratee = optimizeCb(iteratee, context, 1); 36888 for (var i = 0; i < n; i++) { 36889 accum[i] = iteratee(i); 36890 } 36891 return accum; 36892} 36893 36894// Return a random integer between min and max (inclusive). 36895function random(min, max) { 36896 if (max == null) { 36897 max = min; 36898 min = 0; 36899 } 36900 return min + Math.floor(Math.random() * (max - min + 1)); 36901} 36902 36903// A (possibly faster) way to get the current timestamp as an integer. 36904var now = Date.now || function () { 36905 return new Date().getTime(); 36906}; 36907 36908// List of HTML entities for escaping. 36909var escapeMap = { 36910 '&': '&', 36911 '<': '<', 36912 '>': '>', 36913 '"': '"', 36914 "'": ''', 36915 '`': '`' 36916}; 36917var unescapeMap = invert(escapeMap); 36918 36919// Functions for escaping and unescaping strings to/from HTML interpolation. 36920function createEscaper(map) { 36921 var escaper = function escaper(match) { 36922 return map[match]; 36923 }; 36924 // Regexes for identifying a key that needs to be escaped. 36925 var source = '(?:' + keys(map).join('|') + ')'; 36926 var testRegexp = RegExp(source); 36927 var replaceRegexp = RegExp(source, 'g'); 36928 return function (string) { 36929 string = string == null ? '' : '' + string; 36930 return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; 36931 }; 36932} 36933var escape = createEscaper(escapeMap); 36934var unescape = createEscaper(unescapeMap); 36935 36936// Traverses the children of `obj` along `path`. If a child is a function, it 36937// is invoked with its parent as context. Returns the value of the final 36938// child, or `fallback` if any child is undefined. 36939function result(obj, path, fallback) { 36940 if (!isArray(path)) path = [path]; 36941 var length = path.length; 36942 if (!length) { 36943 return isFunction(fallback) ? fallback.call(obj) : fallback; 36944 } 36945 for (var i = 0; i < length; i++) { 36946 var prop = obj == null ? void 0 : obj[path[i]]; 36947 if (prop === void 0) { 36948 prop = fallback; 36949 i = length; // Ensure we don't continue iterating. 36950 } 36951 36952 obj = isFunction(prop) ? prop.call(obj) : prop; 36953 } 36954 return obj; 36955} 36956 36957// Generate a unique integer id (unique within the entire client session). 36958// Useful for temporary DOM ids. 36959var idCounter = 0; 36960function uniqueId(prefix) { 36961 var id = ++idCounter + ''; 36962 return prefix ? prefix + id : id; 36963} 36964 36965// By default, Underscore uses ERB-style template delimiters, change the 36966// following template settings to use alternative delimiters. 36967var templateSettings = _.templateSettings = { 36968 evaluate: /<%([\s\S]+?)%>/g, 36969 interpolate: /<%=([\s\S]+?)%>/g, 36970 escape: /<%-([\s\S]+?)%>/g 36971}; 36972 36973// When customizing `templateSettings`, if you don't want to define an 36974// interpolation, evaluation or escaping regex, we need one that is 36975// guaranteed not to match. 36976var noMatch = /(.)^/; 36977 36978// Certain characters need to be escaped so that they can be put into a 36979// string literal. 36980var escapes = { 36981 "'": "'", 36982 '\\': '\\', 36983 '\r': 'r', 36984 '\n': 'n', 36985 "\u2028": 'u2028', 36986 "\u2029": 'u2029' 36987}; 36988var escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g; 36989var escapeChar = function escapeChar(match) { 36990 return '\\' + escapes[match]; 36991}; 36992 36993// JavaScript micro-templating, similar to John Resig's implementation. 36994// Underscore templating handles arbitrary delimiters, preserves whitespace, 36995// and correctly escapes quotes within interpolated code. 36996// NB: `oldSettings` only exists for backwards compatibility. 36997function template(text, settings, oldSettings) { 36998 if (!settings && oldSettings) settings = oldSettings; 36999 settings = defaults({}, settings, _.templateSettings); 37000 37001 // Combine delimiters into one regular expression via alternation. 37002 var matcher = RegExp([(settings.escape || noMatch).source, (settings.interpolate || noMatch).source, (settings.evaluate || noMatch).source].join('|') + '|$', 'g'); 37003 37004 // Compile the template source, escaping string literals appropriately. 37005 var index = 0; 37006 var source = "__p+='"; 37007 text.replace(matcher, function (match, escape, interpolate, evaluate, offset) { 37008 source += text.slice(index, offset).replace(escapeRegExp, escapeChar); 37009 index = offset + match.length; 37010 if (escape) { 37011 source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; 37012 } else if (interpolate) { 37013 source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; 37014 } else if (evaluate) { 37015 source += "';\n" + evaluate + "\n__p+='"; 37016 } 37017 37018 // Adobe VMs need the match returned to produce the correct offset. 37019 return match; 37020 }); 37021 source += "';\n"; 37022 37023 // If a variable is not specified, place data values in local scope. 37024 if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; 37025 source = "var __t,__p='',__j=Array.prototype.join," + "print=function(){__p+=__j.call(arguments,'');};\n" + source + 'return __p;\n'; 37026 var render; 37027 try { 37028 render = new Function(settings.variable || 'obj', '_', source); 37029 } catch (e) { 37030 e.source = source; 37031 throw e; 37032 } 37033 var template = function template(data) { 37034 return render.call(this, data, _); 37035 }; 37036 37037 // Provide the compiled source as a convenience for precompilation. 37038 var argument = settings.variable || 'obj'; 37039 template.source = 'function(' + argument + '){\n' + source + '}'; 37040 return template; 37041} 37042 37043// Add a "chain" function. Start chaining a wrapped Underscore object. 37044function chain(obj) { 37045 var instance = _(obj); 37046 instance._chain = true; 37047 return instance; 37048} 37049 37050// OOP 37051// --------------- 37052// If Underscore is called as a function, it returns a wrapped object that 37053// can be used OO-style. This wrapper holds altered versions of all the 37054// underscore functions. Wrapped objects may be chained. 37055 37056// Helper function to continue chaining intermediate results. 37057function chainResult(instance, obj) { 37058 return instance._chain ? _(obj).chain() : obj; 37059} 37060 37061// Add your own custom functions to the Underscore object. 37062function mixin(obj) { 37063 each(functions(obj), function (name) { 37064 var func = _[name] = obj[name]; 37065 _.prototype[name] = function () { 37066 var args = [this._wrapped]; 37067 push.apply(args, arguments); 37068 return chainResult(this, func.apply(_, args)); 37069 }; 37070 }); 37071 return _; 37072} 37073 37074// Add all mutator Array functions to the wrapper. 37075each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function (name) { 37076 var method = ArrayProto[name]; 37077 _.prototype[name] = function () { 37078 var obj = this._wrapped; 37079 method.apply(obj, arguments); 37080 if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0]; 37081 return chainResult(this, obj); 37082 }; 37083}); 37084 37085// Add all accessor Array functions to the wrapper. 37086each(['concat', 'join', 'slice'], function (name) { 37087 var method = ArrayProto[name]; 37088 _.prototype[name] = function () { 37089 return chainResult(this, method.apply(this._wrapped, arguments)); 37090 }; 37091}); 37092 37093// Extracts the result from a wrapped and chained object. 37094_.prototype.value = function () { 37095 return this._wrapped; 37096}; 37097 37098// Provide unwrapping proxy for some methods used in engine operations 37099// such as arithmetic and JSON stringification. 37100_.prototype.valueOf = _.prototype.toJSON = _.prototype.value; 37101_.prototype.toString = function () { 37102 return String(this._wrapped); 37103}; 37104/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) 37105 37106/***/ }), 37107
vendor: 25,967 bytes, lines 37108-37779
37108/***/ "./node_modules/vanilla-lazyload/dist/lazyload.js": 37109/*!********************************************************!*\ 37110 !*** ./node_modules/vanilla-lazyload/dist/lazyload.js ***! 37111 \********************************************************/ 37112/*! no static exports found */ 37113/***/ (function(module, exports, __webpack_require__) { 37114 37115var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 37116(function (global, factory) { 37117 ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : true ? !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory), 37118 __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? 37119 (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : 37120 __WEBPACK_AMD_DEFINE_FACTORY__), 37121 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : (undefined); 37122})(this, function () { 37123 'use strict'; 37124 37125 function _extends() { 37126 _extends = Object.assign || function (target) { 37127 for (var i = 1; i < arguments.length; i++) { 37128 var source = arguments[i]; 37129 for (var key in source) { 37130 if (Object.prototype.hasOwnProperty.call(source, key)) { 37131 target[key] = source[key]; 37132 } 37133 } 37134 } 37135 return target; 37136 }; 37137 return _extends.apply(this, arguments); 37138 } 37139 var runningOnBrowser = typeof window !== "undefined"; 37140 var isBot = runningOnBrowser && !("onscroll" in window) || typeof navigator !== "undefined" && /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent); 37141 var supportsIntersectionObserver = runningOnBrowser && "IntersectionObserver" in window; 37142 var supportsClassList = runningOnBrowser && "classList" in document.createElement("p"); 37143 var isHiDpi = runningOnBrowser && window.devicePixelRatio > 1; 37144 var defaultSettings = { 37145 elements_selector: "IMG", 37146 container: isBot || runningOnBrowser ? document : null, 37147 threshold: 300, 37148 thresholds: null, 37149 data_src: "src", 37150 data_srcset: "srcset", 37151 data_sizes: "sizes", 37152 data_bg: "bg", 37153 data_bg_hidpi: "bg-hidpi", 37154 data_bg_multi: "bg-multi", 37155 data_bg_multi_hidpi: "bg-multi-hidpi", 37156 data_poster: "poster", 37157 class_applied: "applied", 37158 class_loading: "loading", 37159 class_loaded: "loaded", 37160 class_error: "error", 37161 unobserve_completed: true, 37162 unobserve_entered: false, 37163 cancel_on_exit: false, 37164 callback_enter: null, 37165 callback_exit: null, 37166 callback_applied: null, 37167 callback_loading: null, 37168 callback_loaded: null, 37169 callback_error: null, 37170 callback_finish: null, 37171 callback_cancel: null, 37172 use_native: false 37173 }; 37174 var getExtendedSettings = function getExtendedSettings(customSettings) { 37175 return _extends({}, defaultSettings, customSettings); 37176 }; 37177 37178 /* Creates instance and notifies it through the window element */ 37179 var createInstance = function createInstance(classObj, options) { 37180 var event; 37181 var eventString = "LazyLoad::Initialized"; 37182 var instance = new classObj(options); 37183 try { 37184 // Works in modern browsers 37185 event = new CustomEvent(eventString, { 37186 detail: { 37187 instance: instance 37188 } 37189 }); 37190 } catch (err) { 37191 // Works in Internet Explorer (all versions) 37192 event = document.createEvent("CustomEvent"); 37193 event.initCustomEvent(eventString, false, false, { 37194 instance: instance 37195 }); 37196 } 37197 window.dispatchEvent(event); 37198 }; 37199 /* Auto initialization of one or more instances of lazyload, depending on the 37200 options passed in (plain object or an array) */ 37201 37202 var autoInitialize = function autoInitialize(classObj, options) { 37203 if (!options) { 37204 return; 37205 } 37206 if (!options.length) { 37207 // Plain object 37208 createInstance(classObj, options); 37209 } else { 37210 // Array of objects 37211 for (var i = 0, optionsItem; optionsItem = options[i]; i += 1) { 37212 createInstance(classObj, optionsItem); 37213 } 37214 } 37215 }; 37216 var statusLoading = "loading"; 37217 var statusLoaded = "loaded"; 37218 var statusApplied = "applied"; 37219 var statusError = "error"; 37220 var statusNative = "native"; 37221 var dataPrefix = "data-"; 37222 var statusDataName = "ll-status"; 37223 var getData = function getData(element, attribute) { 37224 return element.getAttribute(dataPrefix + attribute); 37225 }; 37226 var setData = function setData(element, attribute, value) { 37227 var attrName = dataPrefix + attribute; 37228 if (value === null) { 37229 element.removeAttribute(attrName); 37230 return; 37231 } 37232 element.setAttribute(attrName, value); 37233 }; 37234 var getStatus = function getStatus(element) { 37235 return getData(element, statusDataName); 37236 }; 37237 var setStatus = function setStatus(element, status) { 37238 return setData(element, statusDataName, status); 37239 }; 37240 var resetStatus = function resetStatus(element) { 37241 return setStatus(element, null); 37242 }; 37243 var hasEmptyStatus = function hasEmptyStatus(element) { 37244 return getStatus(element) === null; 37245 }; 37246 var hasStatusLoading = function hasStatusLoading(element) { 37247 return getStatus(element) === statusLoading; 37248 }; 37249 var hasStatusError = function hasStatusError(element) { 37250 return getStatus(element) === statusError; 37251 }; 37252 var hasStatusNative = function hasStatusNative(element) { 37253 return getStatus(element) === statusNative; 37254 }; 37255 var hadStartedLoading = function hadStartedLoading(element) { 37256 return !hasEmptyStatus(element); 37257 }; 37258 var safeCallback = function safeCallback(callback, arg1, arg2, arg3) { 37259 if (!callback) { 37260 return; 37261 } 37262 if (arg3 !== undefined) { 37263 callback(arg1, arg2, arg3); 37264 return; 37265 } 37266 if (arg2 !== undefined) { 37267 callback(arg1, arg2); 37268 return; 37269 } 37270 callback(arg1); 37271 }; 37272 var addClass = function addClass(element, className) { 37273 if (supportsClassList) { 37274 element.classList.add(className); 37275 return; 37276 } 37277 element.className += (element.className ? " " : "") + className; 37278 }; 37279 var removeClass = function removeClass(element, className) { 37280 if (supportsClassList) { 37281 element.classList.remove(className); 37282 return; 37283 } 37284 element.className = element.className.replace(new RegExp("(^|\\s+)" + className + "(\\s+|$)"), " ").replace(/^\s+/, "").replace(/\s+$/, ""); 37285 }; 37286 var addTempImage = function addTempImage(element) { 37287 element.llTempImage = document.createElement("IMG"); 37288 }; 37289 var deleteTempImage = function deleteTempImage(element) { 37290 delete element.llTempImage; 37291 }; 37292 var getTempImage = function getTempImage(element) { 37293 return element.llTempImage; 37294 }; 37295 var unobserve = function unobserve(element, instance) { 37296 if (!instance) return; 37297 var observer = instance._observer; 37298 if (!observer) return; 37299 observer.unobserve(element); 37300 }; 37301 var resetObserver = function resetObserver(observer) { 37302 observer.disconnect(); 37303 }; 37304 var unobserveIfRequired = function unobserveIfRequired(element, settings, instance) { 37305 if (settings.unobserve_entered) unobserve(element, instance); 37306 }; 37307 var updateLoadingCount = function updateLoadingCount(instance, delta) { 37308 if (!instance) return; 37309 instance.loadingCount += delta; 37310 }; 37311 var decreaseToLoadCount = function decreaseToLoadCount(instance) { 37312 if (!instance) return; 37313 instance.toLoadCount -= 1; 37314 }; 37315 var setToLoadCount = function setToLoadCount(instance, value) { 37316 if (!instance) return; 37317 instance.toLoadCount = value; 37318 }; 37319 var isSomethingLoading = function isSomethingLoading(instance) { 37320 return instance.loadingCount > 0; 37321 }; 37322 var haveElementsToLoad = function haveElementsToLoad(instance) { 37323 return instance.toLoadCount > 0; 37324 }; 37325 var getSourceTags = function getSourceTags(parentTag) { 37326 var sourceTags = []; 37327 for (var i = 0, childTag; childTag = parentTag.children[i]; i += 1) { 37328 if (childTag.tagName === "SOURCE") { 37329 sourceTags.push(childTag); 37330 } 37331 } 37332 return sourceTags; 37333 }; 37334 var setAttributeIfValue = function setAttributeIfValue(element, attrName, value) { 37335 if (!value) { 37336 return; 37337 } 37338 element.setAttribute(attrName, value); 37339 }; 37340 var resetAttribute = function resetAttribute(element, attrName) { 37341 element.removeAttribute(attrName); 37342 }; 37343 var hasOriginalAttributes = function hasOriginalAttributes(element) { 37344 return !!element.llOriginalAttrs; 37345 }; 37346 var saveOriginalImageAttributes = function saveOriginalImageAttributes(element) { 37347 if (hasOriginalAttributes(element)) { 37348 return; 37349 } 37350 var originalAttributes = {}; 37351 originalAttributes["src"] = element.getAttribute("src"); 37352 originalAttributes["srcset"] = element.getAttribute("srcset"); 37353 originalAttributes["sizes"] = element.getAttribute("sizes"); 37354 element.llOriginalAttrs = originalAttributes; 37355 }; 37356 var restoreOriginalImageAttributes = function restoreOriginalImageAttributes(element) { 37357 if (!hasOriginalAttributes(element)) { 37358 return; 37359 } 37360 var originalAttributes = element.llOriginalAttrs; 37361 setAttributeIfValue(element, "src", originalAttributes["src"]); 37362 setAttributeIfValue(element, "srcset", originalAttributes["srcset"]); 37363 setAttributeIfValue(element, "sizes", originalAttributes["sizes"]); 37364 }; 37365 var setImageAttributes = function setImageAttributes(element, settings) { 37366 setAttributeIfValue(element, "sizes", getData(element, settings.data_sizes)); 37367 setAttributeIfValue(element, "srcset", getData(element, settings.data_srcset)); 37368 setAttributeIfValue(element, "src", getData(element, settings.data_src)); 37369 }; 37370 var resetImageAttributes = function resetImageAttributes(element) { 37371 resetAttribute(element, "src"); 37372 resetAttribute(element, "srcset"); 37373 resetAttribute(element, "sizes"); 37374 }; 37375 var forEachPictureSource = function forEachPictureSource(element, fn) { 37376 var parent = element.parentNode; 37377 if (!parent || parent.tagName !== "PICTURE") { 37378 return; 37379 } 37380 var sourceTags = getSourceTags(parent); 37381 sourceTags.forEach(fn); 37382 }; 37383 var forEachVideoSource = function forEachVideoSource(element, fn) { 37384 var sourceTags = getSourceTags(element); 37385 sourceTags.forEach(fn); 37386 }; 37387 var restoreOriginalAttributesImg = function restoreOriginalAttributesImg(element) { 37388 forEachPictureSource(element, function (sourceTag) { 37389 restoreOriginalImageAttributes(sourceTag); 37390 }); 37391 restoreOriginalImageAttributes(element); 37392 }; 37393 var setSourcesImg = function setSourcesImg(element, settings) { 37394 forEachPictureSource(element, function (sourceTag) { 37395 saveOriginalImageAttributes(sourceTag); 37396 setImageAttributes(sourceTag, settings); 37397 }); 37398 saveOriginalImageAttributes(element); 37399 setImageAttributes(element, settings); 37400 }; 37401 var resetSourcesImg = function resetSourcesImg(element) { 37402 forEachPictureSource(element, function (sourceTag) { 37403 resetImageAttributes(sourceTag); 37404 }); 37405 resetImageAttributes(element); 37406 }; 37407 var setSourcesIframe = function setSourcesIframe(element, settings) { 37408 setAttributeIfValue(element, "src", getData(element, settings.data_src)); 37409 }; 37410 var setSourcesVideo = function setSourcesVideo(element, settings) { 37411 forEachVideoSource(element, function (sourceTag) { 37412 setAttributeIfValue(sourceTag, "src", getData(sourceTag, settings.data_src)); 37413 }); 37414 setAttributeIfValue(element, "poster", getData(element, settings.data_poster)); 37415 setAttributeIfValue(element, "src", getData(element, settings.data_src)); 37416 element.load(); 37417 }; 37418 var setSourcesFunctions = { 37419 IMG: setSourcesImg, 37420 IFRAME: setSourcesIframe, 37421 VIDEO: setSourcesVideo 37422 }; 37423 var setBackground = function setBackground(element, settings, instance) { 37424 var bg1xValue = getData(element, settings.data_bg); 37425 var bgHiDpiValue = getData(element, settings.data_bg_hidpi); 37426 var bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue; 37427 if (!bgDataValue) return; 37428 element.style.backgroundImage = "url(\"".concat(bgDataValue, "\")"); 37429 getTempImage(element).setAttribute("src", bgDataValue); 37430 manageLoading(element, settings, instance); 37431 }; // NOTE: THE TEMP IMAGE TRICK CANNOT BE DONE WITH data-multi-bg 37432 // BECAUSE INSIDE ITS VALUES MUST BE WRAPPED WITH URL() AND ONE OF THEM 37433 // COULD BE A GRADIENT BACKGROUND IMAGE 37434 37435 var setMultiBackground = function setMultiBackground(element, settings, instance) { 37436 var bg1xValue = getData(element, settings.data_bg_multi); 37437 var bgHiDpiValue = getData(element, settings.data_bg_multi_hidpi); 37438 var bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue; 37439 if (!bgDataValue) { 37440 return; 37441 } 37442 element.style.backgroundImage = bgDataValue; 37443 manageApplied(element, settings, instance); 37444 }; 37445 var setSources = function setSources(element, settings) { 37446 var setSourcesFunction = setSourcesFunctions[element.tagName]; 37447 if (!setSourcesFunction) { 37448 return; 37449 } 37450 setSourcesFunction(element, settings); 37451 }; 37452 var manageApplied = function manageApplied(element, settings, instance) { 37453 addClass(element, settings.class_applied); 37454 setStatus(element, statusApplied); 37455 removeDataMultiBackground(element, settings); 37456 if (settings.unobserve_completed) { 37457 // Unobserve now because we can't do it on load 37458 unobserve(element, settings); 37459 } 37460 safeCallback(settings.callback_applied, element, instance); 37461 }; 37462 var manageLoading = function manageLoading(element, settings, instance) { 37463 updateLoadingCount(instance, +1); 37464 addClass(element, settings.class_loading); 37465 setStatus(element, statusLoading); 37466 safeCallback(settings.callback_loading, element, instance); 37467 }; // REMOVE DATA ATTRIBUTES -------------- 37468 37469 var removeDataImg = function removeDataImg(element, settings) { 37470 setData(element, settings.data_src, null); 37471 setData(element, settings.data_srcset, null); 37472 setData(element, settings.data_sizes, null); 37473 forEachPictureSource(element, function (sourceTag) { 37474 setData(sourceTag, settings.data_srcset, null); 37475 setData(sourceTag, settings.data_sizes, null); 37476 }); 37477 }; 37478 var removeDataIframe = function removeDataIframe(element, settings) { 37479 setData(element, settings.data_src, null); 37480 }; 37481 var removeDataVideo = function removeDataVideo(element, settings) { 37482 setData(element, settings.data_src, null); 37483 setData(element, settings.data_poster, null); 37484 forEachVideoSource(element, function (sourceTag) { 37485 setData(sourceTag, settings.data_src, null); 37486 }); 37487 }; 37488 var removeDataFunctions = { 37489 IMG: removeDataImg, 37490 IFRAME: removeDataIframe, 37491 VIDEO: removeDataVideo 37492 }; 37493 var removeDataBackground = function removeDataBackground(element, settings) { 37494 setData(element, settings.data_bg, null); 37495 setData(element, settings.data_bg_hidpi, null); 37496 }; 37497 var removeDataMultiBackground = function removeDataMultiBackground(element, settings) { 37498 setData(element, settings.data_bg_multi, null); 37499 setData(element, settings.data_bg_multi_hidpi, null); 37500 }; 37501 var removeDataAttributes = function removeDataAttributes(element, settings) { 37502 var removeDataFunction = removeDataFunctions[element.tagName]; 37503 if (removeDataFunction) { 37504 removeDataFunction(element, settings); 37505 return; 37506 } 37507 removeDataBackground(element, settings); 37508 }; 37509 var elementsWithLoadEvent = ["IMG", "IFRAME", "VIDEO"]; 37510 var hasLoadEvent = function hasLoadEvent(element) { 37511 return elementsWithLoadEvent.indexOf(element.tagName) > -1; 37512 }; 37513 var checkFinish = function checkFinish(settings, instance) { 37514 if (instance && !isSomethingLoading(instance) && !haveElementsToLoad(instance)) { 37515 safeCallback(settings.callback_finish, instance); 37516 } 37517 }; 37518 var addEventListener = function addEventListener(element, eventName, handler) { 37519 element.addEventListener(eventName, handler); 37520 element.llEvLisnrs[eventName] = handler; 37521 }; 37522 var removeEventListener = function removeEventListener(element, eventName, handler) { 37523 element.removeEventListener(eventName, handler); 37524 }; 37525 var hasEventListeners = function hasEventListeners(element) { 37526 return !!element.llEvLisnrs; 37527 }; 37528 var addEventListeners = function addEventListeners(element, loadHandler, errorHandler) { 37529 if (!hasEventListeners(element)) element.llEvLisnrs = {}; 37530 var loadEventName = element.tagName === "VIDEO" ? "loadeddata" : "load"; 37531 addEventListener(element, loadEventName, loadHandler); 37532 addEventListener(element, "error", errorHandler); 37533 }; 37534 var removeEventListeners = function removeEventListeners(element) { 37535 if (!hasEventListeners(element)) { 37536 return; 37537 } 37538 var eventListeners = element.llEvLisnrs; 37539 for (var eventName in eventListeners) { 37540 var handler = eventListeners[eventName]; 37541 removeEventListener(element, eventName, handler); 37542 } 37543 delete element.llEvLisnrs; 37544 }; 37545 var doneHandler = function doneHandler(element, settings, instance) { 37546 deleteTempImage(element); 37547 updateLoadingCount(instance, -1); 37548 decreaseToLoadCount(instance); 37549 removeClass(element, settings.class_loading); 37550 if (settings.unobserve_completed) { 37551 unobserve(element, instance); 37552 } 37553 }; 37554 var loadHandler = function loadHandler(event, element, settings, instance) { 37555 var goingNative = hasStatusNative(element); 37556 doneHandler(element, settings, instance); 37557 addClass(element, settings.class_loaded); 37558 setStatus(element, statusLoaded); 37559 removeDataAttributes(element, settings); 37560 safeCallback(settings.callback_loaded, element, instance); 37561 if (!goingNative) checkFinish(settings, instance); 37562 }; 37563 var errorHandler = function errorHandler(event, element, settings, instance) { 37564 var goingNative = hasStatusNative(element); 37565 doneHandler(element, settings, instance); 37566 addClass(element, settings.class_error); 37567 setStatus(element, statusError); 37568 safeCallback(settings.callback_error, element, instance); 37569 if (!goingNative) checkFinish(settings, instance); 37570 }; 37571 var addOneShotEventListeners = function addOneShotEventListeners(element, settings, instance) { 37572 var elementToListenTo = getTempImage(element) || element; 37573 if (hasEventListeners(elementToListenTo)) { 37574 // This happens when loading is retried twice 37575 return; 37576 } 37577 var _loadHandler = function _loadHandler(event) { 37578 loadHandler(event, element, settings, instance); 37579 removeEventListeners(elementToListenTo); 37580 }; 37581 var _errorHandler = function _errorHandler(event) { 37582 errorHandler(event, element, settings, instance); 37583 removeEventListeners(elementToListenTo); 37584 }; 37585 addEventListeners(elementToListenTo, _loadHandler, _errorHandler); 37586 }; 37587 var loadBackground = function loadBackground(element, settings, instance) { 37588 addTempImage(element); 37589 addOneShotEventListeners(element, settings, instance); 37590 setBackground(element, settings, instance); 37591 setMultiBackground(element, settings, instance); 37592 }; 37593 var loadRegular = function loadRegular(element, settings, instance) { 37594 addOneShotEventListeners(element, settings, instance); 37595 setSources(element, settings); 37596 manageLoading(element, settings, instance); 37597 }; 37598 var load = function load(element, settings, instance) { 37599 if (hasLoadEvent(element)) { 37600 loadRegular(element, settings, instance); 37601 } else { 37602 loadBackground(element, settings, instance); 37603 } 37604 }; 37605 var loadNative = function loadNative(element, settings, instance) { 37606 addOneShotEventListeners(element, settings, instance); 37607 setSources(element, settings); 37608 removeDataAttributes(element, settings); 37609 setStatus(element, statusNative); 37610 }; 37611 var cancelLoadingIfRequired = function cancelLoadingIfRequired(element, entry, settings, instance) { 37612 if (!settings.cancel_on_exit) return; 37613 if (!hasStatusLoading(element)) return; 37614 if (element.tagName !== "IMG") return; //Works only on images 37615 37616 removeEventListeners(element); 37617 resetSourcesImg(element); 37618 restoreOriginalAttributesImg(element); 37619 removeClass(element, settings.class_loading); 37620 updateLoadingCount(instance, -1); 37621 resetStatus(element); 37622 safeCallback(settings.callback_cancel, element, entry, instance); 37623 }; 37624 var onEnter = function onEnter(element, entry, settings, instance) { 37625 safeCallback(settings.callback_enter, element, entry, instance); 37626 unobserveIfRequired(element, settings, instance); 37627 if (hadStartedLoading(element)) return; //Prevent loading it again 37628 37629 load(element, settings, instance); 37630 }; 37631 var onExit = function onExit(element, entry, settings, instance) { 37632 if (hasEmptyStatus(element)) return; //Ignore the first pass, at landing 37633 37634 cancelLoadingIfRequired(element, entry, settings, instance); 37635 safeCallback(settings.callback_exit, element, entry, instance); 37636 }; 37637 var tagsWithNativeLazy = ["IMG", "IFRAME"]; 37638 var shouldUseNative = function shouldUseNative(settings) { 37639 return settings.use_native && "loading" in HTMLImageElement.prototype; 37640 }; 37641 var loadAllNative = function loadAllNative(elements, settings, instance) { 37642 elements.forEach(function (element) { 37643 if (tagsWithNativeLazy.indexOf(element.tagName) === -1) { 37644 return; 37645 } 37646 element.setAttribute("loading", "lazy"); //TODO: Move inside the loadNative method 37647 37648 loadNative(element, settings, instance); 37649 }); 37650 setToLoadCount(instance, 0); 37651 }; 37652 var isIntersecting = function isIntersecting(entry) { 37653 return entry.isIntersecting || entry.intersectionRatio > 0; 37654 }; 37655 var getObserverSettings = function getObserverSettings(settings) { 37656 return { 37657 root: settings.container === document ? null : settings.container, 37658 rootMargin: settings.thresholds || settings.threshold + "px" 37659 }; 37660 }; 37661 var intersectionHandler = function intersectionHandler(entries, settings, instance) { 37662 entries.forEach(function (entry) { 37663 return isIntersecting(entry) ? onEnter(entry.target, entry, settings, instance) : onExit(entry.target, entry, settings, instance); 37664 }); 37665 }; 37666 var observeElements = function observeElements(observer, elements) { 37667 elements.forEach(function (element) { 37668 observer.observe(element); 37669 }); 37670 }; 37671 var updateObserver = function updateObserver(observer, elementsToObserve) { 37672 resetObserver(observer); 37673 observeElements(observer, elementsToObserve); 37674 }; 37675 var setObserver = function setObserver(settings, instance) { 37676 if (!supportsIntersectionObserver || shouldUseNative(settings)) { 37677 return; 37678 } 37679 instance._observer = new IntersectionObserver(function (entries) { 37680 intersectionHandler(entries, settings, instance); 37681 }, getObserverSettings(settings)); 37682 }; 37683 var toArray = function toArray(nodeSet) { 37684 return Array.prototype.slice.call(nodeSet); 37685 }; 37686 var queryElements = function queryElements(settings) { 37687 return settings.container.querySelectorAll(settings.elements_selector); 37688 }; 37689 var excludeManagedElements = function excludeManagedElements(elements) { 37690 return toArray(elements).filter(hasEmptyStatus); 37691 }; 37692 var hasError = function hasError(element) { 37693 return hasStatusError(element); 37694 }; 37695 var filterErrorElements = function filterErrorElements(elements) { 37696 return toArray(elements).filter(hasError); 37697 }; 37698 var getElementsToLoad = function getElementsToLoad(elements, settings) { 37699 return excludeManagedElements(elements || queryElements(settings)); 37700 }; 37701 var retryLazyLoad = function retryLazyLoad(settings, instance) { 37702 var errorElements = filterErrorElements(queryElements(settings)); 37703 errorElements.forEach(function (element) { 37704 removeClass(element, settings.class_error); 37705 resetStatus(element); 37706 }); 37707 instance.update(); 37708 }; 37709 var setOnlineCheck = function setOnlineCheck(settings, instance) { 37710 if (!runningOnBrowser) { 37711 return; 37712 } 37713 window.addEventListener("online", function () { 37714 retryLazyLoad(settings, instance); 37715 }); 37716 }; 37717 var LazyLoad = function LazyLoad(customSettings, elements) { 37718 var settings = getExtendedSettings(customSettings); 37719 this._settings = settings; 37720 this.loadingCount = 0; 37721 setObserver(settings, this); 37722 setOnlineCheck(settings, this); 37723 this.update(elements); 37724 }; 37725 LazyLoad.prototype = { 37726 update: function update(givenNodeset) { 37727 var settings = this._settings; 37728 var elementsToLoad = getElementsToLoad(givenNodeset, settings); 37729 setToLoadCount(this, elementsToLoad.length); 37730 if (isBot || !supportsIntersectionObserver) { 37731 this.loadAll(elementsToLoad); 37732 return; 37733 } 37734 if (shouldUseNative(settings)) { 37735 loadAllNative(elementsToLoad, settings, this); 37736 return; 37737 } 37738 updateObserver(this._observer, elementsToLoad); 37739 }, 37740 destroy: function destroy() { 37741 // Observer 37742 if (this._observer) { 37743 this._observer.disconnect(); 37744 } // Clean custom attributes on elements 37745 37746 queryElements(this._settings).forEach(function (element) { 37747 delete element.llOriginalAttrs; 37748 }); // Delete all internal props 37749 37750 delete this._observer; 37751 delete this._settings; 37752 delete this.loadingCount; 37753 delete this.toLoadCount; 37754 }, 37755 loadAll: function loadAll(elements) { 37756 var _this = this; 37757 var settings = this._settings; 37758 var elementsToLoad = getElementsToLoad(elements, settings); 37759 elementsToLoad.forEach(function (element) { 37760 load(element, settings, _this); 37761 }); 37762 } 37763 }; 37764 LazyLoad.load = function (element, customSettings) { 37765 var settings = getExtendedSettings(customSettings); 37766 load(element, settings); 37767 }; 37768 LazyLoad.resetStatus = function (element) { 37769 resetStatus(element); 37770 }; // Automatic instances creation if required (useful for async script loading) 37771 37772 if (runningOnBrowser) { 37773 autoInitialize(LazyLoad, window.lazyLoadOptions); 37774 } 37775 return LazyLoad; 37776}); 37777 37778/***/ }), 37779
vendor: 1,110 bytes, lines 37780-37808
37780/***/ "./node_modules/webpack/buildin/global.js": 37781/*!***********************************!*\ 37782 !*** (webpack)/buildin/global.js ***! 37783 \***********************************/ 37784/*! no static exports found */ 37785/***/ (function(module, exports) { 37786 37787function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 37788var g; 37789 37790// This works in non-strict mode 37791g = function () { 37792 return this; 37793}(); 37794try { 37795 // This works if eval is allowed (see CSP) 37796 g = g || new Function("return this")(); 37797} catch (e) { 37798 // This works if the window reference is available 37799 if ((typeof window === "undefined" ? "undefined" : _typeof(window)) === "object") g = window; 37800} 37801 37802// g can still be undefined, but nothing to do about it... 37803// We return undefined, instead of nothing here, so it's 37804// easier to handle this case. if(!global) { ...} 37805 37806module.exports = g; 37807 37808/***/ })
37808, 37809 37810/***/ "jquery": 37811/*!*************************!*\ 37812 !*** external "jQuery" ***! 37813 \*************************/ 37814/*! no static exports found */ 37815/***/ (function(module, exports) { 37816 37817(function() { module.exports = window["jQuery"]; }()); 37818 37819/***/ }) 37820 37821/******/ }); 37822//# sourceMappingURL=main.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.