{"version":3,"file":"js/application-bcced2e5192099352cf3.js","mappings":"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","sources":["webpack://app/./app/javascript/components/tooltip.js","webpack://app/./app/javascript/helpers/index.js","webpack://app/./app/javascript/lib/honeycrisp.js","webpack://app/./app/javascript/channels/consumer.js","webpack://app/./app/javascript/channels/client_channel.js","webpack://app/./app/javascript/lib/nested_attributes/index.js","webpack://app/./app/javascript/lib/nested_attributes/nested_attributes.js","webpack://app/./app/javascript/lib/dynamic_take_action_changes.js","webpack://app/./app/javascript/lib/table_sort.js","webpack://app/./app/javascript/lib/metrics_table_sort.js","webpack://app/./app/javascript/lib/document_submitting_indicator.js","webpack://app/./app/javascript/lib/state_routings.js","webpack://app/./app/javascript/lib/tagging/callbacks.js","webpack://app/./app/javascript/lib/bulk_action.js","webpack://app/./app/javascript/vendor/IRS_fingerprint2_2_1_2.js","webpack://app/./app/javascript/lib/efile_security_information.js","webpack://app/./app/javascript/vendor/sha1.js","webpack://app/./app/javascript/lib/text_message_length_limiter.js","webpack://app/./app/javascript/lib/mixpanel_event_tracking.js","webpack://app/./app/javascript/lib/intercom_behavior.js","webpack://app/./app/javascript/listeners/index.js","webpack://app/./app/javascript/components/ClientMenuComponent.js","webpack://app/./app/javascript/components/WarningForSelectComponent.js","webpack://app/./app/javascript/lib/fetch_efile_state_counts.js","webpack://app/./app/javascript/lib/fetch_statefile_efile_state_counts.js","webpack://app/./app/javascript/lib/tagging/index.js","webpack://app/./app/javascript/lib/action_text_target_blank.js","webpack://app/./app/javascript/lib/tin_type_selector.js","webpack://app/./app/javascript/lib/service_comparison_component.js","webpack://app/./app/javascript/packs/application.js","webpack://app/./app/javascript/vendor/navigator.sendbeacon.min.js"],"sourcesContent":["// Tooltips\n\n/**\n * Taken from USWDS\n * https://github.com/uswds/uswds/blob/develop/src/js/components/tooltip.js\n *\n * Docs at https://designsystem.digital.gov/components/tooltip/\n */\n\n// There's a lot of \"magic numbers\" here that relate to style.\n\n// Variables\nconst TOOLTIP = `.tooltip`;\nconst TOOLTIP_TRIGGER_CLASS = `tooltip__trigger`;\nconst TOOLTIP_CLASS = `tooltip`;\nconst TOOLTIP_BODY_CLASS = `tooltip__body`;\nconst SET_CLASS = \"is-set\";\nconst VISIBLE_CLASS = \"is-visible\";\nconst TRIANGLE_SIZE = 5;\nconst SPACER = 2;\nconst ADJUST_WIDTH_CLASS = `tooltip__body--wrap`;\n\n/**\n * @name isElement\n * @desc returns whether or not the given argument is a DOM element.\n * @param {any} value\n * @return {boolean}\n */\nconst isElement = (value) => value && typeof value === \"object\" && value.nodeType === 1;\n\n// Utility for selecting elements the way USWDS wants.\n/**\n * @name select\n * @desc selects elements from the DOM by class selector or ID selector.\n * @param {string} selector - The selector to traverse the DOM with.\n * @param {Document|HTMLElement?} context - The context to traverse the DOM\n * in. If not provided, it defaults to the document.\n * @return {HTMLElement[]} - An array of DOM nodes or an empty array.\n */\nconst select = (selector, context) => {\n if (typeof selector !== \"string\") {\n return [];\n }\n\n if (!context || !isElement(context)) {\n context = window.document; // eslint-disable-line no-param-reassign\n }\n\n const selection = context.querySelectorAll(selector);\n return Array.prototype.slice.call(selection);\n};\n\n/**\n * Add one or more listeners to an element\n * @param {DOMElement} element - DOM element to add listeners to\n * @param {events} eventNames - space separated list of event names, e.g. 'click change'\n * @param {Function} listener - function to attach for each event as a listener\n */\nconst addListenerMulti = (element, eventNames, listener) => {\n const events = eventNames.split(\" \");\n for (let i = 0, iLen = events.length; i < iLen; i += 1) {\n element.addEventListener(events[i], listener, false);\n }\n};\n\n/**\n * Shows the tooltip\n * @param {HTMLElement} tooltipTrigger - the element that initializes the tooltip\n */\nconst showToolTip = (tooltipBody, tooltipTrigger, position, wrapper) => {\n tooltipBody.setAttribute(\"aria-hidden\", \"false\");\n\n // This sets up the tooltip body. The opacity is 0, but\n // we can begin running the calculations below.\n tooltipBody.classList.add(SET_CLASS);\n\n // Calculate sizing and adjustments for positioning\n const tooltipWidth = tooltipTrigger.offsetWidth;\n const tooltipHeight = tooltipTrigger.offsetHeight;\n const offsetForTopMargin = parseInt(\n window.getComputedStyle(tooltipTrigger).getPropertyValue(\"margin-top\"),\n 10\n );\n const offsetForBottomMargin = parseInt(\n window.getComputedStyle(tooltipTrigger).getPropertyValue(\"margin-bottom\"),\n 10\n );\n const offsetForTopPadding = parseInt(\n window.getComputedStyle(wrapper).getPropertyValue(\"padding-top\"),\n 10\n );\n const offsetForBottomPadding = parseInt(\n window.getComputedStyle(wrapper).getPropertyValue(\"padding-bottom\"),\n 10\n );\n const offsetForTooltipBodyHeight = parseInt(\n window.getComputedStyle(tooltipBody).getPropertyValue(\"height\"),\n 10\n );\n const leftOffset = tooltipTrigger.offsetLeft;\n const toolTipBodyWidth = tooltipBody.offsetWidth;\n const adjustHorizontalCenter = tooltipWidth / 2 + leftOffset;\n const adjustToEdgeX = tooltipWidth + TRIANGLE_SIZE + SPACER;\n const adjustToEdgeY = tooltipHeight + TRIANGLE_SIZE + SPACER;\n\n /**\n * Position the tooltip body when the trigger is hovered\n * Removes old positioning classnames and reapplies. This allows\n * positioning to change in case the user resizes browser or DOM manipulation\n * causes tooltip to get clipped from viewport\n *\n * @param {string} setPos - can be \"top\", \"bottom\", \"right\", \"left\"\n */\n const setPositionClass = (setPos) => {\n tooltipBody.classList.remove(`${TOOLTIP_BODY_CLASS}--top`);\n tooltipBody.classList.remove(`${TOOLTIP_BODY_CLASS}--bottom`);\n tooltipBody.classList.remove(`${TOOLTIP_BODY_CLASS}--right`);\n tooltipBody.classList.remove(`${TOOLTIP_BODY_CLASS}--left`);\n tooltipBody.classList.add(`${TOOLTIP_BODY_CLASS}--${setPos}`);\n };\n\n /**\n * Positions tooltip at the top\n * We check if the element is in the viewport so we know whether or not we\n * need to constrain the width\n * @param {HTMLElement} e - this is the tooltip body\n */\n const positionTop = (e) => {\n setPositionClass(\"top\");\n e.style.marginLeft = `${adjustHorizontalCenter}px`;\n e.style.marginBottom = `${\n adjustToEdgeY + offsetForBottomMargin + offsetForBottomPadding\n }px`;\n };\n\n /**\n * Positions tooltip at the bottom\n * We check if the element is in the viewport so we know whether or not we\n * need to constrain the width\n * @param {HTMLElement} e - this is the tooltip body\n */\n const positionBottom = (e) => {\n setPositionClass(\"bottom\");\n e.style.marginLeft = `${adjustHorizontalCenter}px`;\n e.style.marginTop = `${\n adjustToEdgeY + offsetForTopMargin + offsetForTopPadding\n }px`;\n };\n\n /**\n * Positions tooltip at the right\n * @param {HTMLElement} e - this is the tooltip body\n */\n const positionRight = (e) => {\n setPositionClass(\"right\");\n e.style.marginBottom = \"0\";\n e.style.marginLeft = `${adjustToEdgeX + leftOffset}px`;\n e.style.bottom = `${\n (tooltipHeight - offsetForTooltipBodyHeight) / 2 +\n offsetForBottomMargin +\n offsetForBottomPadding\n }px`;\n return false;\n };\n\n /**\n * Positions tooltip at the right\n * @param {HTMLElement} e - this is the tooltip body\n */\n const positionLeft = (e) => {\n setPositionClass(\"left\");\n e.style.marginBottom = \"0\";\n if (leftOffset > toolTipBodyWidth) {\n e.style.marginLeft = `${\n leftOffset - toolTipBodyWidth - (TRIANGLE_SIZE + SPACER)\n }px`;\n } else {\n e.style.marginLeft = `-${\n toolTipBodyWidth - leftOffset + (TRIANGLE_SIZE + SPACER)\n }px`;\n }\n e.style.bottom = `${\n (tooltipHeight - offsetForTooltipBodyHeight) / 2 +\n offsetForBottomMargin +\n offsetForBottomPadding\n }px`;\n };\n\n /**\n * We try to set the position based on the\n * original intention, but make adjustments\n * if the element is clipped out of the viewport\n */\n switch (position) {\n case \"top\":\n positionTop(tooltipBody);\n break;\n case \"bottom\":\n positionBottom(tooltipBody);\n break;\n case \"right\":\n positionRight(tooltipBody);\n break;\n case \"left\":\n positionLeft(tooltipBody);\n break;\n\n default:\n // skip default case\n break;\n }\n\n /**\n * Actually show the tooltip. The VISIBLE_CLASS\n * will change the opacity to 1\n */\n setTimeout(function makeVisible() {\n tooltipBody.classList.add(VISIBLE_CLASS);\n }, 20);\n};\n\n/**\n * Removes all the properties to show and position the tooltip,\n * and resets the tooltip position to the original intention\n * in case the window is resized or the element is moved through\n * DOM manipulation.\n * @param {HTMLElement} tooltipBody - The body of the tooltip\n */\nconst hideToolTip = (tooltipBody) => {\n tooltipBody.classList.remove(VISIBLE_CLASS);\n tooltipBody.classList.remove(SET_CLASS);\n tooltipBody.classList.remove(ADJUST_WIDTH_CLASS);\n tooltipBody.setAttribute(\"aria-hidden\", \"true\");\n};\n\n/**\n * Setup the tooltip component\n * @param {HTMLElement} tooltipTrigger The element that creates the tooltip\n */\nconst setUpAttributes = (tooltipTrigger) => {\n const tooltipID = `tooltip-${Math.floor(Math.random() * 900000) + 100000}`;\n const tooltipContent = tooltipTrigger.getAttribute(\"title\");\n const wrapper = document.createElement(\"span\");\n const tooltipBody = document.createElement(\"span\");\n const position = tooltipTrigger.getAttribute(\"data-position\")\n ? tooltipTrigger.getAttribute(\"data-position\")\n : \"top\";\n const additionalClasses = tooltipTrigger.getAttribute(\"data-classes\");\n\n // Set up tooltip attributes\n tooltipTrigger.setAttribute(\"aria-describedby\", tooltipID);\n tooltipTrigger.setAttribute(\"tabindex\", \"0\");\n tooltipTrigger.setAttribute(\"title\", \"\");\n tooltipTrigger.classList.remove(TOOLTIP_CLASS);\n tooltipTrigger.classList.add(TOOLTIP_TRIGGER_CLASS);\n\n // insert wrapper before el in the DOM tree\n tooltipTrigger.parentNode.insertBefore(wrapper, tooltipTrigger);\n\n // set up the wrapper\n wrapper.appendChild(tooltipTrigger);\n wrapper.classList.add(TOOLTIP_CLASS);\n wrapper.appendChild(tooltipBody);\n\n // Apply additional class names to wrapper element\n if (additionalClasses) {\n const classesArray = additionalClasses.split(\" \");\n classesArray.forEach((classname) => wrapper.classList.add(classname));\n }\n\n // set up the tooltip body\n tooltipBody.classList.add(TOOLTIP_BODY_CLASS);\n tooltipBody.setAttribute(\"id\", tooltipID);\n tooltipBody.setAttribute(\"role\", \"tooltip\");\n tooltipBody.setAttribute(\"aria-hidden\", \"true\");\n\n // place the text in the tooltip\n tooltipBody.innerHTML = \"\";\n tooltipBody.appendChild(document.createTextNode(tooltipContent));\n\n return { tooltipBody, position, tooltipContent, wrapper };\n};\n\n// Setup our function to run on various events\nconst tooltip = {\n init() {\n select(TOOLTIP, document).forEach((tooltipTrigger) => {\n const {\n tooltipBody,\n position,\n tooltipContent,\n wrapper,\n } = setUpAttributes(tooltipTrigger);\n\n if (tooltipContent) {\n // Listeners for showing and hiding the tooltip\n addListenerMulti(\n tooltipTrigger,\n \"mouseenter focus\",\n function handleShow() {\n showToolTip(tooltipBody, tooltipTrigger, position, wrapper);\n return false;\n }\n );\n\n // Keydown here prevents tooltips from being read twice by screen reader. also allows escape key to close it (along with any other.)\n addListenerMulti(\n tooltipTrigger,\n \"mouseleave blur keydown\",\n function handleHide() {\n hideToolTip(tooltipBody);\n return false;\n }\n );\n }\n });\n },\n};\n\nmodule.exports = tooltip;\n","const helpers = {\n setDefaultTimezone: function setDefaultTimezone() {\n const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n document.getElementById('user_timezone').value = timezone;\n }\n};\n\nmodule.exports = helpers;","var incrementer = (function () {\n var i = {\n increment: function (input) {\n var max = parseInt($(input).attr('max'));\n var value = parseInt($(input).val());\n if (max != undefined) {\n if (value < max) {\n $(input).val(value + 1);\n }\n } else {\n $(input).val(parseInt($(input).val()) + 1);\n }\n },\n decrement: function (input) {\n var min = parseInt($(input).attr('min'));\n var value = parseInt($(input).val());\n if (min != undefined) {\n if (value > min) {\n $(input).val(value - 1);\n }\n } else {\n $(input).val(value - 1);\n }\n\n },\n init: function () {\n $('.incrementer').each(function (index, incrementer) {\n var addButton = $(incrementer).find('.incrementer__add');\n var subtractButton = $(incrementer).find('.incrementer__subtract');\n var input = $(incrementer).find('.text-input');\n\n $(addButton).click(function (e) {\n i.increment(input);\n });\n\n $(subtractButton).click(function (e) {\n i.decrement(input);\n });\n });\n }\n }\n return {\n init: i.init\n }\n})();\n\nvar radioSelector = (function () {\n var rs = {\n init: function () {\n $('.radio-button').each(function (index, button) {\n if ($(this).find('input').is(':checked')) {\n $(this).addClass('is-selected');\n }\n\n $(this).find('input').click(function (e) {\n var allRadioButtons;\n if ($(this).closest('.cfa-radio-button').length > 0) {\n // FormBuilder V2\n allRadioButtons = $(this).closest('.cfa-radio-button').siblings().children('.is-selected');\n } else {\n // FormBuilder V1 & GCF\n allRadioButtons = $(this).closest('.radio-button').siblings();\n }\n allRadioButtons.removeClass('is-selected');\n $(this).closest('.radio-button').addClass('is-selected');\n })\n })\n }\n }\n return {\n init: rs.init\n }\n})();\n\nvar checkboxSelector = (function () {\n var cs = {\n init: function () {\n $('.checkbox').each(function (index, button) {\n if ($(this).find('input').is(':checked')) {\n $(this).addClass('is-selected');\n }\n\n $(this).find('input').click(function (e) {\n if ($(this).is(':checked')) {\n $(this).closest('.checkbox').addClass('is-selected');\n } else {\n $(this).closest('.checkbox').removeClass('is-selected');\n }\n })\n })\n }\n }\n return {\n init: cs.init\n }\n})();\n\nvar followUpQuestion = (function () {\n var fUQ = {\n init: function () {\n $('.question-with-follow-up').each(function (index, question) {\n var self = this;\n\n // set initial state of follow-ups based on the page\n $(this).find('input').each(function (index, input) {\n var $input = $(this);\n var followUpSelector = $input.attr('data-follow-up');\n if (followUpSelector && /^[a-zA-Z0-9_\\-#\\.]+$/.test(followUpSelector)) { // protects against XSS through DOM\n if ($input.is(':checked')) {\n $(followUpSelector).find('input, select').attr('disabled', false);\n $(followUpSelector).show();\n } else {\n if ($('[data-follow-up=\"' + followUpSelector + '\"]:checked').length === 0) {\n $(followUpSelector).find('input, select').attr('disabled', true);\n // two question inputs can refer to the same followup\n $(followUpSelector).hide();\n }\n }\n }\n });\n\n // add click listeners to initial question inputs\n $(self).find('> .question-with-follow-up__question input').click(function (e) {\n fUQ.update($(self));\n });\n });\n },\n update: function ($container) {\n $container.find('> .question-with-follow-up__follow-up input, > .question-with-follow-up__follow-up select').attr('disabled', true);\n $container.find('> .question-with-follow-up__follow-up').hide();\n\n $container.find('.question-with-follow-up__question input').each(function (index, input) {\n // if any of the inputs with a data-follow-up is checked then show the follow-up\n if ($(input).is(':checked') && $(input).attr('data-follow-up') != null) {\n var followUpSelector = $(this).attr('data-follow-up');\n if (/^[a-zA-Z0-9_\\-#\\.]+$/.test(followUpSelector)) {\n $(followUpSelector).show();\n $(followUpSelector).find('input, select').attr('disabled', false);\n }\n }\n });\n }\n }\n return {\n init: fUQ.init,\n update: fUQ.update\n }\n})();\n\nvar revealer = (function () {\n var rv = {\n init: function () {\n $('.reveal').each(function (index, revealer) {\n var self = revealer;\n $(self).addClass('is-hiding-content');\n var revealButton = $(self).find('.reveal__button')\n revealButton.each(function (i, link) {\n link.setAttribute('aria-expanded', false)\n })\n revealButton.click(function (e) {\n e.preventDefault();\n $(self).toggleClass('is-hiding-content');\n\n if (this.getAttribute('aria-expanded') === 'false') {\n this.setAttribute('aria-expanded', 'true');\n } else {\n this.setAttribute('aria-expanded', 'false')\n }\n });\n });\n }\n }\n return {\n init: rv.init\n }\n})();\n\nvar immediateUpload = (function () {\n var uploader = function () {\n var $formInputs = $('input[type=\"file\"][data-upload-immediately]');\n\n $formInputs.each(function (index, formInput) {\n let $formInput = $(formInput);\n var $form = $formInput.closest('form');\n let requiredSelectId = $formInput.data('requires-value-for');\n if (requiredSelectId) {\n let $select = $(`#${requiredSelectId}`);\n let handleSelectChange = function (event) {\n let hasRequiredValue = $select.val() == '';\n formInput.disabled = hasRequiredValue;\n $form.toggleClass('file-selection-disabled', hasRequiredValue)\n };\n handleSelectChange();\n $select.change(handleSelectChange);\n }\n $form.find(\"button[type=submit]\").hide();\n $form.find(\"input[type=submit]\").hide();\n $form.find('label[for=' + formInput.id + ']').show();\n $formInput.addClass('file-upload__input');\n }).change(function (event) {\n $(this).closest('form').submit();\n var dataUploading = $formInputs.data(\"uploading\");\n if (dataUploading) {\n $(this).replaceWith(\"

\" + dataUploading + \"

\");\n }\n });\n };\n\n return {\n init: uploader\n }\n})();\n\nvar inputGroupSelector = (function () {\n var igs = {\n init: function () {\n $('.text-input-group .text-input').each(function (index, input) {\n if ($(this).attr('autofocus')) {\n $(this).parent().addClass('is-focused');\n }\n $(this).focusin(function () {\n $(this).parent().addClass('is-focused');\n })\n\n $(this).focusout(function () {\n $(this).parent().removeClass('is-focused');\n })\n\n })\n }\n }\n return {\n init: igs.init\n }\n})();\n\nvar noneOfTheAbove = (function () {\n var noneOf = {\n init: function () {\n var $noneCheckbox = $('#none__checkbox');\n var $otherCheckboxes = $('input[type=checkbox]').not('#none__checkbox');\n\n // Uncheck None if another checkbox is checked\n $otherCheckboxes.click(function (e) {\n $noneCheckbox.prop('checked', false);\n $noneCheckbox.parent().removeClass('is-selected');\n });\n\n // Uncheck all others if None is checked\n $noneCheckbox.click(function (e) {\n $otherCheckboxes.prop('checked', false);\n $otherCheckboxes.parent().removeClass('is-selected');\n\n // If we just unchecked an with a follow-up, let's reset the follow-up questions\n // so it hides properly.\n var $enclosingFollowUp = $noneCheckbox.closest('.question-with-follow-up');\n if ($enclosingFollowUp) {\n followUpQuestion.update($enclosingFollowUp);\n }\n });\n\n }\n };\n return {\n init: noneOf.init\n }\n})();\n\nvar showMore = (function () {\n return {\n init: function () {\n $('.show-more').each(function (index, showmore) {\n $(showmore).find('.show-more__button').click(function (e) {\n e.preventDefault();\n $(showmore).addClass('is-open');\n })\n });\n }\n }\n})();\n\nvar accordion = (function () {\n var ac = {\n init: function () {\n $('.accordion').each(function (index, accordion) {\n var self = accordion;\n $(self).addClass('accordion--is-closed');\n $(self).find('.accordion__button').attr('aria-expanded', \"false\");\n $(self).find('.accordion__button').click(function (e) {\n e.preventDefault();\n $(self).toggleClass('accordion--is-closed');\n if ($(self).find('.accordion__button').attr('aria-expanded') == \"false\") {\n $(self).find('.accordion__button').attr('aria-expanded', \"true\");\n } else {\n $(self).find('.accordion__button').attr('aria-expanded', \"false\");\n }\n });\n });\n }\n }\n return {\n init: ac.init\n }\n})();\n\nvar selectBodyBottomMargin = (function () {\n return {\n init: function () {\n var $compactFooter = $('body').find('.main-footer__compact');\n\n if ($compactFooter) {\n $('body').css(\"margin-bottom\", $compactFooter.css(\"height\"));\n }\n }\n }\n})();\n\nvar autoformatEventHandler = function (characterMap, maxDigits) {\n return function (_e) {\n var input = $(this);\n var unformattedValue = input.val()\n .replace(/[^\\d]/g, \"\")\n .substring(0, maxDigits);\n var formattedStr = [];\n for (var i = 0; i < unformattedValue.length; i++) {\n var specialChar = characterMap[i];\n if (specialChar !== undefined) {\n formattedStr.push(specialChar);\n }\n formattedStr.push(unformattedValue.charAt(i));\n }\n input.val(formattedStr.join(\"\"));\n }\n};\n\nfunction formatNumericInput(selector, characterMap, maxDigits) {\n var handler = autoformatEventHandler(characterMap, maxDigits);\n $(selector).each(function (_index, input) {\n handler.call(this, null); // format existing value on page load (not yet tested, need JS testing first)\n $(input).on('input', handler);\n });\n}\n\nvar numericFormatters = {\n init: function () {\n formatNumericInput('.phone-input', {0: '(', 3: ') ', 6: '-'}, 10);\n formatNumericInput('.ssn-input', {3: '-', 5: '-'}, 9);\n }\n};\n\nvar honeycrispInit = function () {\n incrementer.init();\n radioSelector.init();\n checkboxSelector.init();\n followUpQuestion.init();\n immediateUpload.init();\n revealer.init();\n inputGroupSelector.init();\n noneOfTheAbove.init();\n showMore.init();\n accordion.init();\n selectBodyBottomMargin.init();\n numericFormatters.init();\n}\n\nvar Honeycrisp = function () {\n return {\n init: function () {\n $(document).ready(function () {\n honeycrispInit();\n });\n }\n }\n}();\n\nHoneycrisp.init();\n","// Action Cable provides the framework to deal with WebSockets in Rails.\n// You can generate new channels where WebSocket features live using the `rails generate channel` command.\n\nimport { createConsumer } from \"@rails/actioncable\"\n\nexport default createConsumer()\n","export function getChannelName() {\n const messagesList = document.querySelector(\"ul[data-js='messages-pub-sub']\");\n return { channel: \"ClientChannel\", id: messagesList.dataset.clientId }\n}\n\nexport const callback = {\n connected() {\n console.log(\"We're connected!\")\n },\n\n disconnected() {\n console.log(\"We're disconnected!\")\n },\n\n received(data) {\n let newContent = data[0];\n\n document.querySelector(\"ul[data-js='messages-pub-sub']\").innerHTML += newContent;\n }\n};\n","import { appendAssociation, removeAssociation } from \"./nested_attributes\";\n\nexport function initNestedAttributesListeners() {\n $(document).on('click', '[data-link-to-remove-field]', function(e) {\n e.preventDefault();\n removeAssociation(this);\n });\n\n $(document).on('click', '[data-link-to-add-field]', function(e) {\n e.preventDefault();\n appendAssociation(this);\n });\n}","export function appendAssociation(selector) {\n // Replace server-rendered static field-id with dynamic unique value (time) to ensure\n // we can persist multiple new elements at once.\n let time = new Date().getTime();\n let regexp = new RegExp($(selector).data('link-to-add-field-id'), 'g');\n let fields_html = $(selector).data('link-to-add-field').replace(regexp, time);\n let target = $(selector).data('link-to-add-field-target')\n if (target) {\n $(target).append(fields_html);\n } else {\n $(selector).before(fields_html);\n }\n}\n\nexport function removeAssociation(selector) {\n $(selector).prev('input[type=hidden]').val('1');\n const target = $(selector).data('link-to-remove-field');\n const $field = $(selector).closest(target);\n return $field.hide();\n}","export function initTakeActionOnChangeHandlers(formName) {\n\n $(`#hub_${formName}_form_status, #hub_${formName}_form_locale`).change(function() {\n $(\".hub-form :input\").prop(\"disabled\", true);\n const pathname = window.location.pathname.replace(\"update\", \"edit\");\n window.location.replace(pathname + \"?\" + searchParamsString(formName) + \"#status\");\n });\n}\nfunction searchParamsString(formName) {\n const searchParams = new URLSearchParams();\n const taxReturnId = $(`#hub_${formName}_form_tax_return_id`).val();\n const selectedStatus = $(`#hub_${formName}_form_status`).val();\n const selectedAssignee = $(`#hub_${formName}_form_assigned_user_id`).val();\n const locale = $(`#hub_${formName}_form_locale`).val();\n\n if (taxReturnId) { searchParams.set('tax_return[id]', taxReturnId) }\n if (selectedStatus) { searchParams.set('tax_return[status]', selectedStatus) }\n if (selectedAssignee) { searchParams.set('tax_return[assigned_user_id]', selectedAssignee) }\n\n if (locale) { searchParams.set(\"tax_return[locale]\", locale) }\n return searchParams.toString();\n}","function sort(rowSelector, direction, sortableParamCallback) {\n let stillSwitching = true;\n\n while (stillSwitching) {\n let i;\n stillSwitching = false;\n let willSwitch = false;\n let rows = $(rowSelector);\n // Loop to go through all rows\n for (i = 0; i < (rows.length - 1); i++) {\n let x,y;\n x = sortableParamCallback(rows[i]);\n y = sortableParamCallback(rows[i + 1]);\n x = typeof x == \"string\" ? x.toLowerCase() : x;\n y = typeof y == \"string\" ? y.toLowerCase() : y;\n\n if (direction == 'desc') {\n if (x > y) {\n willSwitch = true\n break;\n }\n } else {\n if (x < y) {\n willSwitch = true\n break;\n }\n }\n }\n if (willSwitch) {\n rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);\n stillSwitching = true;\n }\n }\n}\n\n// Sorts desc by default on first click -- generally expects the table to already be sorted asc on primary column.\n// Add attr-direction=\"asc\" to sortable column clickable selector if you'd like to sort asc on first click.\nexport function initSortableColumn(sortableElementsSelector, headerSelector, callback) {\n $(headerSelector).click(function() {\n if($(this).attr('attr-direction') == 'asc') {\n $(this).attr('attr-direction', 'desc')\n sort(sortableElementsSelector, 'desc', callback);\n } else {\n $(this).attr('attr-direction', 'asc');\n sort(sortableElementsSelector, 'asc', callback);\n }\n });\n}\n","import { initSortableColumn } from './table_sort';\n\n// Sum site-level counts into org-level values for org row.\nfunction setupOrgLevelCounts() {\n let totalCapacityCount = 0;\n let totalActiveCount = 0;\n $(\".org-metrics\").each(function() {\n let denominator = 0;\n let unansweredCommunicationCount = 0;\n const capacityCount = parseInt($(this).find('tr.org').first().attr('data-js-capacity'));\n const activeClientCount = parseInt($(this).find('tr.org td.capacity-percentage').first().attr('data-js-count'));\n totalCapacityCount += capacityCount;\n totalActiveCount += activeClientCount;\n if ($(this).find('tr.site').length == 0) {\n denominator = parseInt($(this).find('tr.org').first().attr('data-js-count'));\n unansweredCommunicationCount = parseInt($(this).find('tr.org td.unanswered-communication-breach').first().attr('data-js-count'));\n }\n\n $(this).find('tr.site').each(function() {\n denominator += parseInt($(this).attr('data-js-count'));\n });\n\n $(this).find('tr.site td.unanswered-communication-breach').each(function() {\n unansweredCommunicationCount += parseInt($(this).attr('data-js-count'));\n });\n\n // Set viewable value and sortable data-js-count value for org based on accumulated value.\n $(this).find('.unanswered-communication-breach').first().text(unansweredCommunicationCount).attr('data-js-count', unansweredCommunicationCount);\n\n updatePercentages(this, '.unanswered-communication-breach', denominator);\n updatePercentages(this, '.capacity', capacityCount);\n\n // // Loop through all sites to set breach percentages\n $(this).find('tr.site').each(function() {\n const siteDenominator = parseInt($(this).attr('data-js-count'))\n updatePercentages(this, '.unanswered-communication-breach', siteDenominator);\n });\n });\n let totalSLATracked = $('.metrics-totals').attr('data-js-count');\n updatePercentages('.metrics-totals', '.unanswered-communication-breach', totalSLATracked);\n $(\".metrics-totals\").find(\".capacity\").attr('data-js-count', totalActiveCount);\n updatePercentages('.metrics-totals', '.capacity', totalCapacityCount)\n}\n\nfunction updatePercentages(sectionSelector, breachTypeSelector, denominator) {\n let percentageSelector = breachTypeSelector + \"-percentage\";\n let percentage, percentageText;\n [percentage, percentageText] = determineBreachPercentages($(sectionSelector).find(breachTypeSelector).attr('data-js-count'), denominator);\n $(sectionSelector).find(percentageSelector).first().text(percentageText).attr('data-js-percentage', percentage);\n}\n\nfunction determineBreachPercentages(breachCount, totalCount) {\n let value = breachCount/totalCount;\n let percentage = isNaN(value) ? 0 : (breachCount/totalCount * 100).toFixed(2).replace(/[.,]00$/, \"\");\n percentage = !isFinite(value) ? \"-1\" : percentage;\n let text = isFinite(value) ? `${breachCount}/${totalCount} (${percentage}%)` : `${breachCount}/${totalCount}`;\n return [percentage, text];\n}\n\n// Use attribute data-js-count to determine whether a row or set of rows includes any breaches.\nfunction setupBreachDataClasses() {\n $(\".site, .org\").each(function() {\n let values = [];\n\n $(this).children('td').each(function() {\n values.push($(this).attr('data-js-count'));\n });\n\n const noBreaches = values.filter(function(v) { return v != undefined; }).every(function(v) { return v == 0 });\n if (noBreaches) {\n $(this).addClass('no-breaches');\n } else {\n $(this).addClass('with-breaches');\n }\n });\n}\n\n// Logic for expanding/collapsing sites\nfunction initToggleableSites() {\n $('button#toggle-sites').click(function() {\n $(this).toggleClass('button--inverted');\n\n if (!$(this).attr('data-collapse')) {\n $(\".site\").each(function() {\n $(this).hide();\n });\n $(this).attr('data-collapse', true)\n $(this).text($(this).attr('data-expand-text'));\n } else {\n let elements = \".site\";\n if ($(\"button#toggle-zeros\").attr('data-collapse')) {\n elements += \".with-breaches\"\n }\n $(elements).each(function() {\n $(this).show();\n });\n $(this).text($(this).attr('data-collapse-text'));\n $(this).removeAttr('data-collapse');\n }\n });\n}\n\n// Logic for collapsing/expanding orgs + sites that have 0 breaches.\nfunction initToggleableZeroValues() {\n $(\"button#toggle-zeros\").click(function() {\n $(this).toggleClass('button--inverted');\n if (!$(this).attr('data-collapse')) {\n let elements = \".org\";\n if (!$(\"button#toggle-sites\").attr('data-collapse')) {\n elements += \", .site\"\n }\n $(elements).each(function () {\n if ($(this).hasClass('no-breaches')) {\n $(this).hide();\n }\n });\n\n $(this).attr('data-collapse', true)\n $(this).text($(this).attr('data-expand-text'));\n } else {\n let elements = \".org.no-breaches\"\n if (!$(\"button#toggle-sites\").attr('data-collapse')) {\n elements += \", .site.no-breaches\"\n }\n $(elements).each(function() {\n $(this).show();\n });\n $(this).text($(this).attr('data-collapse-text'));\n $(this).removeAttr('data-collapse');\n }\n });\n}\n\nexport function initMetricsTableSortAndFilter() {\n setupOrgLevelCounts();\n setupBreachDataClasses();\n\n initToggleableSites();\n initToggleableZeroValues();\n\n initSortableColumn(\"tbody.org-metrics\", \"th#unanswered-communication-breaches\", function(row) {\n const calc = parseInt($(row).find('.unanswered-communication-breach').attr('data-js-count'));\n return isNaN(calc) ? 0 : calc;\n });\n\n initSortableColumn(\"tbody.org-metrics\", \"th#organization-name\", function (row) {\n return $(row).attr('data-js-vita-partner-name');\n });\n\n initSortableColumn(\"tbody.org-metrics\", \"th#unanswered-communication-percentage\", function (row) {\n const calc = parseInt($(row).find('.unanswered-communication-breach-percentage').attr('data-js-percentage'));\n return isNaN(calc) ? 0 : calc;\n });\n\n\n initSortableColumn(\"tbody.org-metrics\", \"th#capacity-percentage\", function (row) {\n const calc = parseInt($(row).find('.capacity-percentage').attr('data-js-percentage'));\n return isNaN(calc) ? 0 : calc;\n });\n}","export var documentSubmittingIndicator = (function() {\n var dsi = function() {\n var fileUploadForm = $('form#file-upload-form');\n var fileInputElements = fileUploadForm.find('input[type=\"file\"][data-upload-immediately]');\n\n fileInputElements.change(function(_event) {\n document.body.classList.add('submitting');\n });\n };\n\n return {\n init: dsi\n }\n})();\n","export function initStateRoutingsListeners() {\n updateRoutingPercentage();\n $(\".routing-percentage-input-wrapper input\").on(\"keyup\", function(e) {\n updateRoutingPercentage();\n });\n\n // Logic for hiding an unpersisted \"add routing\" element\n $('.state-routings-edit').on('click', '.delete-unpersisted-state-routing-item', function(){\n $(this).parent().find(\":input\").prop(\"disabled\", true);\n $(this).parent().hide();\n });\n}\n\nfunction updateRoutingPercentage() {\n let sum = 0;\n $(\".routing-percentage-input-wrapper input\").each(function() {\n sum += Number($(this).val());\n });\n $(\".routing-percentage-total\").text(`${sum}%`);\n if (sum != 100) {\n $(\".routing-percentage-total\").addClass(\"text--error\");\n } else {\n $(\".routing-percentage-total\").removeClass(\"text--error\");\n }\n return sum;\n}\n\n","export function addMentionedId(e) {\n const trackingInput = document.querySelector(window.taggableTrackingSelector);\n const ids = trackingInput.value.length ? trackingInput.value.split(\",\") : [];\n if (ids.includes(e.detail.data.id)) { return }\n\n ids.push(e.detail.data.id); // add selected element to the array\n trackingInput.value = ids.join(\",\");\n}\n\nexport function removeMentionedId(e) {\n const trackingInput = document.querySelector(window.taggableTrackingSelector);\n if (!trackingInput.value.length) { return }\n let ids = trackingInput.value.split(\",\");\n const index = ids.findIndex(id => id == e.detail.data.id);\n\n ids.splice(index, 1); // remove the element from the array\n trackingInput.value = ids.join(\",\");\n}","function changeCountDisplay(el, num) {\n el.textContent = String(num);\n}\n\nfunction getCheckedNum(form) {\n return [...form.elements].filter(el => el.checked).length;\n}\n\nfunction changeElDisplay(el, property) {\n el.style.display = property;\n}\n\nfunction handleCheckboxChange(formEl, takeActionCountEl, takeActionFooterEl) {\n changeCountDisplay(takeActionCountEl, getCheckedNum(formEl));\n if (getCheckedNum(formEl) >= 1) {\n changeElDisplay(takeActionFooterEl, \"\");\n } else if (getCheckedNum(formEl) === 0) {\n changeElDisplay(takeActionFooterEl, \"none\");\n }\n}\n\nexport function initBulkAction() {\n const selectAllEl = document.querySelector('#bulk-edit-select-all');\n const allCheckboxEls = [...document.querySelectorAll(\"[id^='tr_ids_']\")];\n const formEl = document.querySelector('#take-action-form');\n const takeActionFooterEl = document.querySelector('#take-action-footer');\n const takeActionCountEl = document.querySelector('#take-action-count');\n const takeActionAllEl = document.querySelector('#take-action-all-returns');\n\n handleCheckboxChange(formEl, takeActionCountEl, takeActionFooterEl);\n\n if (selectAllEl) {\n selectAllEl.addEventListener('change', () => {\n const useTakeActionAllEl = selectAllEl.dataset['multiPage'] === 'true';\n if (selectAllEl.checked) {\n allCheckboxEls.forEach(checkboxEl => checkboxEl.checked = true);\n if (useTakeActionAllEl) {\n takeActionAllEl.classList.remove('hidden')\n }\n } else {\n allCheckboxEls.forEach(checkboxEl => checkboxEl.checked = false);\n if (useTakeActionAllEl) {\n takeActionAllEl.classList.add('hidden')\n }\n }\n\n handleCheckboxChange(formEl, takeActionCountEl, takeActionFooterEl);\n });\n }\n\n if (allCheckboxEls.length > 0) {\n allCheckboxEls.forEach((el) => {\n el.addEventListener('change', () => {\n handleCheckboxChange(formEl, takeActionCountEl, takeActionFooterEl);\n });\n });\n }\n}\n","/*\n* Fingerprintjs2 2.1.2 - Modern & flexible browser fingerprint library v2\n* https://github.com/Valve/fingerprintjs2\n* Copyright (c) 2020 Valentin Vasilyev (valentin@fingerprintjs.com)\n* Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n* ARE DISCLAIMED. IN NO EVENT SHALL VALENTIN VASILYEV BE LIABLE FOR ANY\n* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*\n*\n* Script modified by Internal Revenue Service, rev. date August 3, 2020 (TY2020). Excluded certain components due to known issues on various platforms, as noted in the code below.\n*/\nexport default function init() {\n if (typeof Array.isArray === 'undefined') {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]'\n }\n };\n\n var defaultOptions = {\n preprocessor: null,\n audio: {\n timeout: 1000,\n // On iOS 11, audio context can only be used in response to user interaction.\n // We require users to explicitly enable audio fingerprinting on iOS 11.\n // See https://stackoverflow.com/questions/46363048/onaudioprocess-not-called-on-ios11#46534088\n excludeIOS11: true\n },\n fonts: {\n swfContainerId: 'fingerprintjs2',\n swfPath: 'flash/compiled/FontList.swf',\n userDefinedFonts: [],\n extendedJsFonts: true\n },\n screen: {\n // To ensure consistent fingerprints when users rotate their mobile devices\n detectScreenOrientation: true\n },\n plugins: {\n sortPluginsFor: [/palemoon/i],\n excludeIE: false\n },\n extraComponents: [],\n excludes: {\n // Unreliable on Windows, see https://github.com/Valve/fingerprintjs2/issues/375\n 'enumerateDevices': true,\n // devicePixelRatio depends on browser zoom, and it's impossible to detect browser zoom\n 'pixelRatio': true,\n // DNT depends on incognito mode for some browsers (Chrome) and it's impossible to detect incognito mode\n 'doNotTrack': true,\n // uses js fonts already\n 'fontsFlash': true\n },\n NOT_AVAILABLE: 'not available',\n ERROR: 'error',\n EXCLUDED: 'excluded'\n }\n\n var each = function (obj, iterator) {\n if (Array.prototype.forEach && obj.forEach === Array.prototype.forEach) {\n obj.forEach(iterator)\n } else if (obj.length === +obj.length) {\n for (var i = 0, l = obj.length; i < l; i++) {\n iterator(obj[i], i, obj)\n }\n } else {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n iterator(obj[key], key, obj)\n }\n }\n }\n }\n\n var map = function (obj, iterator) {\n var results = []\n // Not using strict equality so that this acts as a\n // shortcut to checking for `null` and `undefined`.\n if (obj == null) {\n return results\n }\n if (Array.prototype.map && obj.map === Array.prototype.map) { return obj.map(iterator) }\n each(obj, function (value, index, list) {\n results.push(iterator(value, index, list))\n })\n return results\n }\n\n var extendSoft = function (target, source) {\n if (source == null) { return target }\n var value\n var key\n for (key in source) {\n value = source[key]\n if (value != null && !(Object.prototype.hasOwnProperty.call(target, key))) {\n target[key] = value\n }\n }\n return target\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/enumerateDevices\n var enumerateDevicesKey = function (done, options) {\n if (!isEnumerateDevicesSupported()) {\n return done(options.NOT_AVAILABLE)\n }\n navigator.mediaDevices.enumerateDevices().then(function (devices) {\n done(devices.map(function (device) {\n return 'id=' + device.deviceId + ';gid=' + device.groupId + ';' + device.kind + ';' + device.label\n }))\n })['catch'](function (error) {\n done(error)\n })\n }\n\n var isEnumerateDevicesSupported = function () {\n return (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices)\n }\n // Inspired by and based on https://github.com/cozylife/audio-fingerprint\n var audioKey = function (done, options) {\n var audioOptions = options.audio\n if (audioOptions.excludeIOS11 && navigator.userAgent.match(/OS 11.+Version\\/11.+Safari/)) {\n // See comment for excludeUserAgent and https://stackoverflow.com/questions/46363048/onaudioprocess-not-called-on-ios11#46534088\n return done(options.EXCLUDED)\n }\n\n var AudioContext = window.OfflineAudioContext || window.webkitOfflineAudioContext\n\n if (AudioContext == null) {\n return done(options.NOT_AVAILABLE)\n }\n\n var context = new AudioContext(1, 44100, 44100)\n\n var oscillator = context.createOscillator()\n oscillator.type = 'triangle'\n oscillator.frequency.setValueAtTime(10000, context.currentTime)\n\n var compressor = context.createDynamicsCompressor()\n each([\n ['threshold', -50],\n ['knee', 40],\n ['ratio', 12],\n ['reduction', -20],\n ['attack', 0],\n ['release', 0.25]\n ], function (item) {\n if (compressor[item[0]] !== undefined && typeof compressor[item[0]].setValueAtTime === 'function') {\n compressor[item[0]].setValueAtTime(item[1], context.currentTime)\n }\n })\n\n oscillator.connect(compressor)\n compressor.connect(context.destination)\n oscillator.start(0)\n context.startRendering()\n\n var audioTimeoutId = setTimeout(function () {\n console.warn('Audio fingerprint timed out. Please report bug at https://github.com/Valve/fingerprintjs2 with your user agent: \"' + navigator.userAgent + '\".')\n context.oncomplete = function () { }\n context = null\n return done('audioTimeout')\n }, audioOptions.timeout)\n\n context.oncomplete = function (event) {\n var fingerprint\n try {\n clearTimeout(audioTimeoutId)\n fingerprint = event.renderedBuffer.getChannelData(0)\n .slice(4500, 5000)\n .reduce(function (acc, val) { return acc + Math.abs(val) }, 0)\n .toString()\n oscillator.disconnect()\n compressor.disconnect()\n } catch (error) {\n done(error)\n return\n }\n done(fingerprint)\n }\n }\n var UserAgent = function (done) {\n done(navigator.userAgent)\n }\n var webdriver = function (done, options) {\n done(navigator.webdriver == null ? options.NOT_AVAILABLE : navigator.webdriver)\n }\n var languageKey = function (done, options) {\n done(navigator.language || navigator.userLanguage || navigator.browserLanguage || navigator.systemLanguage || options.NOT_AVAILABLE)\n }\n var colorDepthKey = function (done, options) {\n done(window.screen.colorDepth || options.NOT_AVAILABLE)\n }\n var deviceMemoryKey = function (done, options) {\n done(navigator.deviceMemory || options.NOT_AVAILABLE)\n }\n var pixelRatioKey = function (done, options) {\n done(window.devicePixelRatio || options.NOT_AVAILABLE)\n }\n var screenResolutionKey = function (done, options) {\n done(getScreenResolution(options))\n }\n var getScreenResolution = function (options) {\n var resolution = [window.screen.width, window.screen.height]\n if (options.screen.detectScreenOrientation) {\n resolution.sort().reverse()\n }\n return resolution\n }\n var availableScreenResolutionKey = function (done, options) {\n done(getAvailableScreenResolution(options))\n }\n var getAvailableScreenResolution = function (options) {\n if (window.screen.availWidth && window.screen.availHeight) {\n var available = [window.screen.availHeight, window.screen.availWidth]\n if (options.screen.detectScreenOrientation) {\n available.sort().reverse()\n }\n return available\n }\n // headless browsers\n return options.NOT_AVAILABLE\n }\n var timezoneOffset = function (done) {\n done(new Date().getTimezoneOffset())\n }\n var timezone = function (done, options) {\n if (window.Intl && window.Intl.DateTimeFormat) {\n done(new window.Intl.DateTimeFormat().resolvedOptions().timeZone)\n return\n }\n done(options.NOT_AVAILABLE)\n }\n var sessionStorageKey = function (done, options) {\n done(hasSessionStorage(options))\n }\n var localStorageKey = function (done, options) {\n done(hasLocalStorage(options))\n }\n var indexedDbKey = function (done, options) {\n done(hasIndexedDB(options))\n }\n var addBehaviorKey = function (done) {\n // body might not be defined at this point or removed programmatically\n done(!!(document.body && document.body.addBehavior))\n }\n var openDatabaseKey = function (done) {\n done(!!window.openDatabase)\n }\n var cpuClassKey = function (done, options) {\n done(getNavigatorCpuClass(options))\n }\n var platformKey = function (done, options) {\n done(getNavigatorPlatform(options))\n }\n var doNotTrackKey = function (done, options) {\n done(getDoNotTrack(options))\n }\n var canvasKey = function (done, options) {\n if (isCanvasSupported()) {\n done(getCanvasFp(options))\n return\n }\n done(options.NOT_AVAILABLE)\n }\n var webglKey = function (done, options) {\n if (isWebGlSupported()) {\n done(getWebglFp())\n return\n }\n done(options.NOT_AVAILABLE)\n }\n var webglVendorAndRendererKey = function (done) {\n if (isWebGlSupported()) {\n done(getWebglVendorAndRenderer())\n return\n }\n done()\n }\n var adBlockKey = function (done) {\n done(getAdBlock())\n }\n var hasLiedLanguagesKey = function (done) {\n done(getHasLiedLanguages())\n }\n var hasLiedResolutionKey = function (done) {\n done(getHasLiedResolution())\n }\n var hasLiedOsKey = function (done) {\n done(getHasLiedOs())\n }\n var hasLiedBrowserKey = function (done) {\n done(getHasLiedBrowser())\n }\n // flash fonts (will increase fingerprinting time 20X to ~ 130-150ms)\n var flashFontsKey = function (done, options) {\n // we do flash if swfobject is loaded\n if (!hasSwfObjectLoaded()) {\n return done('swf object not loaded')\n }\n if (!hasMinFlashInstalled()) {\n return done('flash not installed')\n }\n if (!options.fonts.swfPath) {\n return done('missing options.fonts.swfPath')\n }\n loadSwfAndDetectFonts(function (fonts) {\n done(fonts)\n }, options)\n }\n // kudos to http://www.lalit.org/lab/javascript-css-font-detect/\n var jsFontsKey = function (done, options) {\n // a font will be compared against all the three default fonts.\n // and if it doesn't match all 3 then that font is not available.\n var baseFonts = ['monospace', 'sans-serif', 'serif']\n\n var fontList = [\n 'Andale Mono', 'Arial', 'Arial Black', 'Arial Hebrew', 'Arial MT', 'Arial Narrow', 'Arial Rounded MT Bold', 'Arial Unicode MS',\n 'Bitstream Vera Sans Mono', 'Book Antiqua', 'Bookman Old Style',\n 'Calibri', 'Cambria', 'Cambria Math', 'Century', 'Century Gothic', 'Century Schoolbook', 'Comic Sans', 'Comic Sans MS', 'Consolas', 'Courier', 'Courier New',\n 'Geneva', 'Georgia',\n 'Helvetica', 'Helvetica Neue',\n 'Impact',\n 'Lucida Bright', 'Lucida Calligraphy', 'Lucida Console', 'Lucida Fax', 'LUCIDA GRANDE', 'Lucida Handwriting', 'Lucida Sans', 'Lucida Sans Typewriter', 'Lucida Sans Unicode',\n 'Microsoft Sans Serif', 'Monaco', 'Monotype Corsiva', 'MS Gothic', 'MS Outlook', 'MS PGothic', 'MS Reference Sans Serif', 'MS Sans Serif', 'MS Serif', 'MYRIAD', 'MYRIAD PRO',\n 'Palatino', 'Palatino Linotype',\n 'Segoe Print', 'Segoe Script', 'Segoe UI', 'Segoe UI Light', 'Segoe UI Semibold', 'Segoe UI Symbol',\n 'Tahoma', 'Times', 'Times New Roman', 'Times New Roman PS', 'Trebuchet MS',\n 'Verdana', 'Wingdings', 'Wingdings 2', 'Wingdings 3'\n ]\n\n if (options.fonts.extendedJsFonts) {\n var extendedFontList = [\n 'Abadi MT Condensed Light', 'Academy Engraved LET', 'ADOBE CASLON PRO', 'Adobe Garamond', 'ADOBE GARAMOND PRO', 'Agency FB', 'Aharoni', 'Albertus Extra Bold', 'Albertus Medium', 'Algerian', 'Amazone BT', 'American Typewriter',\n 'American Typewriter Condensed', 'AmerType Md BT', 'Andalus', 'Angsana New', 'AngsanaUPC', 'Antique Olive', 'Aparajita', 'Apple Chancery', 'Apple Color Emoji', 'Apple SD Gothic Neo', 'Arabic Typesetting', 'ARCHER',\n 'ARNO PRO', 'Arrus BT', 'Aurora Cn BT', 'AvantGarde Bk BT', 'AvantGarde Md BT', 'AVENIR', 'Ayuthaya', 'Bandy', 'Bangla Sangam MN', 'Bank Gothic', 'BankGothic Md BT', 'Baskerville',\n 'Baskerville Old Face', 'Batang', 'BatangChe', 'Bauer Bodoni', 'Bauhaus 93', 'Bazooka', 'Bell MT', 'Bembo', 'Benguiat Bk BT', 'Berlin Sans FB', 'Berlin Sans FB Demi', 'Bernard MT Condensed', 'BernhardFashion BT', 'BernhardMod BT', 'Big Caslon', 'BinnerD',\n 'Blackadder ITC', 'BlairMdITC TT', 'Bodoni 72', 'Bodoni 72 Oldstyle', 'Bodoni 72 Smallcaps', 'Bodoni MT', 'Bodoni MT Black', 'Bodoni MT Condensed', 'Bodoni MT Poster Compressed',\n 'Bookshelf Symbol 7', 'Boulder', 'Bradley Hand', 'Bradley Hand ITC', 'Bremen Bd BT', 'Britannic Bold', 'Broadway', 'Browallia New', 'BrowalliaUPC', 'Brush Script MT', 'Californian FB', 'Calisto MT', 'Calligrapher', 'Candara',\n 'CaslonOpnface BT', 'Castellar', 'Centaur', 'Cezanne', 'CG Omega', 'CG Times', 'Chalkboard', 'Chalkboard SE', 'Chalkduster', 'Charlesworth', 'Charter Bd BT', 'Charter BT', 'Chaucer',\n 'ChelthmITC Bk BT', 'Chiller', 'Clarendon', 'Clarendon Condensed', 'CloisterBlack BT', 'Cochin', 'Colonna MT', 'Constantia', 'Cooper Black', 'Copperplate', 'Copperplate Gothic', 'Copperplate Gothic Bold',\n 'Copperplate Gothic Light', 'CopperplGoth Bd BT', 'Corbel', 'Cordia New', 'CordiaUPC', 'Cornerstone', 'Coronet', 'Cuckoo', 'Curlz MT', 'DaunPenh', 'Dauphin', 'David', 'DB LCD Temp', 'DELICIOUS', 'Denmark',\n 'DFKai-SB', 'Didot', 'DilleniaUPC', 'DIN', 'DokChampa', 'Dotum', 'DotumChe', 'Ebrima', 'Edwardian Script ITC', 'Elephant', 'English 111 Vivace BT', 'Engravers MT', 'EngraversGothic BT', 'Eras Bold ITC', 'Eras Demi ITC', 'Eras Light ITC', 'Eras Medium ITC',\n 'EucrosiaUPC', 'Euphemia', 'Euphemia UCAS', 'EUROSTILE', 'Exotc350 Bd BT', 'FangSong', 'Felix Titling', 'Fixedsys', 'FONTIN', 'Footlight MT Light', 'Forte',\n 'FrankRuehl', 'Fransiscan', 'Freefrm721 Blk BT', 'FreesiaUPC', 'Freestyle Script', 'French Script MT', 'FrnkGothITC Bk BT', 'Fruitger', 'FRUTIGER',\n 'Futura', 'Futura Bk BT', 'Futura Lt BT', 'Futura Md BT', 'Futura ZBlk BT', 'FuturaBlack BT', 'Gabriola', 'Galliard BT', 'Gautami', 'Geeza Pro', 'Geometr231 BT', 'Geometr231 Hv BT', 'Geometr231 Lt BT', 'GeoSlab 703 Lt BT',\n 'GeoSlab 703 XBd BT', 'Gigi', 'Gill Sans', 'Gill Sans MT', 'Gill Sans MT Condensed', 'Gill Sans MT Ext Condensed Bold', 'Gill Sans Ultra Bold', 'Gill Sans Ultra Bold Condensed', 'Gisha', 'Gloucester MT Extra Condensed', 'GOTHAM', 'GOTHAM BOLD',\n 'Goudy Old Style', 'Goudy Stout', 'GoudyHandtooled BT', 'GoudyOLSt BT', 'Gujarati Sangam MN', 'Gulim', 'GulimChe', 'Gungsuh', 'GungsuhChe', 'Gurmukhi MN', 'Haettenschweiler', 'Harlow Solid Italic', 'Harrington', 'Heather', 'Heiti SC', 'Heiti TC', 'HELV',\n 'Herald', 'High Tower Text', 'Hiragino Kaku Gothic ProN', 'Hiragino Mincho ProN', 'Hoefler Text', 'Humanst 521 Cn BT', 'Humanst521 BT', 'Humanst521 Lt BT', 'Imprint MT Shadow', 'Incised901 Bd BT', 'Incised901 BT',\n 'Incised901 Lt BT', 'INCONSOLATA', 'Informal Roman', 'Informal011 BT', 'INTERSTATE', 'IrisUPC', 'Iskoola Pota', 'JasmineUPC', 'Jazz LET', 'Jenson', 'Jester', 'Jokerman', 'Juice ITC', 'Kabel Bk BT', 'Kabel Ult BT', 'Kailasa', 'KaiTi', 'Kalinga', 'Kannada Sangam MN',\n 'Kartika', 'Kaufmann Bd BT', 'Kaufmann BT', 'Khmer UI', 'KodchiangUPC', 'Kokila', 'Korinna BT', 'Kristen ITC', 'Krungthep', 'Kunstler Script', 'Lao UI', 'Latha', 'Leelawadee', 'Letter Gothic', 'Levenim MT', 'LilyUPC', 'Lithograph', 'Lithograph Light', 'Long Island',\n 'Lydian BT', 'Magneto', 'Maiandra GD', 'Malayalam Sangam MN', 'Malgun Gothic',\n 'Mangal', 'Marigold', 'Marion', 'Marker Felt', 'Market', 'Marlett', 'Matisse ITC', 'Matura MT Script Capitals', 'Meiryo', 'Meiryo UI', 'Microsoft Himalaya', 'Microsoft JhengHei', 'Microsoft New Tai Lue', 'Microsoft PhagsPa', 'Microsoft Tai Le',\n 'Microsoft Uighur', 'Microsoft YaHei', 'Microsoft Yi Baiti', 'MingLiU', 'MingLiU_HKSCS', 'MingLiU_HKSCS-ExtB', 'MingLiU-ExtB', 'Minion', 'Minion Pro', 'Miriam', 'Miriam Fixed', 'Mistral', 'Modern', 'Modern No. 20', 'Mona Lisa Solid ITC TT', 'Mongolian Baiti',\n 'MONO', 'MoolBoran', 'Mrs Eaves', 'MS LineDraw', 'MS Mincho', 'MS PMincho', 'MS Reference Specialty', 'MS UI Gothic', 'MT Extra', 'MUSEO', 'MV Boli',\n 'Nadeem', 'Narkisim', 'NEVIS', 'News Gothic', 'News GothicMT', 'NewsGoth BT', 'Niagara Engraved', 'Niagara Solid', 'Noteworthy', 'NSimSun', 'Nyala', 'OCR A Extended', 'Old Century', 'Old English Text MT', 'Onyx', 'Onyx BT', 'OPTIMA', 'Oriya Sangam MN',\n 'OSAKA', 'OzHandicraft BT', 'Palace Script MT', 'Papyrus', 'Parchment', 'Party LET', 'Pegasus', 'Perpetua', 'Perpetua Titling MT', 'PetitaBold', 'Pickwick', 'Plantagenet Cherokee', 'Playbill', 'PMingLiU', 'PMingLiU-ExtB',\n 'Poor Richard', 'Poster', 'PosterBodoni BT', 'PRINCETOWN LET', 'Pristina', 'PTBarnum BT', 'Pythagoras', 'Raavi', 'Rage Italic', 'Ravie', 'Ribbon131 Bd BT', 'Rockwell', 'Rockwell Condensed', 'Rockwell Extra Bold', 'Rod', 'Roman', 'Sakkal Majalla',\n 'Santa Fe LET', 'Savoye LET', 'Sceptre', 'Script', 'Script MT Bold', 'SCRIPTINA', 'Serifa', 'Serifa BT', 'Serifa Th BT', 'ShelleyVolante BT', 'Sherwood',\n 'Shonar Bangla', 'Showcard Gothic', 'Shruti', 'Signboard', 'SILKSCREEN', 'SimHei', 'Simplified Arabic', 'Simplified Arabic Fixed', 'SimSun', 'SimSun-ExtB', 'Sinhala Sangam MN', 'Sketch Rockwell', 'Skia', 'Small Fonts', 'Snap ITC', 'Snell Roundhand', 'Socket',\n 'Souvenir Lt BT', 'Staccato222 BT', 'Steamer', 'Stencil', 'Storybook', 'Styllo', 'Subway', 'Swis721 BlkEx BT', 'Swiss911 XCm BT', 'Sylfaen', 'Synchro LET', 'System', 'Tamil Sangam MN', 'Technical', 'Teletype', 'Telugu Sangam MN', 'Tempus Sans ITC',\n 'Terminal', 'Thonburi', 'Traditional Arabic', 'Trajan', 'TRAJAN PRO', 'Tristan', 'Tubular', 'Tunga', 'Tw Cen MT', 'Tw Cen MT Condensed', 'Tw Cen MT Condensed Extra Bold',\n 'TypoUpright BT', 'Unicorn', 'Univers', 'Univers CE 55 Medium', 'Univers Condensed', 'Utsaah', 'Vagabond', 'Vani', 'Vijaya', 'Viner Hand ITC', 'VisualUI', 'Vivaldi', 'Vladimir Script', 'Vrinda', 'Westminster', 'WHITNEY', 'Wide Latin',\n 'ZapfEllipt BT', 'ZapfHumnst BT', 'ZapfHumnst Dm BT', 'Zapfino', 'Zurich BlkEx BT', 'Zurich Ex BT', 'ZWAdobeF']\n fontList = fontList.concat(extendedFontList)\n }\n\n fontList = fontList.concat(options.fonts.userDefinedFonts)\n\n // remove duplicate fonts\n fontList = fontList.filter(function (font, position) {\n return fontList.indexOf(font) === position\n })\n\n // we use m or w because these two characters take up the maximum width.\n // And we use a LLi so that the same matching fonts can get separated\n var testString = 'mmmmmmmmmmlli'\n\n // we test using 72px font size, we may use any size. I guess larger the better.\n var testSize = '72px'\n\n var h = document.getElementsByTagName('body')[0]\n\n // div to load spans for the base fonts\n var baseFontsDiv = document.createElement('div')\n\n // div to load spans for the fonts to detect\n var fontsDiv = document.createElement('div')\n\n var defaultWidth = {}\n var defaultHeight = {}\n\n // creates a span where the fonts will be loaded\n var createSpan = function () {\n var s = document.createElement('span')\n /*\n * We need this css as in some weird browser this\n * span elements shows up for a microSec which creates a\n * bad user experience\n */\n s.style.position = 'absolute'\n s.style.left = '-9999px'\n s.style.fontSize = testSize\n\n // css font reset to reset external styles\n s.style.fontStyle = 'normal'\n s.style.fontWeight = 'normal'\n s.style.letterSpacing = 'normal'\n s.style.lineBreak = 'auto'\n s.style.lineHeight = 'normal'\n s.style.textTransform = 'none'\n s.style.textAlign = 'left'\n s.style.textDecoration = 'none'\n s.style.textShadow = 'none'\n s.style.whiteSpace = 'normal'\n s.style.wordBreak = 'normal'\n s.style.wordSpacing = 'normal'\n\n s.innerHTML = testString\n return s\n }\n\n // creates a span and load the font to detect and a base font for fallback\n var createSpanWithFonts = function (fontToDetect, baseFont) {\n var s = createSpan()\n s.style.fontFamily = \"'\" + fontToDetect + \"',\" + baseFont\n return s\n }\n\n // creates spans for the base fonts and adds them to baseFontsDiv\n var initializeBaseFontsSpans = function () {\n var spans = []\n for (var index = 0, length = baseFonts.length; index < length; index++) {\n var s = createSpan()\n s.style.fontFamily = baseFonts[index]\n baseFontsDiv.appendChild(s)\n spans.push(s)\n }\n return spans\n }\n\n // creates spans for the fonts to detect and adds them to fontsDiv\n var initializeFontsSpans = function () {\n var spans = {}\n for (var i = 0, l = fontList.length; i < l; i++) {\n var fontSpans = []\n for (var j = 0, numDefaultFonts = baseFonts.length; j < numDefaultFonts; j++) {\n var s = createSpanWithFonts(fontList[i], baseFonts[j])\n fontsDiv.appendChild(s)\n fontSpans.push(s)\n }\n spans[fontList[i]] = fontSpans // Stores {fontName : [spans for that font]}\n }\n return spans\n }\n\n // checks if a font is available\n var isFontAvailable = function (fontSpans) {\n var detected = false\n for (var i = 0; i < baseFonts.length; i++) {\n detected = (fontSpans[i].offsetWidth !== defaultWidth[baseFonts[i]] || fontSpans[i].offsetHeight !== defaultHeight[baseFonts[i]])\n if (detected) {\n return detected\n }\n }\n return detected\n }\n\n // create spans for base fonts\n var baseFontsSpans = initializeBaseFontsSpans()\n\n // add the spans to the DOM\n h.appendChild(baseFontsDiv)\n\n // get the default width for the three base fonts\n for (var index = 0, length = baseFonts.length; index < length; index++) {\n defaultWidth[baseFonts[index]] = baseFontsSpans[index].offsetWidth // width for the default font\n defaultHeight[baseFonts[index]] = baseFontsSpans[index].offsetHeight // height for the default font\n }\n\n // create spans for fonts to detect\n var fontsSpans = initializeFontsSpans()\n\n // add all the spans to the DOM\n h.appendChild(fontsDiv)\n\n // check available fonts\n var available = []\n for (var i = 0, l = fontList.length; i < l; i++) {\n if (isFontAvailable(fontsSpans[fontList[i]])) {\n available.push(fontList[i])\n }\n }\n\n // remove spans from DOM\n h.removeChild(fontsDiv)\n h.removeChild(baseFontsDiv)\n done(available)\n }\n var pluginsComponent = function (done, options) {\n if (isIE()) {\n if (!options.plugins.excludeIE) {\n done(getIEPlugins(options))\n } else {\n done(options.EXCLUDED)\n }\n } else {\n done(getRegularPlugins(options))\n }\n }\n var getRegularPlugins = function (options) {\n if (navigator.plugins == null) {\n return options.NOT_AVAILABLE\n }\n\n var plugins = []\n // plugins isn't defined in Node envs.\n for (var i = 0, l = navigator.plugins.length; i < l; i++) {\n if (navigator.plugins[i]) { plugins.push(navigator.plugins[i]) }\n }\n\n // sorting plugins only for those user agents, that we know randomize the plugins\n // every time we try to enumerate them\n if (pluginsShouldBeSorted(options)) {\n plugins = plugins.sort(function (a, b) {\n if (a.name > b.name) { return 1 }\n if (a.name < b.name) { return -1 }\n return 0\n })\n }\n return map(plugins, function (p) {\n var mimeTypes = map(p, function (mt) {\n return [mt.type, mt.suffixes]\n })\n return [p.name, p.description, mimeTypes]\n })\n }\n var getIEPlugins = function (options) {\n var result = []\n if ((Object.getOwnPropertyDescriptor && Object.getOwnPropertyDescriptor(window, 'ActiveXObject')) || ('ActiveXObject' in window)) {\n var names = [\n 'AcroPDF.PDF', // Adobe PDF reader 7+\n 'Adodb.Stream',\n 'AgControl.AgControl', // Silverlight\n 'DevalVRXCtrl.DevalVRXCtrl.1',\n 'MacromediaFlashPaper.MacromediaFlashPaper',\n 'Msxml2.DOMDocument',\n 'Msxml2.XMLHTTP',\n 'PDF.PdfCtrl', // Adobe PDF reader 6 and earlier, brrr\n 'QuickTime.QuickTime', // QuickTime\n 'QuickTimeCheckObject.QuickTimeCheck.1',\n 'RealPlayer',\n 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)',\n 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)',\n 'Scripting.Dictionary',\n 'SWCtl.SWCtl', // ShockWave player\n 'Shell.UIHelper',\n 'ShockwaveFlash.ShockwaveFlash', // flash plugin\n 'Skype.Detection',\n 'TDCCtl.TDCCtl',\n 'WMPlayer.OCX', // Windows media player\n 'rmocx.RealPlayer G2 Control',\n 'rmocx.RealPlayer G2 Control.1'\n ]\n // starting to detect plugins in IE\n result = map(names, function (name) {\n try {\n // eslint-disable-next-line no-new\n new window.ActiveXObject(name)\n return name\n } catch (e) {\n return options.ERROR\n }\n })\n } else {\n result.push(options.NOT_AVAILABLE)\n }\n if (navigator.plugins) {\n result = result.concat(getRegularPlugins(options))\n }\n return result\n }\n var pluginsShouldBeSorted = function (options) {\n var should = false\n for (var i = 0, l = options.plugins.sortPluginsFor.length; i < l; i++) {\n var re = options.plugins.sortPluginsFor[i]\n if (navigator.userAgent.match(re)) {\n should = true\n break\n }\n }\n return should\n }\n var touchSupportKey = function (done) {\n done(getTouchSupport())\n }\n var hardwareConcurrencyKey = function (done, options) {\n done(getHardwareConcurrency(options))\n }\n var hasSessionStorage = function (options) {\n try {\n return !!window.sessionStorage\n } catch (e) {\n return options.ERROR // SecurityError when referencing it means it exists\n }\n }\n\n // https://bugzilla.mozilla.org/show_bug.cgi?id=781447\n var hasLocalStorage = function (options) {\n try {\n return !!window.localStorage\n } catch (e) {\n return options.ERROR // SecurityError when referencing it means it exists\n }\n }\n var hasIndexedDB = function (options) {\n try {\n return !!window.indexedDB\n } catch (e) {\n return options.ERROR // SecurityError when referencing it means it exists\n }\n }\n var getHardwareConcurrency = function (options) {\n if (navigator.hardwareConcurrency) {\n return navigator.hardwareConcurrency\n }\n return options.NOT_AVAILABLE\n }\n var getNavigatorCpuClass = function (options) {\n return navigator.cpuClass || options.NOT_AVAILABLE\n }\n var getNavigatorPlatform = function (options) {\n if (navigator.platform) {\n return navigator.platform\n } else {\n return options.NOT_AVAILABLE\n }\n }\n var getDoNotTrack = function (options) {\n if (navigator.doNotTrack) {\n return navigator.doNotTrack\n } else if (navigator.msDoNotTrack) {\n return navigator.msDoNotTrack\n } else if (window.doNotTrack) {\n return window.doNotTrack\n } else {\n return options.NOT_AVAILABLE\n }\n }\n // This is a crude and primitive touch screen detection.\n // It's not possible to currently reliably detect the availability of a touch screen\n // with a JS, without actually subscribing to a touch event.\n // http://www.stucox.com/blog/you-cant-detect-a-touchscreen/\n // https://github.com/Modernizr/Modernizr/issues/548\n // method returns an array of 3 values:\n // maxTouchPoints, the success or failure of creating a TouchEvent,\n // and the availability of the 'ontouchstart' property\n\n var getTouchSupport = function () {\n var maxTouchPoints = 0\n var touchEvent\n if (typeof navigator.maxTouchPoints !== 'undefined') {\n maxTouchPoints = navigator.maxTouchPoints\n } else if (typeof navigator.msMaxTouchPoints !== 'undefined') {\n maxTouchPoints = navigator.msMaxTouchPoints\n }\n try {\n document.createEvent('TouchEvent')\n touchEvent = true\n } catch (_) {\n touchEvent = false\n }\n var touchStart = 'ontouchstart' in window\n return [maxTouchPoints, touchEvent, touchStart]\n }\n // https://www.browserleaks.com/canvas#how-does-it-work\n\n var getCanvasFp = function (options) {\n var result = []\n // Very simple now, need to make it more complex (geo shapes etc)\n var canvas = document.createElement('canvas')\n canvas.width = 2000\n canvas.height = 200\n canvas.style.display = 'inline'\n var ctx = canvas.getContext('2d')\n // detect browser support of canvas winding\n // http://blogs.adobe.com/webplatform/2013/01/30/winding-rules-in-canvas/\n // https://github.com/Modernizr/Modernizr/blob/master/feature-detects/canvas/winding.js\n ctx.rect(0, 0, 10, 10)\n ctx.rect(2, 2, 6, 6)\n result.push('canvas winding:' + ((ctx.isPointInPath(5, 5, 'evenodd') === false) ? 'yes' : 'no'))\n\n ctx.textBaseline = 'alphabetic'\n ctx.fillStyle = '#f60'\n ctx.fillRect(125, 1, 62, 20)\n ctx.fillStyle = '#069'\n // https://github.com/Valve/fingerprintjs2/issues/66\n if (options.dontUseFakeFontInCanvas) {\n ctx.font = '11pt Arial'\n } else {\n ctx.font = '11pt no-real-font-123'\n }\n ctx.fillText('Cwm fjordbank glyphs vext quiz, \\ud83d\\ude03', 2, 15)\n ctx.fillStyle = 'rgba(102, 204, 0, 0.2)'\n ctx.font = '18pt Arial'\n ctx.fillText('Cwm fjordbank glyphs vext quiz, \\ud83d\\ude03', 4, 45)\n\n // canvas blending\n // http://blogs.adobe.com/webplatform/2013/01/28/blending-features-in-canvas/\n // http://jsfiddle.net/NDYV8/16/\n ctx.globalCompositeOperation = 'multiply'\n ctx.fillStyle = 'rgb(255,0,255)'\n ctx.beginPath()\n ctx.arc(50, 50, 50, 0, Math.PI * 2, true)\n ctx.closePath()\n ctx.fill()\n ctx.fillStyle = 'rgb(0,255,255)'\n ctx.beginPath()\n ctx.arc(100, 50, 50, 0, Math.PI * 2, true)\n ctx.closePath()\n ctx.fill()\n ctx.fillStyle = 'rgb(255,255,0)'\n ctx.beginPath()\n ctx.arc(75, 100, 50, 0, Math.PI * 2, true)\n ctx.closePath()\n ctx.fill()\n ctx.fillStyle = 'rgb(255,0,255)'\n // canvas winding\n // http://blogs.adobe.com/webplatform/2013/01/30/winding-rules-in-canvas/\n // http://jsfiddle.net/NDYV8/19/\n ctx.arc(75, 75, 75, 0, Math.PI * 2, true)\n ctx.arc(75, 75, 25, 0, Math.PI * 2, true)\n ctx.fill('evenodd')\n\n if (canvas.toDataURL) { result.push('canvas fp:' + canvas.toDataURL()) }\n return result\n }\n var getWebglFp = function () {\n var gl\n var fa2s = function (fa) {\n gl.clearColor(0.0, 0.0, 0.0, 1.0)\n gl.enable(gl.DEPTH_TEST)\n gl.depthFunc(gl.LEQUAL)\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)\n return '[' + fa[0] + ', ' + fa[1] + ']'\n }\n var maxAnisotropy = function (gl) {\n var ext = gl.getExtension('EXT_texture_filter_anisotropic') || gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic') || gl.getExtension('MOZ_EXT_texture_filter_anisotropic')\n if (ext) {\n var anisotropy = gl.getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT)\n if (anisotropy === 0) {\n anisotropy = 2\n }\n return anisotropy\n } else {\n return null\n }\n }\n\n gl = getWebglCanvas()\n if (!gl) { return null }\n // WebGL fingerprinting is a combination of techniques, found in MaxMind antifraud script & Augur fingerprinting.\n // First it draws a gradient object with shaders and convers the image to the Base64 string.\n // Then it enumerates all WebGL extensions & capabilities and appends them to the Base64 string, resulting in a huge WebGL string, potentially very unique on each device\n // Since iOS supports webgl starting from version 8.1 and 8.1 runs on several graphics chips, the results may be different across ios devices, but we need to verify it.\n var result = []\n var vShaderTemplate = 'attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}'\n var fShaderTemplate = 'precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}'\n var vertexPosBuffer = gl.createBuffer()\n gl.bindBuffer(gl.ARRAY_BUFFER, vertexPosBuffer)\n var vertices = new Float32Array([-0.2, -0.9, 0, 0.4, -0.26, 0, 0, 0.732134444, 0])\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW)\n vertexPosBuffer.itemSize = 3\n vertexPosBuffer.numItems = 3\n var program = gl.createProgram()\n var vshader = gl.createShader(gl.VERTEX_SHADER)\n gl.shaderSource(vshader, vShaderTemplate)\n gl.compileShader(vshader)\n var fshader = gl.createShader(gl.FRAGMENT_SHADER)\n gl.shaderSource(fshader, fShaderTemplate)\n gl.compileShader(fshader)\n gl.attachShader(program, vshader)\n gl.attachShader(program, fshader)\n gl.linkProgram(program)\n gl.useProgram(program)\n program.vertexPosAttrib = gl.getAttribLocation(program, 'attrVertex')\n program.offsetUniform = gl.getUniformLocation(program, 'uniformOffset')\n gl.enableVertexAttribArray(program.vertexPosArray)\n gl.vertexAttribPointer(program.vertexPosAttrib, vertexPosBuffer.itemSize, gl.FLOAT, !1, 0, 0)\n gl.uniform2f(program.offsetUniform, 1, 1)\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, vertexPosBuffer.numItems)\n try {\n result.push(gl.canvas.toDataURL())\n } catch (e) {\n /* .toDataURL may be absent or broken (blocked by extension) */\n }\n result.push('extensions:' + (gl.getSupportedExtensions() || []).join(';'))\n result.push('webgl aliased line width range:' + fa2s(gl.getParameter(gl.ALIASED_LINE_WIDTH_RANGE)))\n result.push('webgl aliased point size range:' + fa2s(gl.getParameter(gl.ALIASED_POINT_SIZE_RANGE)))\n result.push('webgl alpha bits:' + gl.getParameter(gl.ALPHA_BITS))\n result.push('webgl antialiasing:' + (gl.getContextAttributes().antialias ? 'yes' : 'no'))\n result.push('webgl blue bits:' + gl.getParameter(gl.BLUE_BITS))\n result.push('webgl depth bits:' + gl.getParameter(gl.DEPTH_BITS))\n result.push('webgl green bits:' + gl.getParameter(gl.GREEN_BITS))\n result.push('webgl max anisotropy:' + maxAnisotropy(gl))\n result.push('webgl max combined texture image units:' + gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS))\n result.push('webgl max cube map texture size:' + gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE))\n result.push('webgl max fragment uniform vectors:' + gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS))\n result.push('webgl max render buffer size:' + gl.getParameter(gl.MAX_RENDERBUFFER_SIZE))\n result.push('webgl max texture image units:' + gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS))\n result.push('webgl max texture size:' + gl.getParameter(gl.MAX_TEXTURE_SIZE))\n result.push('webgl max varying vectors:' + gl.getParameter(gl.MAX_VARYING_VECTORS))\n result.push('webgl max vertex attribs:' + gl.getParameter(gl.MAX_VERTEX_ATTRIBS))\n result.push('webgl max vertex texture image units:' + gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS))\n result.push('webgl max vertex uniform vectors:' + gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS))\n result.push('webgl max viewport dims:' + fa2s(gl.getParameter(gl.MAX_VIEWPORT_DIMS)))\n result.push('webgl red bits:' + gl.getParameter(gl.RED_BITS))\n result.push('webgl renderer:' + gl.getParameter(gl.RENDERER))\n result.push('webgl shading language version:' + gl.getParameter(gl.SHADING_LANGUAGE_VERSION))\n result.push('webgl stencil bits:' + gl.getParameter(gl.STENCIL_BITS))\n result.push('webgl vendor:' + gl.getParameter(gl.VENDOR))\n result.push('webgl version:' + gl.getParameter(gl.VERSION))\n\n try {\n // Add the unmasked vendor and unmasked renderer if the debug_renderer_info extension is available\n var extensionDebugRendererInfo = gl.getExtension('WEBGL_debug_renderer_info')\n if (extensionDebugRendererInfo) {\n result.push('webgl unmasked vendor:' + gl.getParameter(extensionDebugRendererInfo.UNMASKED_VENDOR_WEBGL))\n result.push('webgl unmasked renderer:' + gl.getParameter(extensionDebugRendererInfo.UNMASKED_RENDERER_WEBGL))\n }\n } catch (e) { /* squelch */ }\n\n if (!gl.getShaderPrecisionFormat) {\n loseWebglContext(gl)\n return result\n }\n\n each(['FLOAT', 'INT'], function (numType) {\n each(['VERTEX', 'FRAGMENT'], function (shader) {\n each(['HIGH', 'MEDIUM', 'LOW'], function (numSize) {\n each(['precision', 'rangeMin', 'rangeMax'], function (key) {\n var format = gl.getShaderPrecisionFormat(gl[shader + '_SHADER'], gl[numSize + '_' + numType])[key]\n if (key !== 'precision') {\n key = 'precision ' + key\n }\n var line = ['webgl ', shader.toLowerCase(), ' shader ', numSize.toLowerCase(), ' ', numType.toLowerCase(), ' ', key, ':', format].join('')\n result.push(line)\n })\n })\n })\n })\n loseWebglContext(gl)\n return result\n }\n var getWebglVendorAndRenderer = function () {\n /* This a subset of the WebGL fingerprint with a lot of entropy, while being reasonably browser-independent */\n try {\n var glContext = getWebglCanvas()\n var extensionDebugRendererInfo = glContext.getExtension('WEBGL_debug_renderer_info')\n var params = glContext.getParameter(extensionDebugRendererInfo.UNMASKED_VENDOR_WEBGL) + '~' + glContext.getParameter(extensionDebugRendererInfo.UNMASKED_RENDERER_WEBGL)\n loseWebglContext(glContext)\n return params\n } catch (e) {\n return null\n }\n }\n var getAdBlock = function () {\n var ads = document.createElement('div')\n ads.innerHTML = ' '\n ads.className = 'adsbox'\n var result = false\n try {\n // body may not exist, that's why we need try/catch\n document.body.appendChild(ads)\n result = document.getElementsByClassName('adsbox')[0].offsetHeight === 0\n document.body.removeChild(ads)\n } catch (e) {\n result = false\n }\n return result\n }\n var getHasLiedLanguages = function () {\n // We check if navigator.language is equal to the first language of navigator.languages\n // navigator.languages is undefined on IE11 (and potentially older IEs)\n if (typeof navigator.languages !== 'undefined') {\n try {\n var firstLanguages = navigator.languages[0].substr(0, 2)\n if (firstLanguages !== navigator.language.substr(0, 2)) {\n return true\n }\n } catch (err) {\n return true\n }\n }\n return false\n }\n var getHasLiedResolution = function () {\n return window.screen.width < window.screen.availWidth || window.screen.height < window.screen.availHeight\n }\n var getHasLiedOs = function () {\n var userAgent = navigator.userAgent.toLowerCase()\n var oscpu = navigator.oscpu\n var platform = navigator.platform.toLowerCase()\n var os\n // We extract the OS from the user agent (respect the order of the if else if statement)\n if (userAgent.indexOf('windows phone') >= 0) {\n os = 'Windows Phone'\n } else if (userAgent.indexOf('windows') >= 0 || userAgent.indexOf('win16') >= 0 || userAgent.indexOf('win32') >= 0 || userAgent.indexOf('win64') >= 0 || userAgent.indexOf('win95') >= 0 || userAgent.indexOf('win98') >= 0 || userAgent.indexOf('winnt') >= 0 || userAgent.indexOf('wow64') >= 0) {\n os = 'Windows'\n } else if (userAgent.indexOf('android') >= 0) {\n os = 'Android'\n } else if (userAgent.indexOf('linux') >= 0 || userAgent.indexOf('cros') >= 0 || userAgent.indexOf('x11') >= 0) {\n os = 'Linux'\n } else if (userAgent.indexOf('iphone') >= 0 || userAgent.indexOf('ipad') >= 0 || userAgent.indexOf('ipod') >= 0 || userAgent.indexOf('crios') >= 0 || userAgent.indexOf('fxios') >= 0) {\n os = 'iOS'\n } else if (userAgent.indexOf('macintosh') >= 0 || userAgent.indexOf('mac_powerpc)') >= 0) {\n os = 'Mac'\n } else {\n os = 'Other'\n }\n // We detect if the person uses a touch device\n var mobileDevice = (('ontouchstart' in window) ||\n (navigator.maxTouchPoints > 0) ||\n (navigator.msMaxTouchPoints > 0))\n\n if (mobileDevice && os !== 'Windows' && os !== 'Windows Phone' && os !== 'Android' && os !== 'iOS' && os !== 'Other' && userAgent.indexOf('cros') === -1) {\n return true\n }\n\n // We compare oscpu with the OS extracted from the UA\n if (typeof oscpu !== 'undefined') {\n oscpu = oscpu.toLowerCase()\n if (oscpu.indexOf('win') >= 0 && os !== 'Windows' && os !== 'Windows Phone') {\n return true\n } else if (oscpu.indexOf('linux') >= 0 && os !== 'Linux' && os !== 'Android') {\n return true\n } else if (oscpu.indexOf('mac') >= 0 && os !== 'Mac' && os !== 'iOS') {\n return true\n } else if ((oscpu.indexOf('win') === -1 && oscpu.indexOf('linux') === -1 && oscpu.indexOf('mac') === -1) !== (os === 'Other')) {\n return true\n }\n }\n\n // We compare platform with the OS extracted from the UA\n if (platform.indexOf('win') >= 0 && os !== 'Windows' && os !== 'Windows Phone') {\n return true\n } else if ((platform.indexOf('linux') >= 0 || platform.indexOf('android') >= 0 || platform.indexOf('pike') >= 0) && os !== 'Linux' && os !== 'Android') {\n return true\n } else if ((platform.indexOf('mac') >= 0 || platform.indexOf('ipad') >= 0 || platform.indexOf('ipod') >= 0 || platform.indexOf('iphone') >= 0) && os !== 'Mac' && os !== 'iOS') {\n return true\n } else if (platform.indexOf('arm') >= 0 && os === 'Windows Phone') {\n return false\n } else if (platform.indexOf('pike') >= 0 && userAgent.indexOf('opera mini') >= 0) {\n return false\n } else {\n var platformIsOther = platform.indexOf('win') < 0 &&\n platform.indexOf('linux') < 0 &&\n platform.indexOf('mac') < 0 &&\n platform.indexOf('iphone') < 0 &&\n platform.indexOf('ipad') < 0 &&\n platform.indexOf('ipod') < 0\n if (platformIsOther !== (os === 'Other')) {\n return true\n }\n }\n\n return typeof navigator.plugins === 'undefined' && os !== 'Windows' && os !== 'Windows Phone'\n }\n var getHasLiedBrowser = function () {\n var userAgent = navigator.userAgent.toLowerCase()\n var productSub = navigator.productSub\n\n // we extract the browser from the user agent (respect the order of the tests)\n var browser\n if (userAgent.indexOf('edge/') >= 0 || userAgent.indexOf('iemobile/') >= 0) {\n // Unreliable, different versions use EdgeHTML, Webkit, Blink, etc.\n return false\n } else if (userAgent.indexOf('opera mini') >= 0) {\n // Unreliable, different modes use Presto, WebView, Webkit, etc.\n return false\n } else if (userAgent.indexOf('firefox/') >= 0) {\n browser = 'Firefox'\n } else if (userAgent.indexOf('opera/') >= 0 || userAgent.indexOf(' opr/') >= 0) {\n browser = 'Opera'\n } else if (userAgent.indexOf('chrome/') >= 0) {\n browser = 'Chrome'\n } else if (userAgent.indexOf('safari/') >= 0) {\n if (userAgent.indexOf('android 1.') >= 0 || userAgent.indexOf('android 2.') >= 0 || userAgent.indexOf('android 3.') >= 0 || userAgent.indexOf('android 4.') >= 0) {\n browser = 'AOSP'\n } else {\n browser = 'Safari'\n }\n } else if (userAgent.indexOf('trident/') >= 0) {\n browser = 'Internet Explorer'\n } else {\n browser = 'Other'\n }\n\n if ((browser === 'Chrome' || browser === 'Safari' || browser === 'Opera') && productSub !== '20030107') {\n return true\n }\n\n // eslint-disable-next-line no-eval\n var tempRes = eval.toString().length\n if (tempRes === 37 && browser !== 'Safari' && browser !== 'Firefox' && browser !== 'Other') {\n return true\n } else if (tempRes === 39 && browser !== 'Internet Explorer' && browser !== 'Other') {\n return true\n } else if (tempRes === 33 && browser !== 'Chrome' && browser !== 'AOSP' && browser !== 'Opera' && browser !== 'Other') {\n return true\n }\n\n // We create an error to see how it is handled\n var errFirefox\n try {\n // eslint-disable-next-line no-throw-literal\n throw 'a'\n } catch (err) {\n try {\n err.toSource()\n errFirefox = true\n } catch (errOfErr) {\n errFirefox = false\n }\n }\n return errFirefox && browser !== 'Firefox' && browser !== 'Other'\n }\n var isCanvasSupported = function () {\n var elem = document.createElement('canvas')\n return !!(elem.getContext && elem.getContext('2d'))\n }\n var isWebGlSupported = function () {\n // code taken from Modernizr\n if (!isCanvasSupported()) {\n return false\n }\n\n var glContext = getWebglCanvas()\n var isSupported = !!window.WebGLRenderingContext && !!glContext\n loseWebglContext(glContext)\n return isSupported\n }\n var isIE = function () {\n if (navigator.appName === 'Microsoft Internet Explorer') {\n return true\n } else if (navigator.appName === 'Netscape' && /Trident/.test(navigator.userAgent)) { // IE 11\n return true\n }\n return false\n }\n var hasSwfObjectLoaded = function () {\n return typeof window.swfobject !== 'undefined'\n }\n var hasMinFlashInstalled = function () {\n return window.swfobject.hasFlashPlayerVersion('9.0.0')\n }\n var addFlashDivNode = function (options) {\n var node = document.createElement('div')\n node.setAttribute('id', options.fonts.swfContainerId)\n document.body.appendChild(node)\n }\n var loadSwfAndDetectFonts = function (done, options) {\n var hiddenCallback = '___fp_swf_loaded'\n window[hiddenCallback] = function (fonts) {\n done(fonts)\n }\n var id = options.fonts.swfContainerId\n addFlashDivNode()\n var flashvars = { onReady: hiddenCallback }\n var flashparams = { allowScriptAccess: 'always', menu: 'false' }\n window.swfobject.embedSWF(options.fonts.swfPath, id, '1', '1', '9.0.0', false, flashvars, flashparams, {})\n }\n var getWebglCanvas = function () {\n var canvas = document.createElement('canvas')\n var gl = null\n try {\n gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl')\n } catch (e) { /* squelch */ }\n if (!gl) { gl = null }\n return gl\n }\n var loseWebglContext = function (context) {\n var loseContextExtension = context.getExtension('WEBGL_lose_context')\n if (loseContextExtension != null) {\n loseContextExtension.loseContext()\n }\n }\n\n var components = [\n { key: 'userAgent', getData: UserAgent },\n { key: 'webdriver', getData: webdriver },\n { key: 'language', getData: languageKey },\n { key: 'colorDepth', getData: colorDepthKey },\n { key: 'deviceMemory', getData: deviceMemoryKey },\n { key: 'pixelRatio', getData: pixelRatioKey },\n { key: 'hardwareConcurrency', getData: hardwareConcurrencyKey },\n { key: 'screenResolution', getData: screenResolutionKey },\n { key: 'availableScreenResolution', getData: availableScreenResolutionKey },\n { key: 'timezoneOffset', getData: timezoneOffset },\n { key: 'timezone', getData: timezone },\n { key: 'sessionStorage', getData: sessionStorageKey },\n { key: 'localStorage', getData: localStorageKey },\n { key: 'indexedDb', getData: indexedDbKey },\n { key: 'addBehavior', getData: addBehaviorKey },\n { key: 'openDatabase', getData: openDatabaseKey },\n { key: 'cpuClass', getData: cpuClassKey },\n { key: 'platform', getData: platformKey },\n { key: 'doNotTrack', getData: doNotTrackKey },\n { key: 'plugins', getData: pluginsComponent },\n { key: 'canvas', getData: canvasKey },\n { key: 'webgl', getData: webglKey },\n { key: 'webglVendorAndRenderer', getData: webglVendorAndRendererKey },\n { key: 'adBlock', getData: adBlockKey },\n { key: 'hasLiedLanguages', getData: hasLiedLanguagesKey },\n { key: 'hasLiedResolution', getData: hasLiedResolutionKey },\n { key: 'hasLiedOs', getData: hasLiedOsKey },\n { key: 'hasLiedBrowser', getData: hasLiedBrowserKey },\n { key: 'touchSupport', getData: touchSupportKey },\n { key: 'fonts', getData: jsFontsKey, pauseBefore: true },\n { key: 'fontsFlash', getData: flashFontsKey, pauseBefore: true },\n { key: 'audio', getData: audioKey },\n { key: 'enumerateDevices', getData: enumerateDevicesKey }\n ]\n\n var Fingerprint2 = function (options) {\n throw new Error(\"'new Fingerprint()' is deprecated, see https://github.com/Valve/fingerprintjs2#upgrade-guide-from-182-to-200\")\n }\n\n Fingerprint2.get = function (options, callback) {\n if (!callback) {\n callback = options\n options = {}\n } else if (!options) {\n options = {}\n }\n extendSoft(options, defaultOptions)\n options.components = options.extraComponents.concat(components)\n\n var keys = {\n data: [],\n addPreprocessedComponent: function (key, value) {\n if (typeof options.preprocessor === 'function') {\n value = options.preprocessor(key, value)\n }\n keys.data.push({ key: key, value: value })\n }\n }\n\n var i = -1\n var chainComponents = function (alreadyWaited) {\n i += 1\n if (i >= options.components.length) { // on finish\n callback(keys.data)\n return\n }\n var component = options.components[i]\n\n if (options.excludes[component.key]) {\n chainComponents(false) // skip\n return\n }\n\n if (!alreadyWaited && component.pauseBefore) {\n i -= 1\n setTimeout(function () {\n chainComponents(true)\n }, 1)\n return\n }\n\n try {\n component.getData(function (value) {\n keys.addPreprocessedComponent(component.key, value)\n chainComponents(false)\n }, options)\n } catch (error) {\n // main body error\n keys.addPreprocessedComponent(component.key, String(error))\n chainComponents(false)\n }\n }\n\n chainComponents(false)\n }\n Fingerprint2.VERSION = '2.1.2'\n return Fingerprint2\n};","import initFingerprint2 from \"../vendor/IRS_fingerprint2_2_1_2\";\nimport initCryptoJS from \"../vendor/sha1\";\n\nexport function getEfileSecurityInformation(formName) {\n let Fingerprint2 = initFingerprint2();\n let CryptoJS = initCryptoJS();\n Fingerprint2.get(function(components) {\n let concatenated = components.map(function (pair) { return pair.value }).join('###')\n let concatenatedAndHashed = CryptoJS.SHA1(concatenated).toString().toUpperCase();\n let timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n let now = new Date();\n let timezoneOffset = now.getTimezoneOffset();\n let timezoneOffsetString = timezoneOffset < 0 ? (timezoneOffset.toString()) : (\"+\" + timezoneOffset);\n let securityAttributes = {\n device_id: concatenatedAndHashed,\n user_agent: navigator.userAgent,\n browser_language: navigator.language,\n platform: navigator.platform,\n client_system_time: now,\n timezone_offset: timezoneOffsetString,\n timezone: timezone,\n };\n\n for (const attr in securityAttributes) {\n let hiddenField = document.createElement('input');\n hiddenField.setAttribute('type', 'hidden')\n hiddenField.setAttribute('name', formName + '[' + attr + ']')\n hiddenField.value = securityAttributes[attr];\n\n document.querySelector('main form').appendChild(hiddenField);\n }\n });\n}\n\n\n","/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\nexport default function init() {\n var CryptoJS= function(e,m){var p={},j=p.lib={},l=function(){},f=j.Base={extend:function(a){l.prototype=this;var c=new l;a&&c.mixIn(a);c.hasOwnProperty(\"init\")||(c.init=function(){c.$super.init.apply(this,arguments)});c.init.prototype=c;c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty(\"toString\")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}},\n n=j.WordArray=f.extend({init:function(a,c){a=this.words=a||[];this.sigBytes=c!=m?c:4*a.length},toString:function(a){return(a||h).stringify(this)},concat:function(a){var c=this.words,q=a.words,d=this.sigBytes;a=a.sigBytes;this.clamp();if(d%4)for(var b=0;b>>2]|=(q[b>>>2]>>>24-8*(b%4)&255)<<24-8*((d+b)%4);else if(65535>>2]=q[b>>>2];else c.push.apply(c,q);this.sigBytes+=a;return this},clamp:function(){var a=this.words,c=this.sigBytes;a[c>>>2]&=4294967295<<\n 32-8*(c%4);a.length=e.ceil(c/4)},clone:function(){var a=f.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var c=[],b=0;b>>2]>>>24-8*(d%4)&255;b.push((f>>>4).toString(16));b.push((f&15).toString(16))}return b.join(\"\")},parse:function(a){for(var c=a.length,b=[],d=0;d>>3]|=parseInt(a.substr(d,\n 2),16)<<24-4*(d%8);return new n.init(b,c/2)}},g=b.Latin1={stringify:function(a){var c=a.words;a=a.sigBytes;for(var b=[],d=0;d>>2]>>>24-8*(d%4)&255));return b.join(\"\")},parse:function(a){for(var c=a.length,b=[],d=0;d>>2]|=(a.charCodeAt(d)&255)<<24-8*(d%4);return new n.init(b,c)}},r=b.Utf8={stringify:function(a){try{return decodeURIComponent(escape(g.stringify(a)))}catch(c){throw Error(\"Malformed UTF-8 data\");}},parse:function(a){return g.parse(unescape(encodeURIComponent(a)))}},\n k=j.BufferedBlockAlgorithm=f.extend({reset:function(){this._data=new n.init;this._nDataBytes=0},_append:function(a){\"string\"==typeof a&&(a=r.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var c=this._data,b=c.words,d=c.sigBytes,f=this.blockSize,h=d/(4*f),h=a?e.ceil(h):e.max((h|0)-this._minBufferSize,0);a=h*f;d=e.min(4*a,d);if(a){for(var g=0;ga;a++){if(16>a)l[a]=f[n+a]|0;else{var c=l[a-3]^l[a-8]^l[a-14]^l[a-16];l[a]=c<<1|c>>>31}c=(h<<5|h>>>27)+j+l[a];c=20>a?c+((g&e|~g&k)+1518500249):40>a?c+((g^e^k)+1859775393):60>a?c+((g&e|g&k|e&k)-1894007588):c+((g^e^\n k)-899497514);j=k;k=e;e=g<<30|g>>>2;g=h;h=c}b[0]=b[0]+h|0;b[1]=b[1]+g|0;b[2]=b[2]+e|0;b[3]=b[3]+k|0;b[4]=b[4]+j|0},_doFinalize:function(){var f=this._data,e=f.words,b=8*this._nDataBytes,h=8*f.sigBytes;e[h>>>5]|=128<<24-h%32;e[(h+64>>>9<<4)+14]=Math.floor(b/4294967296);e[(h+64>>>9<<4)+15]=b;f.sigBytes=4*e.length;this._process();return this._hash},clone:function(){var e=j.clone.call(this);e._hash=this._hash.clone();return e}});e.SHA1=j._createHelper(m);e.HmacSHA1=j._createHmacHelper(m)})();\n return CryptoJS\n}\n\n","export function limitTextMessageLength() {\n const textMessageInput = document.querySelector(\"textarea.text-message-body\");\n const component = document.querySelector('.text-message-length-limiter');\n const textMessageFormButton = textMessageInput.form.querySelector(\"input[type='submit']\");\n const messageLengthDisableRadioButton = document.querySelector(\".message-length-limiter-disable\");\n\n setLengthProperties(textMessageInput.value.length, component, textMessageFormButton, messageLengthDisableRadioButton);\n textMessageInput.addEventListener('input', function() {\n setLengthProperties(textMessageInput.value.length, component, textMessageFormButton, messageLengthDisableRadioButton);\n });\n if (messageLengthDisableRadioButton != null) {\n messageLengthDisableRadioButton.closest('radiogroup').addEventListener('change', function() {\n setLengthProperties(textMessageInput.value.length, component, textMessageFormButton, messageLengthDisableRadioButton);\n });\n };\n}\n\nfunction setLengthProperties(length, component, textMessageFormButton, disableRadioButton) {\n if (disableRadioButton != null && disableRadioButton.checked == true) {\n component.classList.add('hidden');\n textMessageFormButton.disabled = false;\n } else {\n component.classList.remove('hidden');\n const lengthElement = component.querySelector('[data-target=\"length-counter\"]');\n const errorMessageElement = component.querySelector('[data-target=\"error-message\"]');\n lengthElement.textContent = length;\n if (length >= 900) {\n component.classList.add('text--error');\n errorMessageElement.classList.remove(\"hidden\");\n textMessageFormButton.disabled = true;\n } else {\n component.classList.remove('text--error');\n errorMessageElement.classList.add(\"hidden\");\n textMessageFormButton.disabled = false;\n }\n }\n}\n","import \"../vendor/navigator.sendbeacon.min.js\";\n\n\nconst MixpanelEventTracking = (function () {\n const addClickTrackingToOutboundLinks = function () {\n const links = document.querySelectorAll(\"a[href]:not([href^='/']):not([href^='#']):not([href^='\" + location.protocol + \"//\" + location.host + \"'])\");\n links.forEach((link) => {\n link.dataset.trackClick = \"outbound_link\";\n link.dataset.trackClickHref = \"true\";\n })\n }\n const listenForTrackedClicks = function () {\n document.querySelectorAll(\"a[data-track-click]\").forEach((link) => {\n link.addEventListener(\"click\", function (e, options) {\n const pageData = document.querySelector(\"#mixpanelData\").dataset;\n const clickedElement = e.target;\n const eventName = \"click_\" + clickedElement.dataset.trackClick;\n\n const eventData = new FormData();\n\n for (const key in clickedElement.dataset) {\n const attributePrefix = \"trackAttribute\";\n\n if (key.startsWith(attributePrefix)) {\n const snakeCasedPropertyName = key.substring(attributePrefix.length)\n .split(/(?=[A-Z])/).join('_').toLowerCase();\n eventData.append(\"event[data][\" + snakeCasedPropertyName + \"]\", clickedElement.dataset[key]);\n }\n }\n\n eventData.append(\"event[event_name]\", eventName);\n eventData.append(\"event[controller_action]\", pageData.controllerAction);\n eventData.append(\"event[full_path]\", pageData.fullPath);\n eventData.append(\"event[data][call_to_action]\", (clickedElement.innerText || \"\").trim());\n if (clickedElement.dataset.trackClickHref === \"true\") {\n eventData.append(\"event[data][href]\", clickedElement.href);\n }\n eventData.append(Rails.csrfParam(), Rails.csrfToken());\n if (pageData.sendMixpanelBeacon) {\n navigator.sendBeacon(\"/ajax_mixpanel_events\", eventData);\n }\n });\n })\n };\n\n return {\n listenForTrackedClicks,\n addClickTrackingToOutboundLinks\n }\n }\n)\n();\n\nexport default MixpanelEventTracking;\n","export default class IntercomBehavior {\n static openIfAskedFor() {\n if (window.location.hash.includes(\"open_intercom\")) {\n window.Intercom('show');\n }\n }\n}\n","import consumer from \"../channels/consumer\";\nimport { callback, getChannelName } from \"../channels/client_channel\";\nimport { initNestedAttributesListeners } from \"../lib/nested_attributes\";\nimport helpers from \"../helpers\";\nimport { initTakeActionOnChangeHandlers } from \"../lib/dynamic_take_action_changes\";\nimport { initMetricsTableSortAndFilter } from \"../lib/metrics_table_sort\";\nimport { documentSubmittingIndicator } from \"../lib/document_submitting_indicator\";\nimport { initStateRoutingsListeners } from \"../lib/state_routings\";\nimport tooltip from \"../components/tooltip\";\nimport { initTaggableNote, initMultiSelectVitaPartner, initMultiSelectState, initSelectVitaPartner } from '../lib/tagging';\nimport { initBulkAction } from \"../lib/bulk_action\";\nimport { getEfileSecurityInformation } from \"../lib/efile_security_information\";\nimport { initTINTypeSelector } from \"../lib/tin_type_selector\";\nimport { addTargetBlankToLinks } from \"../lib/action_text_target_blank\";\nimport { limitTextMessageLength } from \"../lib/text_message_length_limiter\";\nimport { initServiceComparisonComponent } from \"../lib/service_comparison_component\";\nimport { fetchEfileStateCounts } from \"../lib/fetch_efile_state_counts\";\nimport { fetchStateFileEfileStateCounts } from \"../lib/fetch_statefile_efile_state_counts\";\nimport ClientMenuComponent from \"../components/ClientMenuComponent\";\nimport WarningForSelectComponent from \"../components/WarningForSelectComponent\";\nimport MixpanelEventTracking from \"../lib/mixpanel_event_tracking\";\nimport IntercomBehavior from \"../lib/intercom_behavior\";\nconst Listeners = (function(){\n return {\n init: function () {\n window.addEventListener(\"load\", function() {\n IntercomBehavior.openIfAskedFor();\n MixpanelEventTracking.listenForTrackedClicks();\n const { controllerAction } = document.querySelector(\"#mixpanelData\")?.dataset || {};\n ClientMenuComponent();\n WarningForSelectComponent();\n\n documentSubmittingIndicator.init(); // extend styling on honeyCrisp's default ajax upload functionality.\n\n if (controllerAction == \"Hub::Users::InvitationsController#edit\") {\n helpers.setDefaultTimezone();\n }\n\n if (controllerAction == \"Hub::MessagesController#index\") {\n consumer.subscriptions.create(getChannelName(window.location.href), callback);\n }\n\n if ([\"Hub::ClientsController#edit_take_action\", \"Hub::ClientsController#update_take_action\"].includes(controllerAction)) {\n initTakeActionOnChangeHandlers(\"take_action\");\n }\n\n if ([\"Hub::BulkActions::ChangeAssigneeAndStatusController#edit\", \"Hub::BulkActions::ChangeAssigneeAndStatusController#update\"].includes(controllerAction)) {\n initTakeActionOnChangeHandlers(\"bulk_action\");\n }\n\n if([\"Hub::StateRoutingsController#edit\", \"Hub::StateRoutingsController#update\"].includes(controllerAction)) {\n initStateRoutingsListeners();\n }\n\n if(document.querySelector(\"form[data-efile-security-information='true']\")) {\n const form = document.querySelector(\"form[data-efile-security-information='true']\");\n getEfileSecurityInformation(form.dataset.formName);\n }\n\n if(controllerAction == \"Hub::EfileSubmissionsController#index\") {\n fetchEfileStateCounts();\n }\n\n if(controllerAction == \"Hub::StateFile::EfileSubmissionsController#index\") {\n fetchStateFileEfileStateCounts();\n }\n\n if (document.querySelector('.taggable-note')) {\n initTaggableNote();\n }\n if (document.querySelector('.multi-select-vita-partner')) {\n initMultiSelectVitaPartner();\n }\n if (document.querySelector('.select-vita-partner')) {\n initSelectVitaPartner();\n }\n if (document.querySelector('.multi-select-state')) {\n initMultiSelectState();\n }\n if (document.querySelector('.trix-content')) {\n addTargetBlankToLinks();\n }\n\n if (window.TINTypeSelector && window.SSNEmploymentCheckboxSelector) {\n initTINTypeSelector();\n }\n\n if (document.querySelector('textarea.text-message-body')) {\n limitTextMessageLength();\n }\n initMetricsTableSortAndFilter();\n // enables the link_to_add_fields and link_to_remove_fields helper methods to work globally\n initNestedAttributesListeners();\n\n tooltip.init();\n\n if (document.querySelector('div.comparison-component')) {\n initServiceComparisonComponent();\n }\n\n if (\n document.querySelector('#take-action-footer') &&\n document.querySelector('#bulk-edit-select-all') &&\n document.querySelector('#take-action-form')\n ) {\n initBulkAction();\n }\n });\n }\n }\n})();\n\nexport default Listeners;\n","export default function ClientMenuComponent() {\n const menu = document.querySelector('[data-component=\"ClientMenuComponent\"]');\n const trigger = document.querySelector('[data-component=\"ClientMenuTrigger\"]');\n const closer = document.querySelector('[data-component=\"ClientMenuCloser\"]')\n const overlay = document.querySelector('[data-component=\"ClientMenuOverlay\"]')\n toggleMenu(menu, trigger, closer, overlay);\n}\n\nfunction toggleMenu(menu, trigger, closer, overlay) {\n if (trigger) {\n trigger.addEventListener(\"click\", () => {\n menu.classList.add(\"open\");\n trigger.classList.add(\"open\");\n overlay.classList.add(\"open\");\n closer.classList.add(\"open\");\n });\n }\n\n if (closer) {\n closer.addEventListener(\"click\", () => {\n menu.classList.remove(\"open\");\n closer.classList.remove(\"open\");\n trigger.classList.remove(\"open\");\n overlay.classList.remove(\"open\");\n });\n }\n}\n","\nexport default function WarningForSelectComponent() {\n const warningElements = document.querySelectorAll(\"[data-warning-for-select]\");\n warningElements.forEach((warningElement) => {\n const selectElement = document.getElementById(warningElement.dataset.warningForSelect);\n const permittedValues = JSON.parse(warningElement.dataset.permitted);\n\n function render() {\n const value = selectElement.value;\n if (permittedValues.includes(value)) {\n selectElement.classList.add(\"input-warning\");\n $(warningElement).show('fast');\n } else {\n selectElement.classList.remove(\"input-warning\");\n $(warningElement).hide('fast');\n }\n }\n selectElement.addEventListener(\"change\", render);\n render();\n });\n}\n","export function fetchEfileStateCounts() {\n $.rails.ajax({\n url: \"/hub/efile/state-counts\",\n type: \"get\",\n })\n}","export function fetchStateFileEfileStateCounts() {\n $.rails.ajax({\n url: \"efile_submissions/state-counts\",\n type: \"get\",\n })\n}","import Tagify from '@yaireo/tagify'\nimport { removeMentionedId, addMentionedId } from \"./callbacks\";\nimport html from 'html-template-tag';\n\nexport function initTaggableNote() {\n const input = document.querySelector('.taggable-note');\n\n const whitelist = window.taggableItems.map((i) => {\n if (!i.value) { i.value = i.id }; // whitelist items MUST have a value property\n return i;\n });\n\n new Tagify(input, {\n mode: 'mix', // <-- Enable mixed-content\n pattern: /@/, // <-- Text starting with @ (if single, String can be used here)\n tagTextProp: 'name_with_role', // <-- defines which attr is used as the tag display value\n // Array for initial interpolation, which allows only these tags to be used\n whitelist: whitelist,\n enforceWhitelist: true,\n dropdown : {\n enabled: 0,\n position: 'text', // <-- render the suggestions list next to the typed text\n mapValueTo: 'name_with_role_and_entity', // <-- defines which attr is used to display dropdown items\n highlightFirst: true // automatically highlights first suggestion item in the dropdown\n },\n callbacks: {\n add: addMentionedId,\n remove: removeMentionedId\n }\n });\n}\n\nexport function initMultiSelectVitaPartner() {\n const input = document.querySelector('.multi-select-vita-partner');\n\n new Tagify(input, {\n tagTextProp: 'name', // <-- defines which attr is used as the tag display value\n // Array for initial interpolation, which allows only these tags to be used\n whitelist: window.taggableItems,\n enforceWhitelist: true,\n dropdown : {\n classname: \"multi-select-dropdown\",\n enabled: 0,\n mapValueTo: 'name', // <-- defines which attr is used to display dropdown items\n searchKeys: ['name'], // <-- defines the attr used to search for in dropdown\n highlightFirst: true, // <-- automatically highlights first suggestion item in the dropdown\n closeOnSelect: false, // <-- keep dropdown open after selection\n maxItems: window.taggableItems.length, // <-- render all available items for the dropdown\n position: 'input', // <-- render the suggestions list under the input element\n },\n templates: {\n dropdownItem: function(item){\n // using html`` below b/c item.parentName must be treated as plain text not raw HTML\n return `
\n
${html`${item.parentName || ''}`}
\n
${html`${item.value}`}
\n
`\n },\n }\n });\n\n input.addEventListener(\"change\", (event) => {\n let { value } = event.target\n if (value) {\n value = JSON.stringify(JSON.parse(event.target.value).map(v => v.id))\n }\n document.querySelector(\"#vita_partners\").value = value\n })\n}\n\nexport function initSelectVitaPartner() {\n const input = document.querySelector('.select-vita-partner');\n\n new Tagify(input, {\n tagTextProp: 'name', // <-- defines which attr is used as the tag display value\n // Array for initial interpolation, which allows only these tags to be used\n whitelist: window.taggableItems,\n enforceWhitelist: true,\n mode : \"select\",\n dropdown : {\n classname: \"multi-select-dropdown\",\n enabled: 0,\n mapValueTo: 'name', // <-- defines which attr is used to display dropdown items\n searchKeys: ['name'], // <-- defines the attr used to search for in dropdown\n highlightFirst: true, // <-- automatically highlights first suggestion item in the dropdown\n closeOnSelect: true, // <-- close dropdown open after selection\n maxItems: window.taggableItems.length, // <-- render all available items for the dropdown\n position: 'input', // <-- render the suggestions list under the input element\n },\n templates: {\n dropdownItem: function(item){\n // using html`` below b/c item.parentName must be treated as plain text not raw HTML\n return `
\n
${html`${item.parentName || ''}`}
\n
${html`${item.value}`}
\n
`\n },\n }\n });\n}\n\nexport function initMultiSelectState() {\n const input = document.querySelector('.multi-select-state');\n new Tagify(input, {\n tagTextProp: 'name', // <-- defines which attr is used as the tag display value\n // Array for initial interpolation, which allows only these tags to be used\n whitelist: window.taggableItems,\n enforceWhitelist: true,\n dropdown : {\n classname: \"multi-select-dropdown\",\n enabled: 0,\n mapValueTo: 'name', // <-- defines which attr is used to display dropdown items\n searchKeys: ['name', 'abbreviation'], // <-- defines the attr used to search for in dropdown\n highlightFirst: true, // <-- automatically highlights first suggestion item in the dropdown\n closeOnSelect: false, // <-- keep dropdown open after selection\n maxItems: window.taggableItems.length, // <-- render all available items for the dropdown\n position: 'text', // <-- render the suggestions list next to the text carat\n },\n originalInputValueFormat: valuesArr => valuesArr.map(item => item.value).join(','), // <-- specifies value format\n });\n\n // For the organizations edit page, hide/show coalition input field & state input field.\n const stateSelectVisibilityToggle = document.querySelector('.toggle-multi-select-state-visibility');\n const stateSelectWrapper = document.querySelector('.state-select');\n const coalitionSelectWrapper = document.querySelector('.coalition-select-wrapper');\n if (stateSelectVisibilityToggle !== null) {\n if (stateSelectVisibilityToggle.checked) {\n stateSelectWrapper.classList.toggle(\"hidden\");\n coalitionSelectWrapper.classList.toggle(\"hidden\");\n }\n stateSelectVisibilityToggle.addEventListener(\"click\", (event) => {\n stateSelectWrapper.classList.toggle(\"hidden\");\n coalitionSelectWrapper.classList.toggle(\"hidden\");\n })\n }\n}\n","export function addTargetBlankToLinks() {\n document.querySelectorAll('.trix-content a').forEach(function(link) {\n if (link.host !== window.location.host) {\n link.target = \"_blank\"\n link.rel = \"noopener nofollow\"\n }\n });\n}","export function initTINTypeSelector() {\n const TINTypeSelector = window.TINTypeSelector;\n const SSNEmploymentCheckboxSelector = window.SSNEmploymentCheckboxSelector\n toggleSSNEmploymentCheckbox(TINTypeSelector);\n\n TINTypeSelector.addEventListener(\"change\", function(e) {\n toggleSSNEmploymentCheckbox(e.target);\n });\n\n function toggleSSNEmploymentCheckbox(selector) {\n const no_employment_checkbox = SSNEmploymentCheckboxSelector;\n if(selector.value === \"ssn\") {\n no_employment_checkbox.style.display = \"block\";\n } else {\n no_employment_checkbox.style.display = \"none\";\n }\n }\n}\n","import stickybits from 'stickybits';\n\nexport function initServiceComparisonComponent() {\n stickybits(\".mobile-sticky-header\");\n}","import \"core-js/stable\"\nimport \"regenerator-runtime/runtime\"\nimport RailsUJS from \"@rails/ujs\";\nimport * as ActiveStorage from \"@rails/activestorage\";\nimport \"trix\"\nimport \"@rails/actiontext\"\nimport \"@yaireo/tagify/dist/tagify.css\";\nimport \"jquery-ui\";\nimport Listeners from \"../listeners\";\n\n// Setting globally isn't very webpack-y,\n// but we have things (views, test runner) in the app that require jquery on the window object.\nwindow.jQuery = $;\nwindow.$ = $;\n\nRailsUJS.start();\nActiveStorage.start();\n\nimport \"../lib/honeycrisp\";\n\n\nListeners.init();\n\nimport jMaskGlobals from \"jquery-mask-plugin\";\njMaskGlobals.watchDataMask = true;\n","/*\n * MIT license\n *\n * Copyright (C) 2015 Miguel Mota\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n * of the Software, and to permit persons to whom the Software is furnished to do\n * so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n*/\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e():\"function\"==typeof define&&define.amd?define(e):e()}(0,function(){\"use strict\";function t(e){return(t=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(e)}var e=function(t){return\"string\"==typeof t},n=function(t){return t instanceof Blob};(function(){\"navigator\"in this||(this.navigator={});\"function\"!=typeof this.navigator.sendBeacon&&(this.navigator.sendBeacon=function(t,o){var i=this.event&&this.event.type,r=\"unload\"===i||\"beforeunload\"===i,f=\"XMLHttpRequest\"in this?new XMLHttpRequest:new ActiveXObject(\"Microsoft.XMLHTTP\");f.open(\"POST\",t,!r),f.withCredentials=!0,f.setRequestHeader(\"Accept\",\"*/*\"),e(o)?(f.setRequestHeader(\"Content-Type\",\"text/plain;charset=UTF-8\"),f.responseType=\"text\"):n(o)&&o.type&&f.setRequestHeader(\"Content-Type\",o.type);try{f.send(o)}catch(t){return!1}return!0}.bind(this))}).call(\"object\"===(\"undefined\"==typeof window?\"undefined\":t(window))?window:{})});\n"],"names":["TOOLTIP_CLASS","TOOLTIP_BODY_CLASS","SET_CLASS","VISIBLE_CLASS","addListenerMulti","element","eventNames","listener","events","split","i","iLen","length","addEventListener","showToolTip","tooltipBody","tooltipTrigger","position","wrapper","setAttribute","classList","add","tooltipWidth","offsetWidth","tooltipHeight","offsetHeight","offsetForTopMargin","parseInt","window","getComputedStyle","getPropertyValue","offsetForBottomMargin","offsetForTopPadding","offsetForBottomPadding","offsetForTooltipBodyHeight","leftOffset","offsetLeft","toolTipBodyWidth","adjustHorizontalCenter","adjustToEdgeX","adjustToEdgeY","setPositionClass","setPos","remove","e","style","marginLeft","marginBottom","marginTop","positionBottom","bottom","positionRight","positionLeft","setTimeout","tooltip","init","select","selector","context","value","nodeType","document","selection","querySelectorAll","Array","prototype","slice","call","forEach","tooltipContent","tooltipID","Math","floor","random","getAttribute","createElement","additionalClasses","parentNode","insertBefore","appendChild","classname","innerHTML","createTextNode","setUpAttributes","hideToolTip","module","exports","helpers","setDefaultTimezone","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","getElementById","fUQ","rv","ac","incrementer","increment","input","max","$","attr","val","undefined","decrement","min","each","index","addButton","find","subtractButton","click","radioSelector","button","this","is","addClass","closest","siblings","children","removeClass","checkboxSelector","followUpQuestion","question","self","$input","followUpSelector","test","show","hide","update","$container","revealer","revealButton","link","preventDefault","toggleClass","immediateUpload","$formInputs","formInput","$formInput","$form","requiredSelectId","data","$select","handleSelectChange","event","hasRequiredValue","disabled","change","id","submit","dataUploading","replaceWith","inputGroupSelector","parent","focusin","focusout","noneOfTheAbove","$noneCheckbox","$otherCheckboxes","not","prop","$enclosingFollowUp","showMore","showmore","accordion","selectBodyBottomMargin","$compactFooter","css","formatNumericInput","characterMap","maxDigits","handler","_e","unformattedValue","replace","substring","formattedStr","specialChar","push","charAt","join","autoformatEventHandler","_index","on","numericFormatters","ready","createConsumer","callback","connected","console","log","disconnected","received","newContent","querySelector","initNestedAttributesListeners","prev","target","removeAssociation","time","Date","getTime","regexp","RegExp","fields_html","append","before","appendAssociation","initTakeActionOnChangeHandlers","formName","pathname","location","searchParams","URLSearchParams","taxReturnId","selectedStatus","selectedAssignee","locale","set","toString","searchParamsString","sort","rowSelector","direction","sortableParamCallback","stillSwitching","willSwitch","rows","x","y","toLowerCase","initSortableColumn","sortableElementsSelector","headerSelector","updatePercentages","sectionSelector","breachTypeSelector","denominator","percentage","percentageText","percentageSelector","breachCount","totalCount","isNaN","toFixed","isFinite","text","determineBreachPercentages","first","initMetricsTableSortAndFilter","totalCapacityCount","totalActiveCount","unansweredCommunicationCount","capacityCount","activeClientCount","setupOrgLevelCounts","values","filter","v","every","elements","removeAttr","hasClass","row","calc","documentSubmittingIndicator","_event","body","updateRoutingPercentage","sum","Number","addMentionedId","trackingInput","taggableTrackingSelector","ids","includes","detail","removeMentionedId","findIndex","splice","getCheckedNum","form","el","checked","changeElDisplay","property","display","handleCheckboxChange","formEl","takeActionCountEl","takeActionFooterEl","num","textContent","String","isArray","obj","Object","defaultOptions","preprocessor","audio","timeout","excludeIOS11","fonts","swfContainerId","swfPath","userDefinedFonts","extendedJsFonts","screen","detectScreenOrientation","plugins","sortPluginsFor","excludeIE","extraComponents","excludes","NOT_AVAILABLE","ERROR","EXCLUDED","iterator","l","key","hasOwnProperty","map","results","list","isEnumerateDevicesSupported","navigator","mediaDevices","enumerateDevices","getScreenResolution","options","resolution","width","height","reverse","getAvailableScreenResolution","availWidth","availHeight","available","getRegularPlugins","pluginsShouldBeSorted","a","b","name","p","mimeTypes","mt","type","suffixes","description","getIEPlugins","result","getOwnPropertyDescriptor","ActiveXObject","concat","should","re","userAgent","match","hasSessionStorage","sessionStorage","hasLocalStorage","localStorage","hasIndexedDB","indexedDB","getHardwareConcurrency","hardwareConcurrency","getNavigatorCpuClass","cpuClass","getNavigatorPlatform","platform","getDoNotTrack","doNotTrack","msDoNotTrack","getTouchSupport","touchEvent","maxTouchPoints","msMaxTouchPoints","createEvent","_","getCanvasFp","canvas","ctx","getContext","rect","isPointInPath","textBaseline","fillStyle","fillRect","dontUseFakeFontInCanvas","font","fillText","globalCompositeOperation","beginPath","arc","PI","closePath","fill","toDataURL","getWebglFp","gl","fa2s","fa","clearColor","enable","DEPTH_TEST","depthFunc","LEQUAL","clear","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","getWebglCanvas","vertexPosBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","vertices","Float32Array","bufferData","STATIC_DRAW","itemSize","numItems","program","createProgram","vshader","createShader","VERTEX_SHADER","shaderSource","compileShader","fshader","FRAGMENT_SHADER","attachShader","linkProgram","useProgram","vertexPosAttrib","getAttribLocation","offsetUniform","getUniformLocation","enableVertexAttribArray","vertexPosArray","vertexAttribPointer","FLOAT","uniform2f","drawArrays","TRIANGLE_STRIP","getSupportedExtensions","getParameter","ALIASED_LINE_WIDTH_RANGE","ALIASED_POINT_SIZE_RANGE","ALPHA_BITS","getContextAttributes","antialias","BLUE_BITS","DEPTH_BITS","GREEN_BITS","ext","getExtension","anisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT","maxAnisotropy","MAX_COMBINED_TEXTURE_IMAGE_UNITS","MAX_CUBE_MAP_TEXTURE_SIZE","MAX_FRAGMENT_UNIFORM_VECTORS","MAX_RENDERBUFFER_SIZE","MAX_TEXTURE_IMAGE_UNITS","MAX_TEXTURE_SIZE","MAX_VARYING_VECTORS","MAX_VERTEX_ATTRIBS","MAX_VERTEX_TEXTURE_IMAGE_UNITS","MAX_VERTEX_UNIFORM_VECTORS","MAX_VIEWPORT_DIMS","RED_BITS","RENDERER","SHADING_LANGUAGE_VERSION","STENCIL_BITS","VENDOR","VERSION","extensionDebugRendererInfo","UNMASKED_VENDOR_WEBGL","UNMASKED_RENDERER_WEBGL","getShaderPrecisionFormat","numType","shader","numSize","format","line","loseWebglContext","getWebglVendorAndRenderer","glContext","params","getAdBlock","ads","className","getElementsByClassName","removeChild","getHasLiedLanguages","languages","substr","language","err","getHasLiedResolution","getHasLiedOs","os","oscpu","indexOf","getHasLiedBrowser","browser","productSub","errFirefox","tempRes","eval","toSource","errOfErr","isCanvasSupported","elem","isWebGlSupported","isSupported","WebGLRenderingContext","isIE","appName","hasSwfObjectLoaded","swfobject","hasMinFlashInstalled","hasFlashPlayerVersion","loadSwfAndDetectFonts","done","hiddenCallback","node","addFlashDivNode","flashvars","onReady","embedSWF","allowScriptAccess","menu","loseContextExtension","loseContext","components","getData","webdriver","userLanguage","browserLanguage","systemLanguage","colorDepth","deviceMemory","devicePixelRatio","getTimezoneOffset","addBehavior","openDatabase","baseFonts","fontList","h","getElementsByTagName","baseFontsDiv","fontsDiv","defaultWidth","defaultHeight","createSpan","s","left","fontSize","fontStyle","fontWeight","letterSpacing","lineBreak","lineHeight","textTransform","textAlign","textDecoration","textShadow","whiteSpace","wordBreak","wordSpacing","createSpanWithFonts","fontToDetect","baseFont","fontFamily","isFontAvailable","fontSpans","detected","baseFontsSpans","spans","initializeBaseFontsSpans","fontsSpans","j","numDefaultFonts","initializeFontsSpans","pauseBefore","audioOptions","AudioContext","OfflineAudioContext","webkitOfflineAudioContext","oscillator","createOscillator","frequency","setValueAtTime","currentTime","compressor","createDynamicsCompressor","item","connect","destination","start","startRendering","audioTimeoutId","warn","oncomplete","fingerprint","clearTimeout","renderedBuffer","getChannelData","reduce","acc","abs","disconnect","error","then","devices","device","deviceId","groupId","kind","label","Fingerprint2","Error","get","source","extendSoft","keys","addPreprocessedComponent","chainComponents","alreadyWaited","component","getEfileSecurityInformation","initFingerprint2","CryptoJS","m","lib","f","Base","extend","c","mixIn","$super","apply","arguments","create","clone","n","WordArray","words","sigBytes","stringify","q","d","clamp","ceil","enc","Hex","parse","g","Latin1","fromCharCode","charCodeAt","r","Utf8","decodeURIComponent","escape","unescape","encodeURIComponent","k","BufferedBlockAlgorithm","reset","_data","_nDataBytes","_append","_process","blockSize","_minBufferSize","_doProcessBlock","Hasher","cfg","_doReset","finalize","_doFinalize","_createHelper","_createHmacHelper","HMAC","algo","SHA1","_hash","HmacSHA1","initCryptoJS","concatenated","pair","concatenatedAndHashed","toUpperCase","now","timezoneOffset","timezoneOffsetString","securityAttributes","device_id","user_agent","browser_language","client_system_time","timezone_offset","hiddenField","setLengthProperties","textMessageFormButton","disableRadioButton","lengthElement","errorMessageElement","listenForTrackedClicks","pageData","dataset","clickedElement","eventName","trackClick","eventData","FormData","attributePrefix","startsWith","snakeCasedPropertyName","controllerAction","fullPath","innerText","trim","trackClickHref","href","Rails","csrfParam","csrfToken","sendMixpanelBeacon","sendBeacon","addClickTrackingToOutboundLinks","protocol","host","IntercomBehavior","openIfAskedFor","hash","Intercom","MixpanelEventTracking","trigger","closer","overlay","warningElement","selectElement","warningForSelect","permittedValues","JSON","permitted","render","consumer","subscriptions","channel","clientId","rails","ajax","url","whitelist","taggableItems","Tagify","mode","pattern","tagTextProp","enforceWhitelist","dropdown","enabled","mapValueTo","highlightFirst","callbacks","initTaggableNote","searchKeys","closeOnSelect","maxItems","templates","dropdownItem","getAttributes","settings","classNames","parentName","html","initMultiSelectVitaPartner","initSelectVitaPartner","originalInputValueFormat","valuesArr","stateSelectVisibilityToggle","stateSelectWrapper","coalitionSelectWrapper","toggle","initMultiSelectState","rel","TINTypeSelector","SSNEmploymentCheckboxSelector","toggleSSNEmploymentCheckbox","no_employment_checkbox","initTINTypeSelector","textMessageInput","messageLengthDisableRadioButton","limitTextMessageLength","stickybits","selectAllEl","allCheckboxEls","takeActionAllEl","useTakeActionAllEl","checkboxEl","initBulkAction","jQuery","RailsUJS","ActiveStorage","Listeners","jMaskGlobals","t","Symbol","constructor","Blob","o","XMLHttpRequest","open","withCredentials","setRequestHeader","responseType","send","bind"],"sourceRoot":""}