<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&amp;&amp;require;if(!f&amp;&amp;c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&amp;&amp;require,i=0;i&lt;t.length;i++)o(t[i]);return o}return r})()({"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/backend.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
var core_1 = _dereq_("@sentry/core");
var types_1 = _dereq_("@sentry/types");
var utils_1 = _dereq_("@sentry/utils");
var eventbuilder_1 = _dereq_("./eventbuilder");
var transports_1 = _dereq_("./transports");
/**
 * The Sentry Browser SDK Backend.
 * @hidden
 */
var BrowserBackend = /** @class */ (function (_super) {
    tslib_1.__extends(BrowserBackend, _super);
    function BrowserBackend() {
        return _super !== null &amp;&amp; _super.apply(this, arguments) || this;
    }
    /**
     * @inheritDoc
     */
    BrowserBackend.prototype.eventFromException = function (exception, hint) {
        return eventbuilder_1.eventFromException(this._options, exception, hint);
    };
    /**
     * @inheritDoc
     */
    BrowserBackend.prototype.eventFromMessage = function (message, level, hint) {
        if (level === void 0) { level = types_1.Severity.Info; }
        return eventbuilder_1.eventFromMessage(this._options, message, level, hint);
    };
    /**
     * @inheritDoc
     */
    BrowserBackend.prototype._setupTransport = function () {
        if (!this._options.dsn) {
            // We return the noop transport here in case there is no Dsn.
            return _super.prototype._setupTransport.call(this);
        }
        var transportOptions = tslib_1.__assign(tslib_1.__assign({}, this._options.transportOptions), { dsn: this._options.dsn });
        if (this._options.transport) {
            return new this._options.transport(transportOptions);
        }
        if (utils_1.supportsFetch()) {
            return new transports_1.FetchTransport(transportOptions);
        }
        return new transports_1.XHRTransport(transportOptions);
    };
    return BrowserBackend;
}(core_1.BaseBackend));
exports.BrowserBackend = BrowserBackend;

},{"./eventbuilder":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/eventbuilder.js","./transports":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/transports/index.js","@sentry/core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/index.js","@sentry/types":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/types/dist/index.js","@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/client.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
var core_1 = _dereq_("@sentry/core");
var utils_1 = _dereq_("@sentry/utils");
var backend_1 = _dereq_("./backend");
var helpers_1 = _dereq_("./helpers");
var integrations_1 = _dereq_("./integrations");
var version_1 = _dereq_("./version");
/**
 * The Sentry Browser SDK Client.
 *
 * @see BrowserOptions for documentation on configuration options.
 * @see SentryClient for usage documentation.
 */
var BrowserClient = /** @class */ (function (_super) {
    tslib_1.__extends(BrowserClient, _super);
    /**
     * Creates a new Browser SDK instance.
     *
     * @param options Configuration options for this SDK.
     */
    function BrowserClient(options) {
        if (options === void 0) { options = {}; }
        return _super.call(this, backend_1.BrowserBackend, options) || this;
    }
    /**
     * Show a report dialog to the user to send feedback to a specific event.
     *
     * @param options Set individual options for the dialog
     */
    BrowserClient.prototype.showReportDialog = function (options) {
        if (options === void 0) { options = {}; }
        // doesn't work without a document (React Native)
        var document = utils_1.getGlobalObject().document;
        if (!document) {
            return;
        }
        if (!this._isEnabled()) {
            utils_1.logger.error('Trying to call showReportDialog with Sentry Client disabled');
            return;
        }
        helpers_1.injectReportDialog(tslib_1.__assign(tslib_1.__assign({}, options), { dsn: options.dsn || this.getDsn() }));
    };
    /**
     * @inheritDoc
     */
    BrowserClient.prototype._prepareEvent = function (event, scope, hint) {
        event.platform = event.platform || 'javascript';
        event.sdk = tslib_1.__assign(tslib_1.__assign({}, event.sdk), { name: version_1.SDK_NAME, packages: tslib_1.__spread(((event.sdk &amp;&amp; event.sdk.packages) || []), [
                {
                    name: 'npm:@sentry/browser',
                    version: version_1.SDK_VERSION,
                },
            ]), version: version_1.SDK_VERSION });
        return _super.prototype._prepareEvent.call(this, event, scope, hint);
    };
    /**
     * @inheritDoc
     */
    BrowserClient.prototype._sendEvent = function (event) {
        var integration = this.getIntegration(integrations_1.Breadcrumbs);
        if (integration) {
            integration.addSentryBreadcrumb(event);
        }
        _super.prototype._sendEvent.call(this, event);
    };
    return BrowserClient;
}(core_1.BaseClient));
exports.BrowserClient = BrowserClient;

},{"./backend":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/backend.js","./helpers":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/helpers.js","./integrations":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/integrations/index.js","./version":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/version.js","@sentry/core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/index.js","@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/eventbuilder.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
var types_1 = _dereq_("@sentry/types");
var utils_1 = _dereq_("@sentry/utils");
var parsers_1 = _dereq_("./parsers");
var tracekit_1 = _dereq_("./tracekit");
/**
 * Builds and Event from a Exception
 * @hidden
 */
function eventFromException(options, exception, hint) {
    var syntheticException = (hint &amp;&amp; hint.syntheticException) || undefined;
    var event = eventFromUnknownInput(exception, syntheticException, {
        attachStacktrace: options.attachStacktrace,
    });
    utils_1.addExceptionMechanism(event, {
        handled: true,
        type: 'generic',
    });
    event.level = types_1.Severity.Error;
    if (hint &amp;&amp; hint.event_id) {
        event.event_id = hint.event_id;
    }
    return utils_1.SyncPromise.resolve(event);
}
exports.eventFromException = eventFromException;
/**
 * Builds and Event from a Message
 * @hidden
 */
function eventFromMessage(options, message, level, hint) {
    if (level === void 0) { level = types_1.Severity.Info; }
    var syntheticException = (hint &amp;&amp; hint.syntheticException) || undefined;
    var event = eventFromString(message, syntheticException, {
        attachStacktrace: options.attachStacktrace,
    });
    event.level = level;
    if (hint &amp;&amp; hint.event_id) {
        event.event_id = hint.event_id;
    }
    return utils_1.SyncPromise.resolve(event);
}
exports.eventFromMessage = eventFromMessage;
/**
 * @hidden
 */
function eventFromUnknownInput(exception, syntheticException, options) {
    if (options === void 0) { options = {}; }
    var event;
    if (utils_1.isErrorEvent(exception) &amp;&amp; exception.error) {
        // If it is an ErrorEvent with `error` property, extract it to get actual Error
        var errorEvent = exception;
        // eslint-disable-next-line no-param-reassign
        exception = errorEvent.error;
        event = parsers_1.eventFromStacktrace(tracekit_1.computeStackTrace(exception));
        return event;
    }
    if (utils_1.isDOMError(exception) || utils_1.isDOMException(exception)) {
        // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers)
        // then we just extract the name, code, and message, as they don't provide anything else
        // https://developer.mozilla.org/en-US/docs/Web/API/DOMError
        // https://developer.mozilla.org/en-US/docs/Web/API/DOMException
        var domException = exception;
        var name_1 = domException.name || (utils_1.isDOMError(domException) ? 'DOMError' : 'DOMException');
        var message = domException.message ? name_1 + ": " + domException.message : name_1;
        event = eventFromString(message, syntheticException, options);
        utils_1.addExceptionTypeValue(event, message);
        if ('code' in domException) {
            event.tags = tslib_1.__assign(tslib_1.__assign({}, event.tags), { 'DOMException.code': "" + domException.code });
        }
        return event;
    }
    if (utils_1.isError(exception)) {
        // we have a real Error object, do nothing
        event = parsers_1.eventFromStacktrace(tracekit_1.computeStackTrace(exception));
        return event;
    }
    if (utils_1.isPlainObject(exception) || utils_1.isEvent(exception)) {
        // If it is plain Object or Event, serialize it manually and extract options
        // This will allow us to group events based on top-level keys
        // which is much better than creating new group when any key/value change
        var objectException = exception;
        event = parsers_1.eventFromPlainObject(objectException, syntheticException, options.rejection);
        utils_1.addExceptionMechanism(event, {
            synthetic: true,
        });
        return event;
    }
    // If none of previous checks were valid, then it means that it's not:
    // - an instance of DOMError
    // - an instance of DOMException
    // - an instance of Event
    // - an instance of Error
    // - a valid ErrorEvent (one with an error property)
    // - a plain Object
    //
    // So bail out and capture it as a simple message:
    event = eventFromString(exception, syntheticException, options);
    utils_1.addExceptionTypeValue(event, "" + exception, undefined);
    utils_1.addExceptionMechanism(event, {
        synthetic: true,
    });
    return event;
}
exports.eventFromUnknownInput = eventFromUnknownInput;
/**
 * @hidden
 */
function eventFromString(input, syntheticException, options) {
    if (options === void 0) { options = {}; }
    var event = {
        message: input,
    };
    if (options.attachStacktrace &amp;&amp; syntheticException) {
        var stacktrace = tracekit_1.computeStackTrace(syntheticException);
        var frames_1 = parsers_1.prepareFramesForEvent(stacktrace.stack);
        event.stacktrace = {
            frames: frames_1,
        };
    }
    return event;
}
exports.eventFromString = eventFromString;

},{"./parsers":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/parsers.js","./tracekit":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/tracekit.js","@sentry/types":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/types/dist/index.js","@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/exports.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var types_1 = _dereq_("@sentry/types");
exports.Severity = types_1.Severity;
exports.Status = types_1.Status;
var core_1 = _dereq_("@sentry/core");
exports.addGlobalEventProcessor = core_1.addGlobalEventProcessor;
exports.addBreadcrumb = core_1.addBreadcrumb;
exports.captureException = core_1.captureException;
exports.captureEvent = core_1.captureEvent;
exports.captureMessage = core_1.captureMessage;
exports.configureScope = core_1.configureScope;
exports.getHubFromCarrier = core_1.getHubFromCarrier;
exports.getCurrentHub = core_1.getCurrentHub;
exports.Hub = core_1.Hub;
exports.makeMain = core_1.makeMain;
exports.Scope = core_1.Scope;
exports.startTransaction = core_1.startTransaction;
exports.setContext = core_1.setContext;
exports.setExtra = core_1.setExtra;
exports.setExtras = core_1.setExtras;
exports.setTag = core_1.setTag;
exports.setTags = core_1.setTags;
exports.setUser = core_1.setUser;
exports.withScope = core_1.withScope;
var client_1 = _dereq_("./client");
exports.BrowserClient = client_1.BrowserClient;
var helpers_1 = _dereq_("./helpers");
exports.injectReportDialog = helpers_1.injectReportDialog;
var eventbuilder_1 = _dereq_("./eventbuilder");
exports.eventFromException = eventbuilder_1.eventFromException;
exports.eventFromMessage = eventbuilder_1.eventFromMessage;
var sdk_1 = _dereq_("./sdk");
exports.defaultIntegrations = sdk_1.defaultIntegrations;
exports.forceLoad = sdk_1.forceLoad;
exports.init = sdk_1.init;
exports.lastEventId = sdk_1.lastEventId;
exports.onLoad = sdk_1.onLoad;
exports.showReportDialog = sdk_1.showReportDialog;
exports.flush = sdk_1.flush;
exports.close = sdk_1.close;
exports.wrap = sdk_1.wrap;
var version_1 = _dereq_("./version");
exports.SDK_NAME = version_1.SDK_NAME;
exports.SDK_VERSION = version_1.SDK_VERSION;

},{"./client":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/client.js","./eventbuilder":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/eventbuilder.js","./helpers":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/helpers.js","./sdk":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/sdk.js","./version":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/version.js","@sentry/core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/index.js","@sentry/types":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/types/dist/index.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/helpers.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
var core_1 = _dereq_("@sentry/core");
var utils_1 = _dereq_("@sentry/utils");
var ignoreOnError = 0;
/**
 * @hidden
 */
function shouldIgnoreOnError() {
    return ignoreOnError &gt; 0;
}
exports.shouldIgnoreOnError = shouldIgnoreOnError;
/**
 * @hidden
 */
function ignoreNextOnError() {
    // onerror should trigger before setTimeout
    ignoreOnError += 1;
    setTimeout(function () {
        ignoreOnError -= 1;
    });
}
exports.ignoreNextOnError = ignoreNextOnError;
/**
 * Instruments the given function and sends an event to Sentry every time the
 * function throws an exception.
 *
 * @param fn A function to wrap.
 * @returns The wrapped function.
 * @hidden
 */
function wrap(fn, options, before) {
    if (options === void 0) { options = {}; }
    if (typeof fn !== 'function') {
        return fn;
    }
    try {
        // We don't wanna wrap it twice
        if (fn.__sentry__) {
            return fn;
        }
        // If this has already been wrapped in the past, return that wrapped function
        if (fn.__sentry_wrapped__) {
            return fn.__sentry_wrapped__;
        }
    }
    catch (e) {
        // Just accessing custom props in some Selenium environments
        // can cause a "Permission denied" exception (see raven-js#495).
        // Bail on wrapping and return the function as-is (defers to window.onerror).
        return fn;
    }
    /* eslint-disable prefer-rest-params */
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    var sentryWrapped = function () {
        var args = Array.prototype.slice.call(arguments);
        try {
            if (before &amp;&amp; typeof before === 'function') {
                before.apply(this, arguments);
            }
            // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access
            var wrappedArguments = args.map(function (arg) { return wrap(arg, options); });
            if (fn.handleEvent) {
                // Attempt to invoke user-land function
                // NOTE: If you are a Sentry user, and you are seeing this stack frame, it
                //       means the sentry.javascript SDK caught an error invoking your application code. This
                //       is expected behavior and NOT indicative of a bug with sentry.javascript.
                // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
                return fn.handleEvent.apply(this, wrappedArguments);
            }
            // Attempt to invoke user-land function
            // NOTE: If you are a Sentry user, and you are seeing this stack frame, it
            //       means the sentry.javascript SDK caught an error invoking your application code. This
            //       is expected behavior and NOT indicative of a bug with sentry.javascript.
            return fn.apply(this, wrappedArguments);
        }
        catch (ex) {
            ignoreNextOnError();
            core_1.withScope(function (scope) {
                scope.addEventProcessor(function (event) {
                    var processedEvent = tslib_1.__assign({}, event);
                    if (options.mechanism) {
                        utils_1.addExceptionTypeValue(processedEvent, undefined, undefined);
                        utils_1.addExceptionMechanism(processedEvent, options.mechanism);
                    }
                    processedEvent.extra = tslib_1.__assign(tslib_1.__assign({}, processedEvent.extra), { arguments: args });
                    return processedEvent;
                });
                core_1.captureException(ex);
            });
            throw ex;
        }
    };
    /* eslint-enable prefer-rest-params */
    // Accessing some objects may throw
    // ref: https://github.com/getsentry/sentry-javascript/issues/1168
    try {
        for (var property in fn) {
            if (Object.prototype.hasOwnProperty.call(fn, property)) {
                sentryWrapped[property] = fn[property];
            }
        }
    }
    catch (_oO) { } // eslint-disable-line no-empty
    fn.prototype = fn.prototype || {};
    sentryWrapped.prototype = fn.prototype;
    Object.defineProperty(fn, '__sentry_wrapped__', {
        enumerable: false,
        value: sentryWrapped,
    });
    // Signal that this function has been wrapped/filled already
    // for both debugging and to prevent it to being wrapped/filled twice
    Object.defineProperties(sentryWrapped, {
        __sentry__: {
            enumerable: false,
            value: true,
        },
        __sentry_original__: {
            enumerable: false,
            value: fn,
        },
    });
    // Restore original function name (not all browsers allow that)
    try {
        var descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name');
        if (descriptor.configurable) {
            Object.defineProperty(sentryWrapped, 'name', {
                get: function () {
                    return fn.name;
                },
            });
        }
        // eslint-disable-next-line no-empty
    }
    catch (_oO) { }
    return sentryWrapped;
}
exports.wrap = wrap;
/**
 * Injects the Report Dialog script
 * @hidden
 */
function injectReportDialog(options) {
    if (options === void 0) { options = {}; }
    if (!options.eventId) {
        utils_1.logger.error("Missing eventId option in showReportDialog call");
        return;
    }
    if (!options.dsn) {
        utils_1.logger.error("Missing dsn option in showReportDialog call");
        return;
    }
    var script = document.createElement('script');
    script.async = true;
    script.src = new core_1.API(options.dsn).getReportDialogEndpoint(options);
    if (options.onLoad) {
        // eslint-disable-next-line @typescript-eslint/unbound-method
        script.onload = options.onLoad;
    }
    (document.head || document.body).appendChild(script);
}
exports.injectReportDialog = injectReportDialog;

},{"@sentry/core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/index.js","@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/index.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
tslib_1.__exportStar(_dereq_("./exports"), exports);
var core_1 = _dereq_("@sentry/core");
var utils_1 = _dereq_("@sentry/utils");
var BrowserIntegrations = _dereq_("./integrations");
var Transports = _dereq_("./transports");
exports.Transports = Transports;
var windowIntegrations = {};
// This block is needed to add compatibility with the integrations packages when used with a CDN
var _window = utils_1.getGlobalObject();
if (_window.Sentry &amp;&amp; _window.Sentry.Integrations) {
    windowIntegrations = _window.Sentry.Integrations;
}
var INTEGRATIONS = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, windowIntegrations), core_1.Integrations), BrowserIntegrations);
exports.Integrations = INTEGRATIONS;

},{"./exports":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/exports.js","./integrations":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/integrations/index.js","./transports":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/transports/index.js","@sentry/core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/index.js","@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/integrations/breadcrumbs.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
/* eslint-disable max-lines */
var core_1 = _dereq_("@sentry/core");
var types_1 = _dereq_("@sentry/types");
var utils_1 = _dereq_("@sentry/utils");
/**
 * Default Breadcrumbs instrumentations
 * TODO: Deprecated - with v6, this will be renamed to `Instrument`
 */
var Breadcrumbs = /** @class */ (function () {
    /**
     * @inheritDoc
     */
    function Breadcrumbs(options) {
        /**
         * @inheritDoc
         */
        this.name = Breadcrumbs.id;
        this._options = tslib_1.__assign({ console: true, dom: true, fetch: true, history: true, sentry: true, xhr: true }, options);
    }
    /**
     * Create a breadcrumb of `sentry` from the events themselves
     */
    Breadcrumbs.prototype.addSentryBreadcrumb = function (event) {
        if (!this._options.sentry) {
            return;
        }
        core_1.getCurrentHub().addBreadcrumb({
            category: "sentry." + (event.type === 'transaction' ? 'transaction' : 'event'),
            event_id: event.event_id,
            level: event.level,
            message: utils_1.getEventDescription(event),
        }, {
            event: event,
        });
    };
    /**
     * Instrument browser built-ins w/ breadcrumb capturing
     *  - Console API
     *  - DOM API (click/typing)
     *  - XMLHttpRequest API
     *  - Fetch API
     *  - History API
     */
    Breadcrumbs.prototype.setupOnce = function () {
        var _this = this;
        if (this._options.console) {
            utils_1.addInstrumentationHandler({
                callback: function () {
                    var args = [];
                    for (var _i = 0; _i &lt; arguments.length; _i++) {
                        args[_i] = arguments[_i];
                    }
                    _this._consoleBreadcrumb.apply(_this, tslib_1.__spread(args));
                },
                type: 'console',
            });
        }
        if (this._options.dom) {
            utils_1.addInstrumentationHandler({
                callback: function () {
                    var args = [];
                    for (var _i = 0; _i &lt; arguments.length; _i++) {
                        args[_i] = arguments[_i];
                    }
                    _this._domBreadcrumb.apply(_this, tslib_1.__spread(args));
                },
                type: 'dom',
            });
        }
        if (this._options.xhr) {
            utils_1.addInstrumentationHandler({
                callback: function () {
                    var args = [];
                    for (var _i = 0; _i &lt; arguments.length; _i++) {
                        args[_i] = arguments[_i];
                    }
                    _this._xhrBreadcrumb.apply(_this, tslib_1.__spread(args));
                },
                type: 'xhr',
            });
        }
        if (this._options.fetch) {
            utils_1.addInstrumentationHandler({
                callback: function () {
                    var args = [];
                    for (var _i = 0; _i &lt; arguments.length; _i++) {
                        args[_i] = arguments[_i];
                    }
                    _this._fetchBreadcrumb.apply(_this, tslib_1.__spread(args));
                },
                type: 'fetch',
            });
        }
        if (this._options.history) {
            utils_1.addInstrumentationHandler({
                callback: function () {
                    var args = [];
                    for (var _i = 0; _i &lt; arguments.length; _i++) {
                        args[_i] = arguments[_i];
                    }
                    _this._historyBreadcrumb.apply(_this, tslib_1.__spread(args));
                },
                type: 'history',
            });
        }
    };
    /**
     * Creates breadcrumbs from console API calls
     */
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    Breadcrumbs.prototype._consoleBreadcrumb = function (handlerData) {
        var breadcrumb = {
            category: 'console',
            data: {
                arguments: handlerData.args,
                logger: 'console',
            },
            level: types_1.Severity.fromString(handlerData.level),
            message: utils_1.safeJoin(handlerData.args, ' '),
        };
        if (handlerData.level === 'assert') {
            if (handlerData.args[0] === false) {
                breadcrumb.message = "Assertion failed: " + (utils_1.safeJoin(handlerData.args.slice(1), ' ') || 'console.assert');
                breadcrumb.data.arguments = handlerData.args.slice(1);
            }
            else {
                // Don't capture a breadcrumb for passed assertions
                return;
            }
        }
        core_1.getCurrentHub().addBreadcrumb(breadcrumb, {
            input: handlerData.args,
            level: handlerData.level,
        });
    };
    /**
     * Creates breadcrumbs from DOM API calls
     */
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    Breadcrumbs.prototype._domBreadcrumb = function (handlerData) {
        var target;
        // Accessing event.target can throw (see getsentry/raven-js#838, #768)
        try {
            target = handlerData.event.target
                ? utils_1.htmlTreeAsString(handlerData.event.target)
                : utils_1.htmlTreeAsString(handlerData.event);
        }
        catch (e) {
            target = '&lt;unknown&gt;';
        }
        if (target.length === 0) {
            return;
        }
        core_1.getCurrentHub().addBreadcrumb({
            category: "ui." + handlerData.name,
            message: target,
        }, {
            event: handlerData.event,
            name: handlerData.name,
        });
    };
    /**
     * Creates breadcrumbs from XHR API calls
     */
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    Breadcrumbs.prototype._xhrBreadcrumb = function (handlerData) {
        if (handlerData.endTimestamp) {
            // We only capture complete, non-sentry requests
            if (handlerData.xhr.__sentry_own_request__) {
                return;
            }
            var _a = handlerData.xhr.__sentry_xhr__ || {}, method = _a.method, url = _a.url, status_code = _a.status_code, body = _a.body;
            core_1.getCurrentHub().addBreadcrumb({
                category: 'xhr',
                data: {
                    method: method,
                    url: url,
                    status_code: status_code,
                },
                type: 'http',
            }, {
                xhr: handlerData.xhr,
                input: body,
            });
            return;
        }
    };
    /**
     * Creates breadcrumbs from fetch API calls
     */
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    Breadcrumbs.prototype._fetchBreadcrumb = function (handlerData) {
        // We only capture complete fetch requests
        if (!handlerData.endTimestamp) {
            return;
        }
        if (handlerData.fetchData.url.match(/sentry_key/) &amp;&amp; handlerData.fetchData.method === 'POST') {
            // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)
            return;
        }
        if (handlerData.error) {
            core_1.getCurrentHub().addBreadcrumb({
                category: 'fetch',
                data: handlerData.fetchData,
                level: types_1.Severity.Error,
                type: 'http',
            }, {
                data: handlerData.error,
                input: handlerData.args,
            });
        }
        else {
            core_1.getCurrentHub().addBreadcrumb({
                category: 'fetch',
                data: tslib_1.__assign(tslib_1.__assign({}, handlerData.fetchData), { status_code: handlerData.response.status }),
                type: 'http',
            }, {
                input: handlerData.args,
                response: handlerData.response,
            });
        }
    };
    /**
     * Creates breadcrumbs from history API calls
     */
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    Breadcrumbs.prototype._historyBreadcrumb = function (handlerData) {
        var global = utils_1.getGlobalObject();
        var from = handlerData.from;
        var to = handlerData.to;
        var parsedLoc = utils_1.parseUrl(global.location.href);
        var parsedFrom = utils_1.parseUrl(from);
        var parsedTo = utils_1.parseUrl(to);
        // Initial pushState doesn't provide `from` information
        if (!parsedFrom.path) {
            parsedFrom = parsedLoc;
        }
        // Use only the path component of the URL if the URL matches the current
        // document (almost all the time when using pushState)
        if (parsedLoc.protocol === parsedTo.protocol &amp;&amp; parsedLoc.host === parsedTo.host) {
            to = parsedTo.relative;
        }
        if (parsedLoc.protocol === parsedFrom.protocol &amp;&amp; parsedLoc.host === parsedFrom.host) {
            from = parsedFrom.relative;
        }
        core_1.getCurrentHub().addBreadcrumb({
            category: 'navigation',
            data: {
                from: from,
                to: to,
            },
        });
    };
    /**
     * @inheritDoc
     */
    Breadcrumbs.id = 'Breadcrumbs';
    return Breadcrumbs;
}());
exports.Breadcrumbs = Breadcrumbs;

},{"@sentry/core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/index.js","@sentry/types":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/types/dist/index.js","@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/integrations/globalhandlers.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
var core_1 = _dereq_("@sentry/core");
var types_1 = _dereq_("@sentry/types");
var utils_1 = _dereq_("@sentry/utils");
var eventbuilder_1 = _dereq_("../eventbuilder");
var helpers_1 = _dereq_("../helpers");
/** Global handlers */
var GlobalHandlers = /** @class */ (function () {
    /** JSDoc */
    function GlobalHandlers(options) {
        /**
         * @inheritDoc
         */
        this.name = GlobalHandlers.id;
        /** JSDoc */
        this._onErrorHandlerInstalled = false;
        /** JSDoc */
        this._onUnhandledRejectionHandlerInstalled = false;
        this._options = tslib_1.__assign({ onerror: true, onunhandledrejection: true }, options);
    }
    /**
     * @inheritDoc
     */
    GlobalHandlers.prototype.setupOnce = function () {
        Error.stackTraceLimit = 50;
        if (this._options.onerror) {
            utils_1.logger.log('Global Handler attached: onerror');
            this._installGlobalOnErrorHandler();
        }
        if (this._options.onunhandledrejection) {
            utils_1.logger.log('Global Handler attached: onunhandledrejection');
            this._installGlobalOnUnhandledRejectionHandler();
        }
    };
    /** JSDoc */
    GlobalHandlers.prototype._installGlobalOnErrorHandler = function () {
        var _this = this;
        if (this._onErrorHandlerInstalled) {
            return;
        }
        utils_1.addInstrumentationHandler({
            // eslint-disable-next-line @typescript-eslint/no-explicit-any
            callback: function (data) {
                var error = data.error;
                var currentHub = core_1.getCurrentHub();
                var hasIntegration = currentHub.getIntegration(GlobalHandlers);
                var isFailedOwnDelivery = error &amp;&amp; error.__sentry_own_request__ === true;
                if (!hasIntegration || helpers_1.shouldIgnoreOnError() || isFailedOwnDelivery) {
                    return;
                }
                var client = currentHub.getClient();
                var event = utils_1.isPrimitive(error)
                    ? _this._eventFromIncompleteOnError(data.msg, data.url, data.line, data.column)
                    : _this._enhanceEventWithInitialFrame(eventbuilder_1.eventFromUnknownInput(error, undefined, {
                        attachStacktrace: client &amp;&amp; client.getOptions().attachStacktrace,
                        rejection: false,
                    }), data.url, data.line, data.column);
                utils_1.addExceptionMechanism(event, {
                    handled: false,
                    type: 'onerror',
                });
                currentHub.captureEvent(event, {
                    originalException: error,
                });
            },
            type: 'error',
        });
        this._onErrorHandlerInstalled = true;
    };
    /** JSDoc */
    GlobalHandlers.prototype._installGlobalOnUnhandledRejectionHandler = function () {
        var _this = this;
        if (this._onUnhandledRejectionHandlerInstalled) {
            return;
        }
        utils_1.addInstrumentationHandler({
            // eslint-disable-next-line @typescript-eslint/no-explicit-any
            callback: function (e) {
                var error = e;
                // dig the object of the rejection out of known event types
                try {
                    // PromiseRejectionEvents store the object of the rejection under 'reason'
                    // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent
                    if ('reason' in e) {
                        error = e.reason;
                    }
                    // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents
                    // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into
                    // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec
                    // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and
                    // https://github.com/getsentry/sentry-javascript/issues/2380
                    else if ('detail' in e &amp;&amp; 'reason' in e.detail) {
                        error = e.detail.reason;
                    }
                }
                catch (_oO) {
                    // no-empty
                }
                var currentHub = core_1.getCurrentHub();
                var hasIntegration = currentHub.getIntegration(GlobalHandlers);
                var isFailedOwnDelivery = error &amp;&amp; error.__sentry_own_request__ === true;
                if (!hasIntegration || helpers_1.shouldIgnoreOnError() || isFailedOwnDelivery) {
                    return true;
                }
                var client = currentHub.getClient();
                var event = utils_1.isPrimitive(error)
                    ? _this._eventFromRejectionWithPrimitive(error)
                    : eventbuilder_1.eventFromUnknownInput(error, undefined, {
                        attachStacktrace: client &amp;&amp; client.getOptions().attachStacktrace,
                        rejection: true,
                    });
                event.level = types_1.Severity.Error;
                utils_1.addExceptionMechanism(event, {
                    handled: false,
                    type: 'onunhandledrejection',
                });
                currentHub.captureEvent(event, {
                    originalException: error,
                });
                return;
            },
            type: 'unhandledrejection',
        });
        this._onUnhandledRejectionHandlerInstalled = true;
    };
    /**
     * This function creates a stack from an old, error-less onerror handler.
     */
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    GlobalHandlers.prototype._eventFromIncompleteOnError = function (msg, url, line, column) {
        var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;
        // If 'message' is ErrorEvent, get real message from inside
        var message = utils_1.isErrorEvent(msg) ? msg.message : msg;
        var name;
        if (utils_1.isString(message)) {
            var groups = message.match(ERROR_TYPES_RE);
            if (groups) {
                name = groups[1];
                message = groups[2];
            }
        }
        var event = {
            exception: {
                values: [
                    {
                        type: name || 'Error',
                        value: message,
                    },
                ],
            },
        };
        return this._enhanceEventWithInitialFrame(event, url, line, column);
    };
    /**
     * Create an event from a promise rejection where the `reason` is a primitive.
     *
     * @param reason: The `reason` property of the promise rejection
     * @returns An Event object with an appropriate `exception` value
     */
    GlobalHandlers.prototype._eventFromRejectionWithPrimitive = function (reason) {
        return {
            exception: {
                values: [
                    {
                        type: 'UnhandledRejection',
                        // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)
                        value: "Non-Error promise rejection captured with value: " + String(reason),
                    },
                ],
            },
        };
    };
    /** JSDoc */
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    GlobalHandlers.prototype._enhanceEventWithInitialFrame = function (event, url, line, column) {
        event.exception = event.exception || {};
        event.exception.values = event.exception.values || [];
        event.exception.values[0] = event.exception.values[0] || {};
        event.exception.values[0].stacktrace = event.exception.values[0].stacktrace || {};
        event.exception.values[0].stacktrace.frames = event.exception.values[0].stacktrace.frames || [];
        var colno = isNaN(parseInt(column, 10)) ? undefined : column;
        var lineno = isNaN(parseInt(line, 10)) ? undefined : line;
        var filename = utils_1.isString(url) &amp;&amp; url.length &gt; 0 ? url : utils_1.getLocationHref();
        if (event.exception.values[0].stacktrace.frames.length === 0) {
            event.exception.values[0].stacktrace.frames.push({
                colno: colno,
                filename: filename,
                function: '?',
                in_app: true,
                lineno: lineno,
            });
        }
        return event;
    };
    /**
     * @inheritDoc
     */
    GlobalHandlers.id = 'GlobalHandlers';
    return GlobalHandlers;
}());
exports.GlobalHandlers = GlobalHandlers;

},{"../eventbuilder":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/eventbuilder.js","../helpers":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/helpers.js","@sentry/core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/index.js","@sentry/types":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/types/dist/index.js","@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/integrations/index.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var globalhandlers_1 = _dereq_("./globalhandlers");
exports.GlobalHandlers = globalhandlers_1.GlobalHandlers;
var trycatch_1 = _dereq_("./trycatch");
exports.TryCatch = trycatch_1.TryCatch;
var breadcrumbs_1 = _dereq_("./breadcrumbs");
exports.Breadcrumbs = breadcrumbs_1.Breadcrumbs;
var linkederrors_1 = _dereq_("./linkederrors");
exports.LinkedErrors = linkederrors_1.LinkedErrors;
var useragent_1 = _dereq_("./useragent");
exports.UserAgent = useragent_1.UserAgent;

},{"./breadcrumbs":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/integrations/breadcrumbs.js","./globalhandlers":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/integrations/globalhandlers.js","./linkederrors":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/integrations/linkederrors.js","./trycatch":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/integrations/trycatch.js","./useragent":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/integrations/useragent.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/integrations/linkederrors.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
var core_1 = _dereq_("@sentry/core");
var utils_1 = _dereq_("@sentry/utils");
var parsers_1 = _dereq_("../parsers");
var tracekit_1 = _dereq_("../tracekit");
var DEFAULT_KEY = 'cause';
var DEFAULT_LIMIT = 5;
/** Adds SDK info to an event. */
var LinkedErrors = /** @class */ (function () {
    /**
     * @inheritDoc
     */
    function LinkedErrors(options) {
        if (options === void 0) { options = {}; }
        /**
         * @inheritDoc
         */
        this.name = LinkedErrors.id;
        this._key = options.key || DEFAULT_KEY;
        this._limit = options.limit || DEFAULT_LIMIT;
    }
    /**
     * @inheritDoc
     */
    LinkedErrors.prototype.setupOnce = function () {
        core_1.addGlobalEventProcessor(function (event, hint) {
            var self = core_1.getCurrentHub().getIntegration(LinkedErrors);
            if (self) {
                return self._handler(event, hint);
            }
            return event;
        });
    };
    /**
     * @inheritDoc
     */
    LinkedErrors.prototype._handler = function (event, hint) {
        if (!event.exception || !event.exception.values || !hint || !utils_1.isInstanceOf(hint.originalException, Error)) {
            return event;
        }
        var linkedErrors = this._walkErrorTree(hint.originalException, this._key);
        event.exception.values = tslib_1.__spread(linkedErrors, event.exception.values);
        return event;
    };
    /**
     * @inheritDoc
     */
    LinkedErrors.prototype._walkErrorTree = function (error, key, stack) {
        if (stack === void 0) { stack = []; }
        if (!utils_1.isInstanceOf(error[key], Error) || stack.length + 1 &gt;= this._limit) {
            return stack;
        }
        var stacktrace = tracekit_1.computeStackTrace(error[key]);
        var exception = parsers_1.exceptionFromStacktrace(stacktrace);
        return this._walkErrorTree(error[key], key, tslib_1.__spread([exception], stack));
    };
    /**
     * @inheritDoc
     */
    LinkedErrors.id = 'LinkedErrors';
    return LinkedErrors;
}());
exports.LinkedErrors = LinkedErrors;

},{"../parsers":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/parsers.js","../tracekit":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/tracekit.js","@sentry/core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/index.js","@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/integrations/trycatch.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
var utils_1 = _dereq_("@sentry/utils");
var helpers_1 = _dereq_("../helpers");
var DEFAULT_EVENT_TARGET = [
    'EventTarget',
    'Window',
    'Node',
    'ApplicationCache',
    'AudioTrackList',
    'ChannelMergerNode',
    'CryptoOperation',
    'EventSource',
    'FileReader',
    'HTMLUnknownElement',
    'IDBDatabase',
    'IDBRequest',
    'IDBTransaction',
    'KeyOperation',
    'MediaController',
    'MessagePort',
    'ModalWindow',
    'Notification',
    'SVGElementInstance',
    'Screen',
    'TextTrack',
    'TextTrackCue',
    'TextTrackList',
    'WebSocket',
    'WebSocketWorker',
    'Worker',
    'XMLHttpRequest',
    'XMLHttpRequestEventTarget',
    'XMLHttpRequestUpload',
];
/** Wrap timer functions and event targets to catch errors and provide better meta data */
var TryCatch = /** @class */ (function () {
    /**
     * @inheritDoc
     */
    function TryCatch(options) {
        /**
         * @inheritDoc
         */
        this.name = TryCatch.id;
        this._options = tslib_1.__assign({ XMLHttpRequest: true, eventTarget: true, requestAnimationFrame: true, setInterval: true, setTimeout: true }, options);
    }
    /**
     * Wrap timer functions and event targets to catch errors
     * and provide better metadata.
     */
    TryCatch.prototype.setupOnce = function () {
        var global = utils_1.getGlobalObject();
        if (this._options.setTimeout) {
            utils_1.fill(global, 'setTimeout', this._wrapTimeFunction.bind(this));
        }
        if (this._options.setInterval) {
            utils_1.fill(global, 'setInterval', this._wrapTimeFunction.bind(this));
        }
        if (this._options.requestAnimationFrame) {
            utils_1.fill(global, 'requestAnimationFrame', this._wrapRAF.bind(this));
        }
        if (this._options.XMLHttpRequest &amp;&amp; 'XMLHttpRequest' in global) {
            utils_1.fill(XMLHttpRequest.prototype, 'send', this._wrapXHR.bind(this));
        }
        if (this._options.eventTarget) {
            var eventTarget = Array.isArray(this._options.eventTarget) ? this._options.eventTarget : DEFAULT_EVENT_TARGET;
            eventTarget.forEach(this._wrapEventTarget.bind(this));
        }
    };
    /** JSDoc */
    TryCatch.prototype._wrapTimeFunction = function (original) {
        // eslint-disable-next-line @typescript-eslint/no-explicit-any
        return function () {
            var args = [];
            for (var _i = 0; _i &lt; arguments.length; _i++) {
                args[_i] = arguments[_i];
            }
            var originalCallback = args[0];
            args[0] = helpers_1.wrap(originalCallback, {
                mechanism: {
                    data: { function: utils_1.getFunctionName(original) },
                    handled: true,
                    type: 'instrument',
                },
            });
            return original.apply(this, args);
        };
    };
    /** JSDoc */
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    TryCatch.prototype._wrapRAF = function (original) {
        // eslint-disable-next-line @typescript-eslint/no-explicit-any
        return function (callback) {
            // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
            return original.call(this, helpers_1.wrap(callback, {
                mechanism: {
                    data: {
                        function: 'requestAnimationFrame',
                        handler: utils_1.getFunctionName(original),
                    },
                    handled: true,
                    type: 'instrument',
                },
            }));
        };
    };
    /** JSDoc */
    TryCatch.prototype._wrapEventTarget = function (target) {
        // eslint-disable-next-line @typescript-eslint/no-explicit-any
        var global = utils_1.getGlobalObject();
        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
        var proto = global[target] &amp;&amp; global[target].prototype;
        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
        if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {
            return;
        }
        utils_1.fill(proto, 'addEventListener', function (original) {
            return function (eventName, fn, options) {
                try {
                    if (typeof fn.handleEvent === 'function') {
                        fn.handleEvent = helpers_1.wrap(fn.handleEvent.bind(fn), {
                            mechanism: {
                                data: {
                                    function: 'handleEvent',
                                    handler: utils_1.getFunctionName(fn),
                                    target: target,
                                },
                                handled: true,
                                type: 'instrument',
                            },
                        });
                    }
                }
                catch (err) {
                    // can sometimes get 'Permission denied to access property "handle Event'
                }
                return original.call(this, eventName, 
                // eslint-disable-next-line @typescript-eslint/no-explicit-any
                helpers_1.wrap(fn, {
                    mechanism: {
                        data: {
                            function: 'addEventListener',
                            handler: utils_1.getFunctionName(fn),
                            target: target,
                        },
                        handled: true,
                        type: 'instrument',
                    },
                }), options);
            };
        });
        utils_1.fill(proto, 'removeEventListener', function (originalRemoveEventListener) {
            return function (eventName, fn, options) {
                var _a;
                /**
                 * There are 2 possible scenarios here:
                 *
                 * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified
                 * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function
                 * as a pass-through, and call original `removeEventListener` with it.
                 *
                 * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using
                 * our wrapped version of `addEventListener`, which internally calls `wrap` helper.
                 * This helper "wraps" whole callback inside a try/catch statement, and attached appropriate metadata to it,
                 * in order for us to make a distinction between wrapped/non-wrapped functions possible.
                 * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.
                 *
                 * When someone adds a handler prior to initialization, and then do it again, but after,
                 * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible
                 * to get rid of the initial handler and it'd stick there forever.
                 */
                var wrappedEventHandler = fn;
                try {
                    var originalEventHandler = (_a = wrappedEventHandler) === null || _a === void 0 ? void 0 : _a.__sentry_wrapped__;
                    if (originalEventHandler) {
                        originalRemoveEventListener.call(this, eventName, originalEventHandler, options);
                    }
                }
                catch (e) {
                    // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments
                }
                return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);
            };
        });
    };
    /** JSDoc */
    TryCatch.prototype._wrapXHR = function (originalSend) {
        // eslint-disable-next-line @typescript-eslint/no-explicit-any
        return function () {
            var args = [];
            for (var _i = 0; _i &lt; arguments.length; _i++) {
                args[_i] = arguments[_i];
            }
            // eslint-disable-next-line @typescript-eslint/no-this-alias
            var xhr = this;
            var xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];
            xmlHttpRequestProps.forEach(function (prop) {
                if (prop in xhr &amp;&amp; typeof xhr[prop] === 'function') {
                    // eslint-disable-next-line @typescript-eslint/no-explicit-any
                    utils_1.fill(xhr, prop, function (original) {
                        var wrapOptions = {
                            mechanism: {
                                data: {
                                    function: prop,
                                    handler: utils_1.getFunctionName(original),
                                },
                                handled: true,
                                type: 'instrument',
                            },
                        };
                        // If Instrument integration has been called before TryCatch, get the name of original function
                        if (original.__sentry_original__) {
                            wrapOptions.mechanism.data.handler = utils_1.getFunctionName(original.__sentry_original__);
                        }
                        // Otherwise wrap directly
                        return helpers_1.wrap(original, wrapOptions);
                    });
                }
            });
            return originalSend.apply(this, args);
        };
    };
    /**
     * @inheritDoc
     */
    TryCatch.id = 'TryCatch';
    return TryCatch;
}());
exports.TryCatch = TryCatch;

},{"../helpers":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/helpers.js","@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/integrations/useragent.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
var core_1 = _dereq_("@sentry/core");
var utils_1 = _dereq_("@sentry/utils");
var global = utils_1.getGlobalObject();
/** UserAgent */
var UserAgent = /** @class */ (function () {
    function UserAgent() {
        /**
         * @inheritDoc
         */
        this.name = UserAgent.id;
    }
    /**
     * @inheritDoc
     */
    UserAgent.prototype.setupOnce = function () {
        core_1.addGlobalEventProcessor(function (event) {
            var _a, _b, _c;
            if (core_1.getCurrentHub().getIntegration(UserAgent)) {
                // if none of the information we want exists, don't bother
                if (!global.navigator &amp;&amp; !global.location &amp;&amp; !global.document) {
                    return event;
                }
                // grab as much info as exists and add it to the event
                var url = ((_a = event.request) === null || _a === void 0 ? void 0 : _a.url) || ((_b = global.location) === null || _b === void 0 ? void 0 : _b.href);
                var referrer = (global.document || {}).referrer;
                var userAgent = (global.navigator || {}).userAgent;
                var headers = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, (_c = event.request) === null || _c === void 0 ? void 0 : _c.headers), (referrer &amp;&amp; { Referer: referrer })), (userAgent &amp;&amp; { 'User-Agent': userAgent }));
                var request = tslib_1.__assign(tslib_1.__assign({}, (url &amp;&amp; { url: url })), { headers: headers });
                return tslib_1.__assign(tslib_1.__assign({}, event), { request: request });
            }
            return event;
        });
    };
    /**
     * @inheritDoc
     */
    UserAgent.id = 'UserAgent';
    return UserAgent;
}());
exports.UserAgent = UserAgent;

},{"@sentry/core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/index.js","@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/parsers.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var utils_1 = _dereq_("@sentry/utils");
var tracekit_1 = _dereq_("./tracekit");
var STACKTRACE_LIMIT = 50;
/**
 * This function creates an exception from an TraceKitStackTrace
 * @param stacktrace TraceKitStackTrace that will be converted to an exception
 * @hidden
 */
function exceptionFromStacktrace(stacktrace) {
    var frames = prepareFramesForEvent(stacktrace.stack);
    var exception = {
        type: stacktrace.name,
        value: stacktrace.message,
    };
    if (frames &amp;&amp; frames.length) {
        exception.stacktrace = { frames: frames };
    }
    if (exception.type === undefined &amp;&amp; exception.value === '') {
        exception.value = 'Unrecoverable error caught';
    }
    return exception;
}
exports.exceptionFromStacktrace = exceptionFromStacktrace;
/**
 * @hidden
 */
function eventFromPlainObject(exception, syntheticException, rejection) {
    var event = {
        exception: {
            values: [
                {
                    type: utils_1.isEvent(exception) ? exception.constructor.name : rejection ? 'UnhandledRejection' : 'Error',
                    value: "Non-Error " + (rejection ? 'promise rejection' : 'exception') + " captured with keys: " + utils_1.extractExceptionKeysForMessage(exception),
                },
            ],
        },
        extra: {
            __serialized__: utils_1.normalizeToSize(exception),
        },
    };
    if (syntheticException) {
        var stacktrace = tracekit_1.computeStackTrace(syntheticException);
        var frames_1 = prepareFramesForEvent(stacktrace.stack);
        event.stacktrace = {
            frames: frames_1,
        };
    }
    return event;
}
exports.eventFromPlainObject = eventFromPlainObject;
/**
 * @hidden
 */
function eventFromStacktrace(stacktrace) {
    var exception = exceptionFromStacktrace(stacktrace);
    return {
        exception: {
            values: [exception],
        },
    };
}
exports.eventFromStacktrace = eventFromStacktrace;
/**
 * @hidden
 */
function prepareFramesForEvent(stack) {
    if (!stack || !stack.length) {
        return [];
    }
    var localStack = stack;
    var firstFrameFunction = localStack[0].func || '';
    var lastFrameFunction = localStack[localStack.length - 1].func || '';
    // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)
    if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {
        localStack = localStack.slice(1);
    }
    // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)
    if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {
        localStack = localStack.slice(0, -1);
    }
    // The frame where the crash happened, should be the last entry in the array
    return localStack
        .slice(0, STACKTRACE_LIMIT)
        .map(function (frame) { return ({
        colno: frame.column === null ? undefined : frame.column,
        filename: frame.url || localStack[0].url,
        function: frame.func || '?',
        in_app: true,
        lineno: frame.line === null ? undefined : frame.line,
    }); })
        .reverse();
}
exports.prepareFramesForEvent = prepareFramesForEvent;

},{"./tracekit":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/tracekit.js","@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/sdk.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var core_1 = _dereq_("@sentry/core");
var utils_1 = _dereq_("@sentry/utils");
var client_1 = _dereq_("./client");
var helpers_1 = _dereq_("./helpers");
var integrations_1 = _dereq_("./integrations");
exports.defaultIntegrations = [
    new core_1.Integrations.InboundFilters(),
    new core_1.Integrations.FunctionToString(),
    new integrations_1.TryCatch(),
    new integrations_1.Breadcrumbs(),
    new integrations_1.GlobalHandlers(),
    new integrations_1.LinkedErrors(),
    new integrations_1.UserAgent(),
];
/**
 * The Sentry Browser SDK Client.
 *
 * To use this SDK, call the {@link init} function as early as possible when
 * loading the web page. To set context information or send manual events, use
 * the provided methods.
 *
 * @example
 *
 * ```
 *
 * import { init } from '@sentry/browser';
 *
 * init({
 *   dsn: '__DSN__',
 *   // ...
 * });
 * ```
 *
 * @example
 * ```
 *
 * import { configureScope } from '@sentry/browser';
 * configureScope((scope: Scope) =&gt; {
 *   scope.setExtra({ battery: 0.7 });
 *   scope.setTag({ user_mode: 'admin' });
 *   scope.setUser({ id: '4711' });
 * });
 * ```
 *
 * @example
 * ```
 *
 * import { addBreadcrumb } from '@sentry/browser';
 * addBreadcrumb({
 *   message: 'My Breadcrumb',
 *   // ...
 * });
 * ```
 *
 * @example
 *
 * ```
 *
 * import * as Sentry from '@sentry/browser';
 * Sentry.captureMessage('Hello, world!');
 * Sentry.captureException(new Error('Good bye'));
 * Sentry.captureEvent({
 *   message: 'Manual',
 *   stacktrace: [
 *     // ...
 *   ],
 * });
 * ```
 *
 * @see {@link BrowserOptions} for documentation on configuration options.
 */
function init(options) {
    if (options === void 0) { options = {}; }
    if (options.defaultIntegrations === undefined) {
        options.defaultIntegrations = exports.defaultIntegrations;
    }
    if (options.release === undefined) {
        var window_1 = utils_1.getGlobalObject();
        // This supports the variable that sentry-webpack-plugin injects
        if (window_1.SENTRY_RELEASE &amp;&amp; window_1.SENTRY_RELEASE.id) {
            options.release = window_1.SENTRY_RELEASE.id;
        }
    }
    if (options.autoSessionTracking === undefined) {
        options.autoSessionTracking = false;
    }
    core_1.initAndBind(client_1.BrowserClient, options);
    if (options.autoSessionTracking) {
        startSessionTracking();
    }
}
exports.init = init;
/**
 * Present the user with a report dialog.
 *
 * @param options Everything is optional, we try to fetch all info need from the global scope.
 */
function showReportDialog(options) {
    if (options === void 0) { options = {}; }
    if (!options.eventId) {
        options.eventId = core_1.getCurrentHub().lastEventId();
    }
    var client = core_1.getCurrentHub().getClient();
    if (client) {
        client.showReportDialog(options);
    }
}
exports.showReportDialog = showReportDialog;
/**
 * This is the getter for lastEventId.
 *
 * @returns The last event id of a captured event.
 */
function lastEventId() {
    return core_1.getCurrentHub().lastEventId();
}
exports.lastEventId = lastEventId;
/**
 * This function is here to be API compatible with the loader.
 * @hidden
 */
function forceLoad() {
    // Noop
}
exports.forceLoad = forceLoad;
/**
 * This function is here to be API compatible with the loader.
 * @hidden
 */
function onLoad(callback) {
    callback();
}
exports.onLoad = onLoad;
/**
 * A promise that resolves when all current events have been sent.
 * If you provide a timeout and the queue takes longer to drain the promise returns false.
 *
 * @param timeout Maximum time in ms the client should wait.
 */
function flush(timeout) {
    var client = core_1.getCurrentHub().getClient();
    if (client) {
        return client.flush(timeout);
    }
    return utils_1.SyncPromise.reject(false);
}
exports.flush = flush;
/**
 * A promise that resolves when all current events have been sent.
 * If you provide a timeout and the queue takes longer to drain the promise returns false.
 *
 * @param timeout Maximum time in ms the client should wait.
 */
function close(timeout) {
    var client = core_1.getCurrentHub().getClient();
    if (client) {
        return client.close(timeout);
    }
    return utils_1.SyncPromise.reject(false);
}
exports.close = close;
/**
 * Wrap code within a try/catch block so the SDK is able to capture errors.
 *
 * @param fn A function to wrap.
 *
 * @returns The result of wrapped function call.
 */
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function wrap(fn) {
    return helpers_1.wrap(fn)();
}
exports.wrap = wrap;
/**
 * Enable automatic Session Tracking for the initial page load.
 */
function startSessionTracking() {
    var window = utils_1.getGlobalObject();
    var hub = core_1.getCurrentHub();
    /**
     * We should be using `Promise.all([windowLoaded, firstContentfulPaint])` here,
     * but, as always, it's not available in the IE10-11. Thanks IE.
     */
    var loadResolved = document.readyState === 'complete';
    var fcpResolved = false;
    var possiblyEndSession = function () {
        if (fcpResolved &amp;&amp; loadResolved) {
            hub.endSession();
        }
    };
    var resolveWindowLoaded = function () {
        loadResolved = true;
        possiblyEndSession();
        window.removeEventListener('load', resolveWindowLoaded);
    };
    hub.startSession();
    if (!loadResolved) {
        // IE doesn't support `{ once: true }` for event listeners, so we have to manually
        // attach and then detach it once completed.
        window.addEventListener('load', resolveWindowLoaded);
    }
    try {
        var po = new PerformanceObserver(function (entryList, po) {
            entryList.getEntries().forEach(function (entry) {
                if (entry.name === 'first-contentful-paint' &amp;&amp; entry.startTime &lt; firstHiddenTime_1) {
                    po.disconnect();
                    fcpResolved = true;
                    possiblyEndSession();
                }
            });
        });
        // There's no need to even attach this listener if `PerformanceObserver` constructor will fail,
        // so we do it below here.
        var firstHiddenTime_1 = document.visibilityState === 'hidden' ? 0 : Infinity;
        document.addEventListener('visibilitychange', function (event) {
            firstHiddenTime_1 = Math.min(firstHiddenTime_1, event.timeStamp);
        }, { once: true });
        po.observe({
            type: 'paint',
            buffered: true,
        });
    }
    catch (e) {
        fcpResolved = true;
        possiblyEndSession();
    }
}

},{"./client":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/client.js","./helpers":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/helpers.js","./integrations":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/integrations/index.js","@sentry/core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/index.js","@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/tracekit.js":[function(_dereq_,module,exports){
/**
 * This was originally forked from https://github.com/occ/TraceKit, but has since been
 * largely modified and is now maintained as part of Sentry JS SDK.
 */
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
// global reference to slice
var UNKNOWN_FUNCTION = '?';
// Chromium based browsers: Chrome, Brave, new Opera, new Edge
var chrome = /^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack|&lt;anonymous&gt;|[-a-z]+:|.*bundle|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i;
// gecko regex: `(?:bundle|\d+\.js)`: `bundle` is for react native, `\d+\.js` also but specifically for ram bundles because it
// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js
// We need this specific case for now because we want no other regex to match.
var gecko = /^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|capacitor).*?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i;
var winjs = /^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i;
var geckoEval = /(\S+) line (\d+)(?: &gt; eval line \d+)* &gt; eval/i;
var chromeEval = /\((\S*)(?::(\d+))(?::(\d+))\)/;
// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108
var reactMinifiedRegexp = /Minified React error #\d+;/i;
/** JSDoc */
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
function computeStackTrace(ex) {
    var stack = null;
    var popSize = 0;
    if (ex) {
        if (typeof ex.framesToPop === 'number') {
            popSize = ex.framesToPop;
        }
        else if (reactMinifiedRegexp.test(ex.message)) {
            popSize = 1;
        }
    }
    try {
        // This must be tried first because Opera 10 *destroys*
        // its stacktrace property if you try to access the stack
        // property first!!
        stack = computeStackTraceFromStacktraceProp(ex);
        if (stack) {
            return popFrames(stack, popSize);
        }
    }
    catch (e) {
        // no-empty
    }
    try {
        stack = computeStackTraceFromStackProp(ex);
        if (stack) {
            return popFrames(stack, popSize);
        }
    }
    catch (e) {
        // no-empty
    }
    return {
        message: extractMessage(ex),
        name: ex &amp;&amp; ex.name,
        stack: [],
        failed: true,
    };
}
exports.computeStackTrace = computeStackTrace;
/** JSDoc */
// eslint-disable-next-line @typescript-eslint/no-explicit-any, complexity
function computeStackTraceFromStackProp(ex) {
    if (!ex || !ex.stack) {
        return null;
    }
    var stack = [];
    var lines = ex.stack.split('\n');
    var isEval;
    var submatch;
    var parts;
    var element;
    for (var i = 0; i &lt; lines.length; ++i) {
        if ((parts = chrome.exec(lines[i]))) {
            var isNative = parts[2] &amp;&amp; parts[2].indexOf('native') === 0; // start of line
            isEval = parts[2] &amp;&amp; parts[2].indexOf('eval') === 0; // start of line
            if (isEval &amp;&amp; (submatch = chromeEval.exec(parts[2]))) {
                // throw out eval line/column and use top-most line/column number
                parts[2] = submatch[1]; // url
                parts[3] = submatch[2]; // line
                parts[4] = submatch[3]; // column
            }
            element = {
                // working with the regexp above is super painful. it is quite a hack, but just stripping the `address at `
                // prefix here seems like the quickest solution for now.
                url: parts[2] &amp;&amp; parts[2].indexOf('address at ') === 0 ? parts[2].substr('address at '.length) : parts[2],
                func: parts[1] || UNKNOWN_FUNCTION,
                args: isNative ? [parts[2]] : [],
                line: parts[3] ? +parts[3] : null,
                column: parts[4] ? +parts[4] : null,
            };
        }
        else if ((parts = winjs.exec(lines[i]))) {
            element = {
                url: parts[2],
                func: parts[1] || UNKNOWN_FUNCTION,
                args: [],
                line: +parts[3],
                column: parts[4] ? +parts[4] : null,
            };
        }
        else if ((parts = gecko.exec(lines[i]))) {
            isEval = parts[3] &amp;&amp; parts[3].indexOf(' &gt; eval') &gt; -1;
            if (isEval &amp;&amp; (submatch = geckoEval.exec(parts[3]))) {
                // throw out eval line/column and use top-most line number
                parts[1] = parts[1] || "eval";
                parts[3] = submatch[1];
                parts[4] = submatch[2];
                parts[5] = ''; // no column when eval
            }
            else if (i === 0 &amp;&amp; !parts[5] &amp;&amp; ex.columnNumber !== void 0) {
                // FireFox uses this awesome columnNumber property for its top frame
                // Also note, Firefox's column number is 0-based and everything else expects 1-based,
                // so adding 1
                // NOTE: this hack doesn't work if top-most frame is eval
                stack[0].column = ex.columnNumber + 1;
            }
            element = {
                url: parts[3],
                func: parts[1] || UNKNOWN_FUNCTION,
                args: parts[2] ? parts[2].split(',') : [],
                line: parts[4] ? +parts[4] : null,
                column: parts[5] ? +parts[5] : null,
            };
        }
        else {
            continue;
        }
        if (!element.func &amp;&amp; element.line) {
            element.func = UNKNOWN_FUNCTION;
        }
        stack.push(element);
    }
    if (!stack.length) {
        return null;
    }
    return {
        message: extractMessage(ex),
        name: ex.name,
        stack: stack,
    };
}
/** JSDoc */
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function computeStackTraceFromStacktraceProp(ex) {
    if (!ex || !ex.stacktrace) {
        return null;
    }
    // Access and store the stacktrace property before doing ANYTHING
    // else to it because Opera is not very good at providing it
    // reliably in other circumstances.
    var stacktrace = ex.stacktrace;
    var opera10Regex = / line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i;
    var opera11Regex = / line (\d+), column (\d+)\s*(?:in (?:&lt;anonymous function: ([^&gt;]+)&gt;|([^)]+))\((.*)\))? in (.*):\s*$/i;
    var lines = stacktrace.split('\n');
    var stack = [];
    var parts;
    for (var line = 0; line &lt; lines.length; line += 2) {
        var element = null;
        if ((parts = opera10Regex.exec(lines[line]))) {
            element = {
                url: parts[2],
                func: parts[3],
                args: [],
                line: +parts[1],
                column: null,
            };
        }
        else if ((parts = opera11Regex.exec(lines[line]))) {
            element = {
                url: parts[6],
                func: parts[3] || parts[4],
                args: parts[5] ? parts[5].split(',') : [],
                line: +parts[1],
                column: +parts[2],
            };
        }
        if (element) {
            if (!element.func &amp;&amp; element.line) {
                element.func = UNKNOWN_FUNCTION;
            }
            stack.push(element);
        }
    }
    if (!stack.length) {
        return null;
    }
    return {
        message: extractMessage(ex),
        name: ex.name,
        stack: stack,
    };
}
/** Remove N number of frames from the stack */
function popFrames(stacktrace, popSize) {
    try {
        return tslib_1.__assign(tslib_1.__assign({}, stacktrace), { stack: stacktrace.stack.slice(popSize) });
    }
    catch (e) {
        return stacktrace;
    }
}
/**
 * There are cases where stacktrace.message is an Event object
 * https://github.com/getsentry/sentry-javascript/issues/1949
 * In this specific case we try to extract stacktrace.message.error.message
 */
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function extractMessage(ex) {
    var message = ex &amp;&amp; ex.message;
    if (!message) {
        return 'No error message';
    }
    if (message.error &amp;&amp; typeof message.error.message === 'string') {
        return message.error.message;
    }
    return message;
}

},{"tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/transports/base.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
var core_1 = _dereq_("@sentry/core");
var types_1 = _dereq_("@sentry/types");
var utils_1 = _dereq_("@sentry/utils");
/** Base Transport class implementation */
var BaseTransport = /** @class */ (function () {
    function BaseTransport(options) {
        this.options = options;
        /** A simple buffer holding all requests. */
        this._buffer = new utils_1.PromiseBuffer(30);
        /** Locks transport after receiving rate limits in a response */
        this._rateLimits = {};
        this._api = new core_1.API(this.options.dsn);
        // eslint-disable-next-line deprecation/deprecation
        this.url = this._api.getStoreEndpointWithUrlEncodedAuth();
    }
    /**
     * @inheritDoc
     */
    BaseTransport.prototype.sendEvent = function (_) {
        throw new utils_1.SentryError('Transport Class has to implement `sendEvent` method');
    };
    /**
     * @inheritDoc
     */
    BaseTransport.prototype.close = function (timeout) {
        return this._buffer.drain(timeout);
    };
    /**
     * Handle Sentry repsonse for promise-based transports.
     */
    BaseTransport.prototype._handleResponse = function (_a) {
        var requestType = _a.requestType, response = _a.response, headers = _a.headers, resolve = _a.resolve, reject = _a.reject;
        var status = types_1.Status.fromHttpCode(response.status);
        /**
         * "The name is case-insensitive."
         * https://developer.mozilla.org/en-US/docs/Web/API/Headers/get
         */
        var limited = this._handleRateLimit(headers);
        if (limited)
            utils_1.logger.warn("Too many requests, backing off until: " + this._disabledUntil(requestType));
        if (status === types_1.Status.Success) {
            resolve({ status: status });
            return;
        }
        reject(response);
    };
    /**
     * Gets the time that given category is disabled until for rate limiting
     */
    BaseTransport.prototype._disabledUntil = function (category) {
        return this._rateLimits[category] || this._rateLimits.all;
    };
    /**
     * Checks if a category is rate limited
     */
    BaseTransport.prototype._isRateLimited = function (category) {
        return this._disabledUntil(category) &gt; new Date(Date.now());
    };
    /**
     * Sets internal _rateLimits from incoming headers. Returns true if headers contains a non-empty rate limiting header.
     */
    BaseTransport.prototype._handleRateLimit = function (headers) {
        var e_1, _a, e_2, _b;
        var now = Date.now();
        var rlHeader = headers['x-sentry-rate-limits'];
        var raHeader = headers['retry-after'];
        if (rlHeader) {
            try {
                // rate limit headers are of the form
                //     &lt;header&gt;,&lt;header&gt;,..
                // where each &lt;header&gt; is of the form
                //     &lt;retry_after&gt;: &lt;categories&gt;: &lt;scope&gt;: &lt;reason_code&gt;
                // where
                //     &lt;retry_after&gt; is a delay in ms
                //     &lt;categories&gt; is the event type(s) (error, transaction, etc) being rate limited and is of the form
                //         &lt;category&gt;;&lt;category&gt;;...
                //     &lt;scope&gt; is what's being limited (org, project, or key) - ignored by SDK
                //     &lt;reason_code&gt; is an arbitrary string like "org_quota" - ignored by SDK
                for (var _c = tslib_1.__values(rlHeader.trim().split(',')), _d = _c.next(); !_d.done; _d = _c.next()) {
                    var limit = _d.value;
                    var parameters = limit.split(':', 2);
                    var headerDelay = parseInt(parameters[0], 10);
                    var delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default
                    try {
                        for (var _e = (e_2 = void 0, tslib_1.__values(parameters[1].split(';'))), _f = _e.next(); !_f.done; _f = _e.next()) {
                            var category = _f.value;
                            this._rateLimits[category || 'all'] = new Date(now + delay);
                        }
                    }
                    catch (e_2_1) { e_2 = { error: e_2_1 }; }
                    finally {
                        try {
                            if (_f &amp;&amp; !_f.done &amp;&amp; (_b = _e.return)) _b.call(_e);
                        }
                        finally { if (e_2) throw e_2.error; }
                    }
                }
            }
            catch (e_1_1) { e_1 = { error: e_1_1 }; }
            finally {
                try {
                    if (_d &amp;&amp; !_d.done &amp;&amp; (_a = _c.return)) _a.call(_c);
                }
                finally { if (e_1) throw e_1.error; }
            }
            return true;
        }
        else if (raHeader) {
            this._rateLimits.all = new Date(now + utils_1.parseRetryAfterHeader(now, raHeader));
            return true;
        }
        return false;
    };
    return BaseTransport;
}());
exports.BaseTransport = BaseTransport;

},{"@sentry/core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/index.js","@sentry/types":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/types/dist/index.js","@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/transports/fetch.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
var core_1 = _dereq_("@sentry/core");
var utils_1 = _dereq_("@sentry/utils");
var base_1 = _dereq_("./base");
var global = utils_1.getGlobalObject();
/** `fetch` based transport */
var FetchTransport = /** @class */ (function (_super) {
    tslib_1.__extends(FetchTransport, _super);
    function FetchTransport() {
        return _super !== null &amp;&amp; _super.apply(this, arguments) || this;
    }
    /**
     * @inheritDoc
     */
    FetchTransport.prototype.sendEvent = function (event) {
        return this._sendRequest(core_1.eventToSentryRequest(event, this._api), event);
    };
    /**
     * @inheritDoc
     */
    FetchTransport.prototype.sendSession = function (session) {
        return this._sendRequest(core_1.sessionToSentryRequest(session, this._api), session);
    };
    /**
     * @param sentryRequest Prepared SentryRequest to be delivered
     * @param originalPayload Original payload used to create SentryRequest
     */
    FetchTransport.prototype._sendRequest = function (sentryRequest, originalPayload) {
        var _this = this;
        if (this._isRateLimited(sentryRequest.type)) {
            return Promise.reject({
                event: originalPayload,
                type: sentryRequest.type,
                reason: "Transport locked till " + this._disabledUntil(sentryRequest.type) + " due to too many requests.",
                status: 429,
            });
        }
        var options = {
            body: sentryRequest.body,
            method: 'POST',
            // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default
            // https://caniuse.com/#feat=referrer-policy
            // It doesn't. And it throw exception instead of ignoring this parameter...
            // REF: https://github.com/getsentry/raven-js/issues/1233
            referrerPolicy: (utils_1.supportsReferrerPolicy() ? 'origin' : ''),
        };
        if (this.options.fetchParameters !== undefined) {
            Object.assign(options, this.options.fetchParameters);
        }
        if (this.options.headers !== undefined) {
            options.headers = this.options.headers;
        }
        return this._buffer.add(new utils_1.SyncPromise(function (resolve, reject) {
            global
                .fetch(sentryRequest.url, options)
                .then(function (response) {
                var headers = {
                    'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),
                    'retry-after': response.headers.get('Retry-After'),
                };
                _this._handleResponse({
                    requestType: sentryRequest.type,
                    response: response,
                    headers: headers,
                    resolve: resolve,
                    reject: reject,
                });
            })
                .catch(reject);
        }));
    };
    return FetchTransport;
}(base_1.BaseTransport));
exports.FetchTransport = FetchTransport;

},{"./base":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/transports/base.js","@sentry/core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/index.js","@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/transports/index.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var base_1 = _dereq_("./base");
exports.BaseTransport = base_1.BaseTransport;
var fetch_1 = _dereq_("./fetch");
exports.FetchTransport = fetch_1.FetchTransport;
var xhr_1 = _dereq_("./xhr");
exports.XHRTransport = xhr_1.XHRTransport;

},{"./base":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/transports/base.js","./fetch":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/transports/fetch.js","./xhr":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/transports/xhr.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/transports/xhr.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
var core_1 = _dereq_("@sentry/core");
var utils_1 = _dereq_("@sentry/utils");
var base_1 = _dereq_("./base");
/** `XHR` based transport */
var XHRTransport = /** @class */ (function (_super) {
    tslib_1.__extends(XHRTransport, _super);
    function XHRTransport() {
        return _super !== null &amp;&amp; _super.apply(this, arguments) || this;
    }
    /**
     * @inheritDoc
     */
    XHRTransport.prototype.sendEvent = function (event) {
        return this._sendRequest(core_1.eventToSentryRequest(event, this._api), event);
    };
    /**
     * @inheritDoc
     */
    XHRTransport.prototype.sendSession = function (session) {
        return this._sendRequest(core_1.sessionToSentryRequest(session, this._api), session);
    };
    /**
     * @param sentryRequest Prepared SentryRequest to be delivered
     * @param originalPayload Original payload used to create SentryRequest
     */
    XHRTransport.prototype._sendRequest = function (sentryRequest, originalPayload) {
        var _this = this;
        if (this._isRateLimited(sentryRequest.type)) {
            return Promise.reject({
                event: originalPayload,
                type: sentryRequest.type,
                reason: "Transport locked till " + this._disabledUntil(sentryRequest.type) + " due to too many requests.",
                status: 429,
            });
        }
        return this._buffer.add(new utils_1.SyncPromise(function (resolve, reject) {
            var request = new XMLHttpRequest();
            request.onreadystatechange = function () {
                if (request.readyState === 4) {
                    var headers = {
                        'x-sentry-rate-limits': request.getResponseHeader('X-Sentry-Rate-Limits'),
                        'retry-after': request.getResponseHeader('Retry-After'),
                    };
                    _this._handleResponse({ requestType: sentryRequest.type, response: request, headers: headers, resolve: resolve, reject: reject });
                }
            };
            request.open('POST', sentryRequest.url);
            for (var header in _this.options.headers) {
                if (_this.options.headers.hasOwnProperty(header)) {
                    request.setRequestHeader(header, _this.options.headers[header]);
                }
            }
            request.send(sentryRequest.body);
        }));
    };
    return XHRTransport;
}(base_1.BaseTransport));
exports.XHRTransport = XHRTransport;

},{"./base":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/transports/base.js","@sentry/core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/index.js","@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/version.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
exports.SDK_NAME = 'sentry.javascript.browser';
exports.SDK_VERSION = '5.30.0';

},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/node_modules/tslib/tslib.js":[function(_dereq_,module,exports){
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */

/* global global, define, System, Reflect, Promise */
var __extends;
var __assign;
var __rest;
var __decorate;
var __param;
var __metadata;
var __awaiter;
var __generator;
var __exportStar;
var __values;
var __read;
var __spread;
var __spreadArrays;
var __await;
var __asyncGenerator;
var __asyncDelegator;
var __asyncValues;
var __makeTemplateObject;
var __importStar;
var __importDefault;
var __classPrivateFieldGet;
var __classPrivateFieldSet;
var __createBinding;
(function (factory) {
    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
    if (typeof define === "function" &amp;&amp; define.amd) {
        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
    }
    else if (typeof module === "object" &amp;&amp; typeof module.exports === "object") {
        factory(createExporter(root, createExporter(module.exports)));
    }
    else {
        factory(createExporter(root));
    }
    function createExporter(exports, previous) {
        if (exports !== root) {
            if (typeof Object.create === "function") {
                Object.defineProperty(exports, "__esModule", { value: true });
            }
            else {
                exports.__esModule = true;
            }
        }
        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
    }
})
(function (exporter) {
    var extendStatics = Object.setPrototypeOf ||
        ({ __proto__: [] } instanceof Array &amp;&amp; function (d, b) { d.__proto__ = b; }) ||
        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };

    __extends = function (d, b) {
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };

    __assign = Object.assign || function (t) {
        for (var s, i = 1, n = arguments.length; i &lt; n; i++) {
            s = arguments[i];
            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
        }
        return t;
    };

    __rest = function (s, e) {
        var t = {};
        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) &amp;&amp; e.indexOf(p) &lt; 0)
            t[p] = s[p];
        if (s != null &amp;&amp; typeof Object.getOwnPropertySymbols === "function")
            for (var i = 0, p = Object.getOwnPropertySymbols(s); i &lt; p.length; i++) {
                if (e.indexOf(p[i]) &lt; 0 &amp;&amp; Object.prototype.propertyIsEnumerable.call(s, p[i]))
                    t[p[i]] = s[p[i]];
            }
        return t;
    };

    __decorate = function (decorators, target, key, desc) {
        var c = arguments.length, r = c &lt; 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
        if (typeof Reflect === "object" &amp;&amp; typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
        else for (var i = decorators.length - 1; i &gt;= 0; i--) if (d = decorators[i]) r = (c &lt; 3 ? d(r) : c &gt; 3 ? d(target, key, r) : d(target, key)) || r;
        return c &gt; 3 &amp;&amp; r &amp;&amp; Object.defineProperty(target, key, r), r;
    };

    __param = function (paramIndex, decorator) {
        return function (target, key) { decorator(target, key, paramIndex); }
    };

    __metadata = function (metadataKey, metadataValue) {
        if (typeof Reflect === "object" &amp;&amp; typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
    };

    __awaiter = function (thisArg, _arguments, P, generator) {
        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
        return new (P || (P = Promise))(function (resolve, reject) {
            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
            step((generator = generator.apply(thisArg, _arguments || [])).next());
        });
    };

    __generator = function (thisArg, body) {
        var _ = { label: 0, sent: function() { if (t[0] &amp; 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" &amp;&amp; (g[Symbol.iterator] = function() { return this; }), g;
        function verb(n) { return function (v) { return step([n, v]); }; }
        function step(op) {
            if (f) throw new TypeError("Generator is already executing.");
            while (_) try {
                if (f = 1, y &amp;&amp; (t = op[0] &amp; 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) &amp;&amp; t.call(y), 0) : y.next) &amp;&amp; !(t = t.call(y, op[1])).done) return t;
                if (y = 0, t) op = [op[0] &amp; 2, t.value];
                switch (op[0]) {
                    case 0: case 1: t = op; break;
                    case 4: _.label++; return { value: op[1], done: false };
                    case 5: _.label++; y = op[1]; op = [0]; continue;
                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
                    default:
                        if (!(t = _.trys, t = t.length &gt; 0 &amp;&amp; t[t.length - 1]) &amp;&amp; (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
                        if (op[0] === 3 &amp;&amp; (!t || (op[1] &gt; t[0] &amp;&amp; op[1] &lt; t[3]))) { _.label = op[1]; break; }
                        if (op[0] === 6 &amp;&amp; _.label &lt; t[1]) { _.label = t[1]; t = op; break; }
                        if (t &amp;&amp; _.label &lt; t[2]) { _.label = t[2]; _.ops.push(op); break; }
                        if (t[2]) _.ops.pop();
                        _.trys.pop(); continue;
                }
                op = body.call(thisArg, _);
            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
            if (op[0] &amp; 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
        }
    };

    __createBinding = function(o, m, k, k2) {
        if (k2 === undefined) k2 = k;
        o[k2] = m[k];
    };

    __exportStar = function (m, exports) {
        for (var p in m) if (p !== "default" &amp;&amp; !exports.hasOwnProperty(p)) exports[p] = m[p];
    };

    __values = function (o) {
        var s = typeof Symbol === "function" &amp;&amp; Symbol.iterator, m = s &amp;&amp; o[s], i = 0;
        if (m) return m.call(o);
        if (o &amp;&amp; typeof o.length === "number") return {
            next: function () {
                if (o &amp;&amp; i &gt;= o.length) o = void 0;
                return { value: o &amp;&amp; o[i++], done: !o };
            }
        };
        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
    };

    __read = function (o, n) {
        var m = typeof Symbol === "function" &amp;&amp; o[Symbol.iterator];
        if (!m) return o;
        var i = m.call(o), r, ar = [], e;
        try {
            while ((n === void 0 || n-- &gt; 0) &amp;&amp; !(r = i.next()).done) ar.push(r.value);
        }
        catch (error) { e = { error: error }; }
        finally {
            try {
                if (r &amp;&amp; !r.done &amp;&amp; (m = i["return"])) m.call(i);
            }
            finally { if (e) throw e.error; }
        }
        return ar;
    };

    __spread = function () {
        for (var ar = [], i = 0; i &lt; arguments.length; i++)
            ar = ar.concat(__read(arguments[i]));
        return ar;
    };

    __spreadArrays = function () {
        for (var s = 0, i = 0, il = arguments.length; i &lt; il; i++) s += arguments[i].length;
        for (var r = Array(s), k = 0, i = 0; i &lt; il; i++)
            for (var a = arguments[i], j = 0, jl = a.length; j &lt; jl; j++, k++)
                r[k] = a[j];
        return r;
    };

    __await = function (v) {
        return this instanceof __await ? (this.v = v, this) : new __await(v);
    };

    __asyncGenerator = function (thisArg, _arguments, generator) {
        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
        var g = generator.apply(thisArg, _arguments || []), i, q = [];
        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) &gt; 1 || resume(n, v); }); }; }
        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
        function fulfill(value) { resume("next", value); }
        function reject(value) { resume("throw", value); }
        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
    };

    __asyncDelegator = function (o) {
        var i, p;
        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
    };

    __asyncValues = function (o) {
        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
        var m = o[Symbol.asyncIterator], i;
        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
        function verb(n) { i[n] = o[n] &amp;&amp; function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
    };

    __makeTemplateObject = function (cooked, raw) {
        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
        return cooked;
    };

    __importStar = function (mod) {
        if (mod &amp;&amp; mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
        result["default"] = mod;
        return result;
    };

    __importDefault = function (mod) {
        return (mod &amp;&amp; mod.__esModule) ? mod : { "default": mod };
    };

    __classPrivateFieldGet = function (receiver, privateMap) {
        if (!privateMap.has(receiver)) {
            throw new TypeError("attempted to get private field on non-instance");
        }
        return privateMap.get(receiver);
    };

    __classPrivateFieldSet = function (receiver, privateMap, value) {
        if (!privateMap.has(receiver)) {
            throw new TypeError("attempted to set private field on non-instance");
        }
        privateMap.set(receiver, value);
        return value;
    };

    exporter("__extends", __extends);
    exporter("__assign", __assign);
    exporter("__rest", __rest);
    exporter("__decorate", __decorate);
    exporter("__param", __param);
    exporter("__metadata", __metadata);
    exporter("__awaiter", __awaiter);
    exporter("__generator", __generator);
    exporter("__exportStar", __exportStar);
    exporter("__createBinding", __createBinding);
    exporter("__values", __values);
    exporter("__read", __read);
    exporter("__spread", __spread);
    exporter("__spreadArrays", __spreadArrays);
    exporter("__await", __await);
    exporter("__asyncGenerator", __asyncGenerator);
    exporter("__asyncDelegator", __asyncDelegator);
    exporter("__asyncValues", __asyncValues);
    exporter("__makeTemplateObject", __makeTemplateObject);
    exporter("__importStar", __importStar);
    exporter("__importDefault", __importDefault);
    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
});

},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/api.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var utils_1 = _dereq_("@sentry/utils");
var SENTRY_API_VERSION = '7';
/** Helper class to provide urls to different Sentry endpoints. */
var API = /** @class */ (function () {
    /** Create a new instance of API */
    function API(dsn) {
        this.dsn = dsn;
        this._dsnObject = new utils_1.Dsn(dsn);
    }
    /** Returns the Dsn object. */
    API.prototype.getDsn = function () {
        return this._dsnObject;
    };
    /** Returns the prefix to construct Sentry ingestion API endpoints. */
    API.prototype.getBaseApiEndpoint = function () {
        var dsn = this._dsnObject;
        var protocol = dsn.protocol ? dsn.protocol + ":" : '';
        var port = dsn.port ? ":" + dsn.port : '';
        return protocol + "//" + dsn.host + port + (dsn.path ? "/" + dsn.path : '') + "/api/";
    };
    /** Returns the store endpoint URL. */
    API.prototype.getStoreEndpoint = function () {
        return this._getIngestEndpoint('store');
    };
    /**
     * Returns the store endpoint URL with auth in the query string.
     *
     * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.
     */
    API.prototype.getStoreEndpointWithUrlEncodedAuth = function () {
        return this.getStoreEndpoint() + "?" + this._encodedAuth();
    };
    /**
     * Returns the envelope endpoint URL with auth in the query string.
     *
     * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.
     */
    API.prototype.getEnvelopeEndpointWithUrlEncodedAuth = function () {
        return this._getEnvelopeEndpoint() + "?" + this._encodedAuth();
    };
    /** Returns only the path component for the store endpoint. */
    API.prototype.getStoreEndpointPath = function () {
        var dsn = this._dsnObject;
        return (dsn.path ? "/" + dsn.path : '') + "/api/" + dsn.projectId + "/store/";
    };
    /**
     * Returns an object that can be used in request headers.
     * This is needed for node and the old /store endpoint in sentry
     */
    API.prototype.getRequestHeaders = function (clientName, clientVersion) {
        var dsn = this._dsnObject;
        var header = ["Sentry sentry_version=" + SENTRY_API_VERSION];
        header.push("sentry_client=" + clientName + "/" + clientVersion);
        header.push("sentry_key=" + dsn.user);
        if (dsn.pass) {
            header.push("sentry_secret=" + dsn.pass);
        }
        return {
            'Content-Type': 'application/json',
            'X-Sentry-Auth': header.join(', '),
        };
    };
    /** Returns the url to the report dialog endpoint. */
    API.prototype.getReportDialogEndpoint = function (dialogOptions) {
        if (dialogOptions === void 0) { dialogOptions = {}; }
        var dsn = this._dsnObject;
        var endpoint = this.getBaseApiEndpoint() + "embed/error-page/";
        var encodedOptions = [];
        encodedOptions.push("dsn=" + dsn.toString());
        for (var key in dialogOptions) {
            if (key === 'dsn') {
                continue;
            }
            if (key === 'user') {
                if (!dialogOptions.user) {
                    continue;
                }
                if (dialogOptions.user.name) {
                    encodedOptions.push("name=" + encodeURIComponent(dialogOptions.user.name));
                }
                if (dialogOptions.user.email) {
                    encodedOptions.push("email=" + encodeURIComponent(dialogOptions.user.email));
                }
            }
            else {
                encodedOptions.push(encodeURIComponent(key) + "=" + encodeURIComponent(dialogOptions[key]));
            }
        }
        if (encodedOptions.length) {
            return endpoint + "?" + encodedOptions.join('&amp;');
        }
        return endpoint;
    };
    /** Returns the envelope endpoint URL. */
    API.prototype._getEnvelopeEndpoint = function () {
        return this._getIngestEndpoint('envelope');
    };
    /** Returns the ingest API endpoint for target. */
    API.prototype._getIngestEndpoint = function (target) {
        var base = this.getBaseApiEndpoint();
        var dsn = this._dsnObject;
        return "" + base + dsn.projectId + "/" + target + "/";
    };
    /** Returns a URL-encoded string with auth config suitable for a query string. */
    API.prototype._encodedAuth = function () {
        var dsn = this._dsnObject;
        var auth = {
            // We send only the minimum set of required information. See
            // https://github.com/getsentry/sentry-javascript/issues/2572.
            sentry_key: dsn.user,
            sentry_version: SENTRY_API_VERSION,
        };
        return utils_1.urlEncode(auth);
    };
    return API;
}());
exports.API = API;

},{"@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/basebackend.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var utils_1 = _dereq_("@sentry/utils");
var noop_1 = _dereq_("./transports/noop");
/**
 * This is the base implemention of a Backend.
 * @hidden
 */
var BaseBackend = /** @class */ (function () {
    /** Creates a new backend instance. */
    function BaseBackend(options) {
        this._options = options;
        if (!this._options.dsn) {
            utils_1.logger.warn('No DSN provided, backend will not do anything.');
        }
        this._transport = this._setupTransport();
    }
    /**
     * @inheritDoc
     */
    // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
    BaseBackend.prototype.eventFromException = function (_exception, _hint) {
        throw new utils_1.SentryError('Backend has to implement `eventFromException` method');
    };
    /**
     * @inheritDoc
     */
    BaseBackend.prototype.eventFromMessage = function (_message, _level, _hint) {
        throw new utils_1.SentryError('Backend has to implement `eventFromMessage` method');
    };
    /**
     * @inheritDoc
     */
    BaseBackend.prototype.sendEvent = function (event) {
        this._transport.sendEvent(event).then(null, function (reason) {
            utils_1.logger.error("Error while sending event: " + reason);
        });
    };
    /**
     * @inheritDoc
     */
    BaseBackend.prototype.sendSession = function (session) {
        if (!this._transport.sendSession) {
            utils_1.logger.warn("Dropping session because custom transport doesn't implement sendSession");
            return;
        }
        this._transport.sendSession(session).then(null, function (reason) {
            utils_1.logger.error("Error while sending session: " + reason);
        });
    };
    /**
     * @inheritDoc
     */
    BaseBackend.prototype.getTransport = function () {
        return this._transport;
    };
    /**
     * Sets up the transport so it can be used later to send requests.
     */
    BaseBackend.prototype._setupTransport = function () {
        return new noop_1.NoopTransport();
    };
    return BaseBackend;
}());
exports.BaseBackend = BaseBackend;

},{"./transports/noop":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/transports/noop.js","@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/baseclient.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
/* eslint-disable max-lines */
var hub_1 = _dereq_("@sentry/hub");
var types_1 = _dereq_("@sentry/types");
var utils_1 = _dereq_("@sentry/utils");
var integration_1 = _dereq_("./integration");
/**
 * Base implementation for all JavaScript SDK clients.
 *
 * Call the constructor with the corresponding backend constructor and options
 * specific to the client subclass. To access these options later, use
 * {@link Client.getOptions}. Also, the Backend instance is available via
 * {@link Client.getBackend}.
 *
 * If a Dsn is specified in the options, it will be parsed and stored. Use
 * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is
 * invalid, the constructor will throw a {@link SentryException}. Note that
 * without a valid Dsn, the SDK will not send any events to Sentry.
 *
 * Before sending an event via the backend, it is passed through
 * {@link BaseClient.prepareEvent} to add SDK information and scope data
 * (breadcrumbs and context). To add more custom information, override this
 * method and extend the resulting prepared event.
 *
 * To issue automatically created events (e.g. via instrumentation), use
 * {@link Client.captureEvent}. It will prepare the event and pass it through
 * the callback lifecycle. To issue auto-breadcrumbs, use
 * {@link Client.addBreadcrumb}.
 *
 * @example
 * class NodeClient extends BaseClient&lt;NodeBackend, NodeOptions&gt; {
 *   public constructor(options: NodeOptions) {
 *     super(NodeBackend, options);
 *   }
 *
 *   // ...
 * }
 */
var BaseClient = /** @class */ (function () {
    /**
     * Initializes this client instance.
     *
     * @param backendClass A constructor function to create the backend.
     * @param options Options for the client.
     */
    function BaseClient(backendClass, options) {
        /** Array of used integrations. */
        this._integrations = {};
        /** Number of call being processed */
        this._processing = 0;
        this._backend = new backendClass(options);
        this._options = options;
        if (options.dsn) {
            this._dsn = new utils_1.Dsn(options.dsn);
        }
    }
    /**
     * @inheritDoc
     */
    // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
    BaseClient.prototype.captureException = function (exception, hint, scope) {
        var _this = this;
        var eventId = hint &amp;&amp; hint.event_id;
        this._process(this._getBackend()
            .eventFromException(exception, hint)
            .then(function (event) { return _this._captureEvent(event, hint, scope); })
            .then(function (result) {
            eventId = result;
        }));
        return eventId;
    };
    /**
     * @inheritDoc
     */
    BaseClient.prototype.captureMessage = function (message, level, hint, scope) {
        var _this = this;
        var eventId = hint &amp;&amp; hint.event_id;
        var promisedEvent = utils_1.isPrimitive(message)
            ? this._getBackend().eventFromMessage(String(message), level, hint)
            : this._getBackend().eventFromException(message, hint);
        this._process(promisedEvent
            .then(function (event) { return _this._captureEvent(event, hint, scope); })
            .then(function (result) {
            eventId = result;
        }));
        return eventId;
    };
    /**
     * @inheritDoc
     */
    BaseClient.prototype.captureEvent = function (event, hint, scope) {
        var eventId = hint &amp;&amp; hint.event_id;
        this._process(this._captureEvent(event, hint, scope).then(function (result) {
            eventId = result;
        }));
        return eventId;
    };
    /**
     * @inheritDoc
     */
    BaseClient.prototype.captureSession = function (session) {
        if (!session.release) {
            utils_1.logger.warn('Discarded session because of missing release');
        }
        else {
            this._sendSession(session);
        }
    };
    /**
     * @inheritDoc
     */
    BaseClient.prototype.getDsn = function () {
        return this._dsn;
    };
    /**
     * @inheritDoc
     */
    BaseClient.prototype.getOptions = function () {
        return this._options;
    };
    /**
     * @inheritDoc
     */
    BaseClient.prototype.flush = function (timeout) {
        var _this = this;
        return this._isClientProcessing(timeout).then(function (ready) {
            return _this._getBackend()
                .getTransport()
                .close(timeout)
                .then(function (transportFlushed) { return ready &amp;&amp; transportFlushed; });
        });
    };
    /**
     * @inheritDoc
     */
    BaseClient.prototype.close = function (timeout) {
        var _this = this;
        return this.flush(timeout).then(function (result) {
            _this.getOptions().enabled = false;
            return result;
        });
    };
    /**
     * Sets up the integrations
     */
    BaseClient.prototype.setupIntegrations = function () {
        if (this._isEnabled()) {
            this._integrations = integration_1.setupIntegrations(this._options);
        }
    };
    /**
     * @inheritDoc
     */
    BaseClient.prototype.getIntegration = function (integration) {
        try {
            return this._integrations[integration.id] || null;
        }
        catch (_oO) {
            utils_1.logger.warn("Cannot retrieve integration " + integration.id + " from the current Client");
            return null;
        }
    };
    /** Updates existing session based on the provided event */
    BaseClient.prototype._updateSessionFromEvent = function (session, event) {
        var e_1, _a;
        var crashed = false;
        var errored = false;
        var userAgent;
        var exceptions = event.exception &amp;&amp; event.exception.values;
        if (exceptions) {
            errored = true;
            try {
                for (var exceptions_1 = tslib_1.__values(exceptions), exceptions_1_1 = exceptions_1.next(); !exceptions_1_1.done; exceptions_1_1 = exceptions_1.next()) {
                    var ex = exceptions_1_1.value;
                    var mechanism = ex.mechanism;
                    if (mechanism &amp;&amp; mechanism.handled === false) {
                        crashed = true;
                        break;
                    }
                }
            }
            catch (e_1_1) { e_1 = { error: e_1_1 }; }
            finally {
                try {
                    if (exceptions_1_1 &amp;&amp; !exceptions_1_1.done &amp;&amp; (_a = exceptions_1.return)) _a.call(exceptions_1);
                }
                finally { if (e_1) throw e_1.error; }
            }
        }
        var user = event.user;
        if (!session.userAgent) {
            var headers = event.request ? event.request.headers : {};
            for (var key in headers) {
                if (key.toLowerCase() === 'user-agent') {
                    userAgent = headers[key];
                    break;
                }
            }
        }
        session.update(tslib_1.__assign(tslib_1.__assign({}, (crashed &amp;&amp; { status: types_1.SessionStatus.Crashed })), { user: user,
            userAgent: userAgent, errors: session.errors + Number(errored || crashed) }));
    };
    /** Deliver captured session to Sentry */
    BaseClient.prototype._sendSession = function (session) {
        this._getBackend().sendSession(session);
    };
    /** Waits for the client to be done with processing. */
    BaseClient.prototype._isClientProcessing = function (timeout) {
        var _this = this;
        return new utils_1.SyncPromise(function (resolve) {
            var ticked = 0;
            var tick = 1;
            var interval = setInterval(function () {
                if (_this._processing == 0) {
                    clearInterval(interval);
                    resolve(true);
                }
                else {
                    ticked += tick;
                    if (timeout &amp;&amp; ticked &gt;= timeout) {
                        clearInterval(interval);
                        resolve(false);
                    }
                }
            }, tick);
        });
    };
    /** Returns the current backend. */
    BaseClient.prototype._getBackend = function () {
        return this._backend;
    };
    /** Determines whether this SDK is enabled and a valid Dsn is present. */
    BaseClient.prototype._isEnabled = function () {
        return this.getOptions().enabled !== false &amp;&amp; this._dsn !== undefined;
    };
    /**
     * Adds common information to events.
     *
     * The information includes release and environment from `options`,
     * breadcrumbs and context (extra, tags and user) from the scope.
     *
     * Information that is already present in the event is never overwritten. For
     * nested objects, such as the context, keys are merged.
     *
     * @param event The original event.
     * @param hint May contain additional information about the original exception.
     * @param scope A scope containing event metadata.
     * @returns A new event with more information.
     */
    BaseClient.prototype._prepareEvent = function (event, scope, hint) {
        var _this = this;
        var _a = this.getOptions().normalizeDepth, normalizeDepth = _a === void 0 ? 3 : _a;
        var prepared = tslib_1.__assign(tslib_1.__assign({}, event), { event_id: event.event_id || (hint &amp;&amp; hint.event_id ? hint.event_id : utils_1.uuid4()), timestamp: event.timestamp || utils_1.dateTimestampInSeconds() });
        this._applyClientOptions(prepared);
        this._applyIntegrationsMetadata(prepared);
        // If we have scope given to us, use it as the base for further modifications.
        // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.
        var finalScope = scope;
        if (hint &amp;&amp; hint.captureContext) {
            finalScope = hub_1.Scope.clone(finalScope).update(hint.captureContext);
        }
        // We prepare the result here with a resolved Event.
        var result = utils_1.SyncPromise.resolve(prepared);
        // This should be the last thing called, since we want that
        // {@link Hub.addEventProcessor} gets the finished prepared event.
        if (finalScope) {
            // In case we have a hub we reassign it.
            result = finalScope.applyToEvent(prepared, hint);
        }
        return result.then(function (evt) {
            if (typeof normalizeDepth === 'number' &amp;&amp; normalizeDepth &gt; 0) {
                return _this._normalizeEvent(evt, normalizeDepth);
            }
            return evt;
        });
    };
    /**
     * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.
     * Normalized keys:
     * - `breadcrumbs.data`
     * - `user`
     * - `contexts`
     * - `extra`
     * @param event Event
     * @returns Normalized event
     */
    BaseClient.prototype._normalizeEvent = function (event, depth) {
        if (!event) {
            return null;
        }
        var normalized = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, event), (event.breadcrumbs &amp;&amp; {
            breadcrumbs: event.breadcrumbs.map(function (b) { return (tslib_1.__assign(tslib_1.__assign({}, b), (b.data &amp;&amp; {
                data: utils_1.normalize(b.data, depth),
            }))); }),
        })), (event.user &amp;&amp; {
            user: utils_1.normalize(event.user, depth),
        })), (event.contexts &amp;&amp; {
            contexts: utils_1.normalize(event.contexts, depth),
        })), (event.extra &amp;&amp; {
            extra: utils_1.normalize(event.extra, depth),
        }));
        // event.contexts.trace stores information about a Transaction. Similarly,
        // event.spans[] stores information about child Spans. Given that a
        // Transaction is conceptually a Span, normalization should apply to both
        // Transactions and Spans consistently.
        // For now the decision is to skip normalization of Transactions and Spans,
        // so this block overwrites the normalized event to add back the original
        // Transaction information prior to normalization.
        if (event.contexts &amp;&amp; event.contexts.trace) {
            // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
            normalized.contexts.trace = event.contexts.trace;
        }
        return normalized;
    };
    /**
     *  Enhances event using the client configuration.
     *  It takes care of all "static" values like environment, release and `dist`,
     *  as well as truncating overly long values.
     * @param event event instance to be enhanced
     */
    BaseClient.prototype._applyClientOptions = function (event) {
        var options = this.getOptions();
        var environment = options.environment, release = options.release, dist = options.dist, _a = options.maxValueLength, maxValueLength = _a === void 0 ? 250 : _a;
        if (!('environment' in event)) {
            event.environment = 'environment' in options ? environment : 'production';
        }
        if (event.release === undefined &amp;&amp; release !== undefined) {
            event.release = release;
        }
        if (event.dist === undefined &amp;&amp; dist !== undefined) {
            event.dist = dist;
        }
        if (event.message) {
            event.message = utils_1.truncate(event.message, maxValueLength);
        }
        var exception = event.exception &amp;&amp; event.exception.values &amp;&amp; event.exception.values[0];
        if (exception &amp;&amp; exception.value) {
            exception.value = utils_1.truncate(exception.value, maxValueLength);
        }
        var request = event.request;
        if (request &amp;&amp; request.url) {
            request.url = utils_1.truncate(request.url, maxValueLength);
        }
    };
    /**
     * This function adds all used integrations to the SDK info in the event.
     * @param sdkInfo The sdkInfo of the event that will be filled with all integrations.
     */
    BaseClient.prototype._applyIntegrationsMetadata = function (event) {
        var sdkInfo = event.sdk;
        var integrationsArray = Object.keys(this._integrations);
        if (sdkInfo &amp;&amp; integrationsArray.length &gt; 0) {
            sdkInfo.integrations = integrationsArray;
        }
    };
    /**
     * Tells the backend to send this event
     * @param event The Sentry event to send
     */
    BaseClient.prototype._sendEvent = function (event) {
        this._getBackend().sendEvent(event);
    };
    /**
     * Processes the event and logs an error in case of rejection
     * @param event
     * @param hint
     * @param scope
     */
    BaseClient.prototype._captureEvent = function (event, hint, scope) {
        return this._processEvent(event, hint, scope).then(function (finalEvent) {
            return finalEvent.event_id;
        }, function (reason) {
            utils_1.logger.error(reason);
            return undefined;
        });
    };
    /**
     * Processes an event (either error or message) and sends it to Sentry.
     *
     * This also adds breadcrumbs and context information to the event. However,
     * platform specific meta data (such as the User's IP address) must be added
     * by the SDK implementor.
     *
     *
     * @param event The event to send to Sentry.
     * @param hint May contain additional information about the original exception.
     * @param scope A scope containing event metadata.
     * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.
     */
    BaseClient.prototype._processEvent = function (event, hint, scope) {
        var _this = this;
        // eslint-disable-next-line @typescript-eslint/unbound-method
        var _a = this.getOptions(), beforeSend = _a.beforeSend, sampleRate = _a.sampleRate;
        if (!this._isEnabled()) {
            return utils_1.SyncPromise.reject(new utils_1.SentryError('SDK not enabled, will not send event.'));
        }
        var isTransaction = event.type === 'transaction';
        // 1.0 === 100% events are sent
        // 0.0 === 0% events are sent
        // Sampling for transaction happens somewhere else
        if (!isTransaction &amp;&amp; typeof sampleRate === 'number' &amp;&amp; Math.random() &gt; sampleRate) {
            return utils_1.SyncPromise.reject(new utils_1.SentryError("Discarding event because it's not included in the random sample (sampling rate = " + sampleRate + ")"));
        }
        return this._prepareEvent(event, scope, hint)
            .then(function (prepared) {
            if (prepared === null) {
                throw new utils_1.SentryError('An event processor returned null, will not send event.');
            }
            var isInternalException = hint &amp;&amp; hint.data &amp;&amp; hint.data.__sentry__ === true;
            if (isInternalException || isTransaction || !beforeSend) {
                return prepared;
            }
            var beforeSendResult = beforeSend(prepared, hint);
            if (typeof beforeSendResult === 'undefined') {
                throw new utils_1.SentryError('`beforeSend` method has to return `null` or a valid event.');
            }
            else if (utils_1.isThenable(beforeSendResult)) {
                return beforeSendResult.then(function (event) { return event; }, function (e) {
                    throw new utils_1.SentryError("beforeSend rejected with " + e);
                });
            }
            return beforeSendResult;
        })
            .then(function (processedEvent) {
            if (processedEvent === null) {
                throw new utils_1.SentryError('`beforeSend` returned `null`, will not send event.');
            }
            var session = scope &amp;&amp; scope.getSession &amp;&amp; scope.getSession();
            if (!isTransaction &amp;&amp; session) {
                _this._updateSessionFromEvent(session, processedEvent);
            }
            _this._sendEvent(processedEvent);
            return processedEvent;
        })
            .then(null, function (reason) {
            if (reason instanceof utils_1.SentryError) {
                throw reason;
            }
            _this.captureException(reason, {
                data: {
                    __sentry__: true,
                },
                originalException: reason,
            });
            throw new utils_1.SentryError("Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\nReason: " + reason);
        });
    };
    /**
     * Occupies the client with processing and event
     */
    BaseClient.prototype._process = function (promise) {
        var _this = this;
        this._processing += 1;
        promise.then(function (value) {
            _this._processing -= 1;
            return value;
        }, function (reason) {
            _this._processing -= 1;
            return reason;
        });
    };
    return BaseClient;
}());
exports.BaseClient = BaseClient;

},{"./integration":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/integration.js","@sentry/hub":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/hub/dist/index.js","@sentry/types":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/types/dist/index.js","@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/index.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var minimal_1 = _dereq_("@sentry/minimal");
exports.addBreadcrumb = minimal_1.addBreadcrumb;
exports.captureException = minimal_1.captureException;
exports.captureEvent = minimal_1.captureEvent;
exports.captureMessage = minimal_1.captureMessage;
exports.configureScope = minimal_1.configureScope;
exports.startTransaction = minimal_1.startTransaction;
exports.setContext = minimal_1.setContext;
exports.setExtra = minimal_1.setExtra;
exports.setExtras = minimal_1.setExtras;
exports.setTag = minimal_1.setTag;
exports.setTags = minimal_1.setTags;
exports.setUser = minimal_1.setUser;
exports.withScope = minimal_1.withScope;
var hub_1 = _dereq_("@sentry/hub");
exports.addGlobalEventProcessor = hub_1.addGlobalEventProcessor;
exports.getCurrentHub = hub_1.getCurrentHub;
exports.getHubFromCarrier = hub_1.getHubFromCarrier;
exports.Hub = hub_1.Hub;
exports.makeMain = hub_1.makeMain;
exports.Scope = hub_1.Scope;
var api_1 = _dereq_("./api");
exports.API = api_1.API;
var baseclient_1 = _dereq_("./baseclient");
exports.BaseClient = baseclient_1.BaseClient;
var basebackend_1 = _dereq_("./basebackend");
exports.BaseBackend = basebackend_1.BaseBackend;
var request_1 = _dereq_("./request");
exports.eventToSentryRequest = request_1.eventToSentryRequest;
exports.sessionToSentryRequest = request_1.sessionToSentryRequest;
var sdk_1 = _dereq_("./sdk");
exports.initAndBind = sdk_1.initAndBind;
var noop_1 = _dereq_("./transports/noop");
exports.NoopTransport = noop_1.NoopTransport;
var Integrations = _dereq_("./integrations");
exports.Integrations = Integrations;

},{"./api":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/api.js","./basebackend":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/basebackend.js","./baseclient":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/baseclient.js","./integrations":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/integrations/index.js","./request":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/request.js","./sdk":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/sdk.js","./transports/noop":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/transports/noop.js","@sentry/hub":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/hub/dist/index.js","@sentry/minimal":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/minimal/dist/index.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/integration.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
var hub_1 = _dereq_("@sentry/hub");
var utils_1 = _dereq_("@sentry/utils");
exports.installedIntegrations = [];
/** Gets integration to install */
function getIntegrationsToSetup(options) {
    var defaultIntegrations = (options.defaultIntegrations &amp;&amp; tslib_1.__spread(options.defaultIntegrations)) || [];
    var userIntegrations = options.integrations;
    var integrations = [];
    if (Array.isArray(userIntegrations)) {
        var userIntegrationsNames_1 = userIntegrations.map(function (i) { return i.name; });
        var pickedIntegrationsNames_1 = [];
        // Leave only unique default integrations, that were not overridden with provided user integrations
        defaultIntegrations.forEach(function (defaultIntegration) {
            if (userIntegrationsNames_1.indexOf(defaultIntegration.name) === -1 &amp;&amp;
                pickedIntegrationsNames_1.indexOf(defaultIntegration.name) === -1) {
                integrations.push(defaultIntegration);
                pickedIntegrationsNames_1.push(defaultIntegration.name);
            }
        });
        // Don't add same user integration twice
        userIntegrations.forEach(function (userIntegration) {
            if (pickedIntegrationsNames_1.indexOf(userIntegration.name) === -1) {
                integrations.push(userIntegration);
                pickedIntegrationsNames_1.push(userIntegration.name);
            }
        });
    }
    else if (typeof userIntegrations === 'function') {
        integrations = userIntegrations(defaultIntegrations);
        integrations = Array.isArray(integrations) ? integrations : [integrations];
    }
    else {
        integrations = tslib_1.__spread(defaultIntegrations);
    }
    // Make sure that if present, `Debug` integration will always run last
    var integrationsNames = integrations.map(function (i) { return i.name; });
    var alwaysLastToRun = 'Debug';
    if (integrationsNames.indexOf(alwaysLastToRun) !== -1) {
        integrations.push.apply(integrations, tslib_1.__spread(integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1)));
    }
    return integrations;
}
exports.getIntegrationsToSetup = getIntegrationsToSetup;
/** Setup given integration */
function setupIntegration(integration) {
    if (exports.installedIntegrations.indexOf(integration.name) !== -1) {
        return;
    }
    integration.setupOnce(hub_1.addGlobalEventProcessor, hub_1.getCurrentHub);
    exports.installedIntegrations.push(integration.name);
    utils_1.logger.log("Integration installed: " + integration.name);
}
exports.setupIntegration = setupIntegration;
/**
 * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default
 * integrations are added unless they were already provided before.
 * @param integrations array of integration instances
 * @param withDefault should enable default integrations
 */
function setupIntegrations(options) {
    var integrations = {};
    getIntegrationsToSetup(options).forEach(function (integration) {
        integrations[integration.name] = integration;
        setupIntegration(integration);
    });
    return integrations;
}
exports.setupIntegrations = setupIntegrations;

},{"@sentry/hub":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/hub/dist/index.js","@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/integrations/functiontostring.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var originalFunctionToString;
/** Patch toString calls to return proper name for wrapped functions */
var FunctionToString = /** @class */ (function () {
    function FunctionToString() {
        /**
         * @inheritDoc
         */
        this.name = FunctionToString.id;
    }
    /**
     * @inheritDoc
     */
    FunctionToString.prototype.setupOnce = function () {
        // eslint-disable-next-line @typescript-eslint/unbound-method
        originalFunctionToString = Function.prototype.toString;
        // eslint-disable-next-line @typescript-eslint/no-explicit-any
        Function.prototype.toString = function () {
            var args = [];
            for (var _i = 0; _i &lt; arguments.length; _i++) {
                args[_i] = arguments[_i];
            }
            var context = this.__sentry_original__ || this;
            return originalFunctionToString.apply(context, args);
        };
    };
    /**
     * @inheritDoc
     */
    FunctionToString.id = 'FunctionToString';
    return FunctionToString;
}());
exports.FunctionToString = FunctionToString;

},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/integrations/inboundfilters.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
var hub_1 = _dereq_("@sentry/hub");
var utils_1 = _dereq_("@sentry/utils");
// "Script error." is hard coded into browsers for errors that it can't read.
// this is the result of a script being pulled in from an external domain and CORS.
var DEFAULT_IGNORE_ERRORS = [/^Script error\.?$/, /^Javascript error: Script error\.? on line 0$/];
/** Inbound filters configurable by the user */
var InboundFilters = /** @class */ (function () {
    function InboundFilters(_options) {
        if (_options === void 0) { _options = {}; }
        this._options = _options;
        /**
         * @inheritDoc
         */
        this.name = InboundFilters.id;
    }
    /**
     * @inheritDoc
     */
    InboundFilters.prototype.setupOnce = function () {
        hub_1.addGlobalEventProcessor(function (event) {
            var hub = hub_1.getCurrentHub();
            if (!hub) {
                return event;
            }
            var self = hub.getIntegration(InboundFilters);
            if (self) {
                var client = hub.getClient();
                var clientOptions = client ? client.getOptions() : {};
                var options = self._mergeOptions(clientOptions);
                if (self._shouldDropEvent(event, options)) {
                    return null;
                }
            }
            return event;
        });
    };
    /** JSDoc */
    InboundFilters.prototype._shouldDropEvent = function (event, options) {
        if (this._isSentryError(event, options)) {
            utils_1.logger.warn("Event dropped due to being internal Sentry Error.\nEvent: " + utils_1.getEventDescription(event));
            return true;
        }
        if (this._isIgnoredError(event, options)) {
            utils_1.logger.warn("Event dropped due to being matched by `ignoreErrors` option.\nEvent: " + utils_1.getEventDescription(event));
            return true;
        }
        if (this._isDeniedUrl(event, options)) {
            utils_1.logger.warn("Event dropped due to being matched by `denyUrls` option.\nEvent: " + utils_1.getEventDescription(event) + ".\nUrl: " + this._getEventFilterUrl(event));
            return true;
        }
        if (!this._isAllowedUrl(event, options)) {
            utils_1.logger.warn("Event dropped due to not being matched by `allowUrls` option.\nEvent: " + utils_1.getEventDescription(event) + ".\nUrl: " + this._getEventFilterUrl(event));
            return true;
        }
        return false;
    };
    /** JSDoc */
    InboundFilters.prototype._isSentryError = function (event, options) {
        if (!options.ignoreInternal) {
            return false;
        }
        try {
            return ((event &amp;&amp;
                event.exception &amp;&amp;
                event.exception.values &amp;&amp;
                event.exception.values[0] &amp;&amp;
                event.exception.values[0].type === 'SentryError') ||
                false);
        }
        catch (_oO) {
            return false;
        }
    };
    /** JSDoc */
    InboundFilters.prototype._isIgnoredError = function (event, options) {
        if (!options.ignoreErrors || !options.ignoreErrors.length) {
            return false;
        }
        return this._getPossibleEventMessages(event).some(function (message) {
            // Not sure why TypeScript complains here...
            return options.ignoreErrors.some(function (pattern) { return utils_1.isMatchingPattern(message, pattern); });
        });
    };
    /** JSDoc */
    InboundFilters.prototype._isDeniedUrl = function (event, options) {
        // TODO: Use Glob instead?
        if (!options.denyUrls || !options.denyUrls.length) {
            return false;
        }
        var url = this._getEventFilterUrl(event);
        return !url ? false : options.denyUrls.some(function (pattern) { return utils_1.isMatchingPattern(url, pattern); });
    };
    /** JSDoc */
    InboundFilters.prototype._isAllowedUrl = function (event, options) {
        // TODO: Use Glob instead?
        if (!options.allowUrls || !options.allowUrls.length) {
            return true;
        }
        var url = this._getEventFilterUrl(event);
        return !url ? true : options.allowUrls.some(function (pattern) { return utils_1.isMatchingPattern(url, pattern); });
    };
    /** JSDoc */
    InboundFilters.prototype._mergeOptions = function (clientOptions) {
        if (clientOptions === void 0) { clientOptions = {}; }
        return {
            allowUrls: tslib_1.__spread((this._options.whitelistUrls || []), (this._options.allowUrls || []), (clientOptions.whitelistUrls || []), (clientOptions.allowUrls || [])),
            denyUrls: tslib_1.__spread((this._options.blacklistUrls || []), (this._options.denyUrls || []), (clientOptions.blacklistUrls || []), (clientOptions.denyUrls || [])),
            ignoreErrors: tslib_1.__spread((this._options.ignoreErrors || []), (clientOptions.ignoreErrors || []), DEFAULT_IGNORE_ERRORS),
            ignoreInternal: typeof this._options.ignoreInternal !== 'undefined' ? this._options.ignoreInternal : true,
        };
    };
    /** JSDoc */
    InboundFilters.prototype._getPossibleEventMessages = function (event) {
        if (event.message) {
            return [event.message];
        }
        if (event.exception) {
            try {
                var _a = (event.exception.values &amp;&amp; event.exception.values[0]) || {}, _b = _a.type, type = _b === void 0 ? '' : _b, _c = _a.value, value = _c === void 0 ? '' : _c;
                return ["" + value, type + ": " + value];
            }
            catch (oO) {
                utils_1.logger.error("Cannot extract message for event " + utils_1.getEventDescription(event));
                return [];
            }
        }
        return [];
    };
    /** JSDoc */
    InboundFilters.prototype._getEventFilterUrl = function (event) {
        try {
            if (event.stacktrace) {
                var frames_1 = event.stacktrace.frames;
                return (frames_1 &amp;&amp; frames_1[frames_1.length - 1].filename) || null;
            }
            if (event.exception) {
                var frames_2 = event.exception.values &amp;&amp; event.exception.values[0].stacktrace &amp;&amp; event.exception.values[0].stacktrace.frames;
                return (frames_2 &amp;&amp; frames_2[frames_2.length - 1].filename) || null;
            }
            return null;
        }
        catch (oO) {
            utils_1.logger.error("Cannot extract url for event " + utils_1.getEventDescription(event));
            return null;
        }
    };
    /**
     * @inheritDoc
     */
    InboundFilters.id = 'InboundFilters';
    return InboundFilters;
}());
exports.InboundFilters = InboundFilters;

},{"@sentry/hub":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/hub/dist/index.js","@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/integrations/index.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var functiontostring_1 = _dereq_("./functiontostring");
exports.FunctionToString = functiontostring_1.FunctionToString;
var inboundfilters_1 = _dereq_("./inboundfilters");
exports.InboundFilters = inboundfilters_1.InboundFilters;

},{"./functiontostring":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/integrations/functiontostring.js","./inboundfilters":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/integrations/inboundfilters.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/request.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
/** Creates a SentryRequest from an event. */
function sessionToSentryRequest(session, api) {
    var envelopeHeaders = JSON.stringify({
        sent_at: new Date().toISOString(),
    });
    var itemHeaders = JSON.stringify({
        type: 'session',
    });
    return {
        body: envelopeHeaders + "\n" + itemHeaders + "\n" + JSON.stringify(session),
        type: 'session',
        url: api.getEnvelopeEndpointWithUrlEncodedAuth(),
    };
}
exports.sessionToSentryRequest = sessionToSentryRequest;
/** Creates a SentryRequest from an event. */
function eventToSentryRequest(event, api) {
    // since JS has no Object.prototype.pop()
    var _a = event.tags || {}, samplingMethod = _a.__sentry_samplingMethod, sampleRate = _a.__sentry_sampleRate, otherTags = tslib_1.__rest(_a, ["__sentry_samplingMethod", "__sentry_sampleRate"]);
    event.tags = otherTags;
    var useEnvelope = event.type === 'transaction';
    var req = {
        body: JSON.stringify(event),
        type: event.type || 'event',
        url: useEnvelope ? api.getEnvelopeEndpointWithUrlEncodedAuth() : api.getStoreEndpointWithUrlEncodedAuth(),
    };
    // https://develop.sentry.dev/sdk/envelopes/
    // Since we don't need to manipulate envelopes nor store them, there is no
    // exported concept of an Envelope with operations including serialization and
    // deserialization. Instead, we only implement a minimal subset of the spec to
    // serialize events inline here.
    if (useEnvelope) {
        var envelopeHeaders = JSON.stringify({
            event_id: event.event_id,
            sent_at: new Date().toISOString(),
        });
        var itemHeaders = JSON.stringify({
            type: event.type,
            // TODO: Right now, sampleRate may or may not be defined (it won't be in the cases of inheritance and
            // explicitly-set sampling decisions). Are we good with that?
            sample_rates: [{ id: samplingMethod, rate: sampleRate }],
        });
        // The trailing newline is optional. We intentionally don't send it to avoid
        // sending unnecessary bytes.
        //
        // const envelope = `${envelopeHeaders}\n${itemHeaders}\n${req.body}\n`;
        var envelope = envelopeHeaders + "\n" + itemHeaders + "\n" + req.body;
        req.body = envelope;
    }
    return req;
}
exports.eventToSentryRequest = eventToSentryRequest;

},{"tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/sdk.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var hub_1 = _dereq_("@sentry/hub");
var utils_1 = _dereq_("@sentry/utils");
/**
 * Internal function to create a new SDK client instance. The client is
 * installed and then bound to the current scope.
 *
 * @param clientClass The client class to instantiate.
 * @param options Options to pass to the client.
 */
function initAndBind(clientClass, options) {
    if (options.debug === true) {
        utils_1.logger.enable();
    }
    var hub = hub_1.getCurrentHub();
    var client = new clientClass(options);
    hub.bindClient(client);
}
exports.initAndBind = initAndBind;

},{"@sentry/hub":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/hub/dist/index.js","@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/dist/transports/noop.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var types_1 = _dereq_("@sentry/types");
var utils_1 = _dereq_("@sentry/utils");
/** Noop transport */
var NoopTransport = /** @class */ (function () {
    function NoopTransport() {
    }
    /**
     * @inheritDoc
     */
    NoopTransport.prototype.sendEvent = function (_) {
        return utils_1.SyncPromise.resolve({
            reason: "NoopTransport: Event has been skipped because no Dsn is configured.",
            status: types_1.Status.Skipped,
        });
    };
    /**
     * @inheritDoc
     */
    NoopTransport.prototype.close = function (_) {
        return utils_1.SyncPromise.resolve(true);
    };
    return NoopTransport;
}());
exports.NoopTransport = NoopTransport;

},{"@sentry/types":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/types/dist/index.js","@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/core/node_modules/tslib/tslib.js":[function(_dereq_,module,exports){
arguments[4]["/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/node_modules/tslib/tslib.js"][0].apply(exports,arguments)
},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/hub/dist/hub.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
var utils_1 = _dereq_("@sentry/utils");
var scope_1 = _dereq_("./scope");
var session_1 = _dereq_("./session");
/**
 * API compatibility version of this hub.
 *
 * WARNING: This number should only be increased when the global interface
 * changes and new methods are introduced.
 *
 * @hidden
 */
exports.API_VERSION = 3;
/**
 * Default maximum number of breadcrumbs added to an event. Can be overwritten
 * with {@link Options.maxBreadcrumbs}.
 */
var DEFAULT_BREADCRUMBS = 100;
/**
 * Absolute maximum number of breadcrumbs added to an event. The
 * `maxBreadcrumbs` option cannot be higher than this value.
 */
var MAX_BREADCRUMBS = 100;
/**
 * @inheritDoc
 */
var Hub = /** @class */ (function () {
    /**
     * Creates a new instance of the hub, will push one {@link Layer} into the
     * internal stack on creation.
     *
     * @param client bound to the hub.
     * @param scope bound to the hub.
     * @param version number, higher number means higher priority.
     */
    function Hub(client, scope, _version) {
        if (scope === void 0) { scope = new scope_1.Scope(); }
        if (_version === void 0) { _version = exports.API_VERSION; }
        this._version = _version;
        /** Is a {@link Layer}[] containing the client and scope */
        this._stack = [{}];
        this.getStackTop().scope = scope;
        this.bindClient(client);
    }
    /**
     * @inheritDoc
     */
    Hub.prototype.isOlderThan = function (version) {
        return this._version &lt; version;
    };
    /**
     * @inheritDoc
     */
    Hub.prototype.bindClient = function (client) {
        var top = this.getStackTop();
        top.client = client;
        if (client &amp;&amp; client.setupIntegrations) {
            client.setupIntegrations();
        }
    };
    /**
     * @inheritDoc
     */
    Hub.prototype.pushScope = function () {
        // We want to clone the content of prev scope
        var scope = scope_1.Scope.clone(this.getScope());
        this.getStack().push({
            client: this.getClient(),
            scope: scope,
        });
        return scope;
    };
    /**
     * @inheritDoc
     */
    Hub.prototype.popScope = function () {
        if (this.getStack().length &lt;= 1)
            return false;
        return !!this.getStack().pop();
    };
    /**
     * @inheritDoc
     */
    Hub.prototype.withScope = function (callback) {
        var scope = this.pushScope();
        try {
            callback(scope);
        }
        finally {
            this.popScope();
        }
    };
    /**
     * @inheritDoc
     */
    Hub.prototype.getClient = function () {
        return this.getStackTop().client;
    };
    /** Returns the scope of the top stack. */
    Hub.prototype.getScope = function () {
        return this.getStackTop().scope;
    };
    /** Returns the scope stack for domains or the process. */
    Hub.prototype.getStack = function () {
        return this._stack;
    };
    /** Returns the topmost scope layer in the order domain &gt; local &gt; process. */
    Hub.prototype.getStackTop = function () {
        return this._stack[this._stack.length - 1];
    };
    /**
     * @inheritDoc
     */
    // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
    Hub.prototype.captureException = function (exception, hint) {
        var eventId = (this._lastEventId = utils_1.uuid4());
        var finalHint = hint;
        // If there's no explicit hint provided, mimick the same thing that would happen
        // in the minimal itself to create a consistent behavior.
        // We don't do this in the client, as it's the lowest level API, and doing this,
        // would prevent user from having full control over direct calls.
        if (!hint) {
            var syntheticException = void 0;
            try {
                throw new Error('Sentry syntheticException');
            }
            catch (exception) {
                syntheticException = exception;
            }
            finalHint = {
                originalException: exception,
                syntheticException: syntheticException,
            };
        }
        this._invokeClient('captureException', exception, tslib_1.__assign(tslib_1.__assign({}, finalHint), { event_id: eventId }));
        return eventId;
    };
    /**
     * @inheritDoc
     */
    Hub.prototype.captureMessage = function (message, level, hint) {
        var eventId = (this._lastEventId = utils_1.uuid4());
        var finalHint = hint;
        // If there's no explicit hint provided, mimick the same thing that would happen
        // in the minimal itself to create a consistent behavior.
        // We don't do this in the client, as it's the lowest level API, and doing this,
        // would prevent user from having full control over direct calls.
        if (!hint) {
            var syntheticException = void 0;
            try {
                throw new Error(message);
            }
            catch (exception) {
                syntheticException = exception;
            }
            finalHint = {
                originalException: message,
                syntheticException: syntheticException,
            };
        }
        this._invokeClient('captureMessage', message, level, tslib_1.__assign(tslib_1.__assign({}, finalHint), { event_id: eventId }));
        return eventId;
    };
    /**
     * @inheritDoc
     */
    Hub.prototype.captureEvent = function (event, hint) {
        var eventId = (this._lastEventId = utils_1.uuid4());
        this._invokeClient('captureEvent', event, tslib_1.__assign(tslib_1.__assign({}, hint), { event_id: eventId }));
        return eventId;
    };
    /**
     * @inheritDoc
     */
    Hub.prototype.lastEventId = function () {
        return this._lastEventId;
    };
    /**
     * @inheritDoc
     */
    Hub.prototype.addBreadcrumb = function (breadcrumb, hint) {
        var _a = this.getStackTop(), scope = _a.scope, client = _a.client;
        if (!scope || !client)
            return;
        // eslint-disable-next-line @typescript-eslint/unbound-method
        var _b = (client.getOptions &amp;&amp; client.getOptions()) || {}, _c = _b.beforeBreadcrumb, beforeBreadcrumb = _c === void 0 ? null : _c, _d = _b.maxBreadcrumbs, maxBreadcrumbs = _d === void 0 ? DEFAULT_BREADCRUMBS : _d;
        if (maxBreadcrumbs &lt;= 0)
            return;
        var timestamp = utils_1.dateTimestampInSeconds();
        var mergedBreadcrumb = tslib_1.__assign({ timestamp: timestamp }, breadcrumb);
        var finalBreadcrumb = beforeBreadcrumb
            ? utils_1.consoleSandbox(function () { return beforeBreadcrumb(mergedBreadcrumb, hint); })
            : mergedBreadcrumb;
        if (finalBreadcrumb === null)
            return;
        scope.addBreadcrumb(finalBreadcrumb, Math.min(maxBreadcrumbs, MAX_BREADCRUMBS));
    };
    /**
     * @inheritDoc
     */
    Hub.prototype.setUser = function (user) {
        var scope = this.getScope();
        if (scope)
            scope.setUser(user);
    };
    /**
     * @inheritDoc
     */
    Hub.prototype.setTags = function (tags) {
        var scope = this.getScope();
        if (scope)
            scope.setTags(tags);
    };
    /**
     * @inheritDoc
     */
    Hub.prototype.setExtras = function (extras) {
        var scope = this.getScope();
        if (scope)
            scope.setExtras(extras);
    };
    /**
     * @inheritDoc
     */
    Hub.prototype.setTag = function (key, value) {
        var scope = this.getScope();
        if (scope)
            scope.setTag(key, value);
    };
    /**
     * @inheritDoc
     */
    Hub.prototype.setExtra = function (key, extra) {
        var scope = this.getScope();
        if (scope)
            scope.setExtra(key, extra);
    };
    /**
     * @inheritDoc
     */
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    Hub.prototype.setContext = function (name, context) {
        var scope = this.getScope();
        if (scope)
            scope.setContext(name, context);
    };
    /**
     * @inheritDoc
     */
    Hub.prototype.configureScope = function (callback) {
        var _a = this.getStackTop(), scope = _a.scope, client = _a.client;
        if (scope &amp;&amp; client) {
            callback(scope);
        }
    };
    /**
     * @inheritDoc
     */
    Hub.prototype.run = function (callback) {
        var oldHub = makeMain(this);
        try {
            callback(this);
        }
        finally {
            makeMain(oldHub);
        }
    };
    /**
     * @inheritDoc
     */
    Hub.prototype.getIntegration = function (integration) {
        var client = this.getClient();
        if (!client)
            return null;
        try {
            return client.getIntegration(integration);
        }
        catch (_oO) {
            utils_1.logger.warn("Cannot retrieve integration " + integration.id + " from the current Hub");
            return null;
        }
    };
    /**
     * @inheritDoc
     */
    Hub.prototype.startSpan = function (context) {
        return this._callExtensionMethod('startSpan', context);
    };
    /**
     * @inheritDoc
     */
    Hub.prototype.startTransaction = function (context, customSamplingContext) {
        return this._callExtensionMethod('startTransaction', context, customSamplingContext);
    };
    /**
     * @inheritDoc
     */
    Hub.prototype.traceHeaders = function () {
        return this._callExtensionMethod('traceHeaders');
    };
    /**
     * @inheritDoc
     */
    Hub.prototype.startSession = function (context) {
        // End existing session if there's one
        this.endSession();
        var _a = this.getStackTop(), scope = _a.scope, client = _a.client;
        var _b = (client &amp;&amp; client.getOptions()) || {}, release = _b.release, environment = _b.environment;
        var session = new session_1.Session(tslib_1.__assign(tslib_1.__assign({ release: release,
            environment: environment }, (scope &amp;&amp; { user: scope.getUser() })), context));
        if (scope) {
            scope.setSession(session);
        }
        return session;
    };
    /**
     * @inheritDoc
     */
    Hub.prototype.endSession = function () {
        var _a = this.getStackTop(), scope = _a.scope, client = _a.client;
        if (!scope)
            return;
        var session = scope.getSession &amp;&amp; scope.getSession();
        if (session) {
            session.close();
            if (client &amp;&amp; client.captureSession) {
                client.captureSession(session);
            }
            scope.setSession();
        }
    };
    /**
     * Internal helper function to call a method on the top client if it exists.
     *
     * @param method The method to call on the client.
     * @param args Arguments to pass to the client function.
     */
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    Hub.prototype._invokeClient = function (method) {
        var _a;
        var args = [];
        for (var _i = 1; _i &lt; arguments.length; _i++) {
            args[_i - 1] = arguments[_i];
        }
        var _b = this.getStackTop(), scope = _b.scope, client = _b.client;
        if (client &amp;&amp; client[method]) {
            // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
            (_a = client)[method].apply(_a, tslib_1.__spread(args, [scope]));
        }
    };
    /**
     * Calls global extension method and binding current instance to the function call
     */
    // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    Hub.prototype._callExtensionMethod = function (method) {
        var args = [];
        for (var _i = 1; _i &lt; arguments.length; _i++) {
            args[_i - 1] = arguments[_i];
        }
        var carrier = getMainCarrier();
        var sentry = carrier.__SENTRY__;
        if (sentry &amp;&amp; sentry.extensions &amp;&amp; typeof sentry.extensions[method] === 'function') {
            return sentry.extensions[method].apply(this, args);
        }
        utils_1.logger.warn("Extension method " + method + " couldn't be found, doing nothing.");
    };
    return Hub;
}());
exports.Hub = Hub;
/** Returns the global shim registry. */
function getMainCarrier() {
    var carrier = utils_1.getGlobalObject();
    carrier.__SENTRY__ = carrier.__SENTRY__ || {
        extensions: {},
        hub: undefined,
    };
    return carrier;
}
exports.getMainCarrier = getMainCarrier;
/**
 * Replaces the current main hub with the passed one on the global object
 *
 * @returns The old replaced hub
 */
function makeMain(hub) {
    var registry = getMainCarrier();
    var oldHub = getHubFromCarrier(registry);
    setHubOnCarrier(registry, hub);
    return oldHub;
}
exports.makeMain = makeMain;
/**
 * Returns the default hub instance.
 *
 * If a hub is already registered in the global carrier but this module
 * contains a more recent version, it replaces the registered version.
 * Otherwise, the currently registered hub will be returned.
 */
function getCurrentHub() {
    // Get main carrier (global for every environment)
    var registry = getMainCarrier();
    // If there's no hub, or its an old API, assign a new one
    if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(exports.API_VERSION)) {
        setHubOnCarrier(registry, new Hub());
    }
    // Prefer domains over global if they are there (applicable only to Node environment)
    if (utils_1.isNodeEnv()) {
        return getHubFromActiveDomain(registry);
    }
    // Return hub that lives on a global object
    return getHubFromCarrier(registry);
}
exports.getCurrentHub = getCurrentHub;
/**
 * Returns the active domain, if one exists
 *
 * @returns The domain, or undefined if there is no active domain
 */
function getActiveDomain() {
    var sentry = getMainCarrier().__SENTRY__;
    return sentry &amp;&amp; sentry.extensions &amp;&amp; sentry.extensions.domain &amp;&amp; sentry.extensions.domain.active;
}
exports.getActiveDomain = getActiveDomain;
/**
 * Try to read the hub from an active domain, and fallback to the registry if one doesn't exist
 * @returns discovered hub
 */
function getHubFromActiveDomain(registry) {
    try {
        var activeDomain = getActiveDomain();
        // If there's no active domain, just return global hub
        if (!activeDomain) {
            return getHubFromCarrier(registry);
        }
        // If there's no hub on current domain, or it's an old API, assign a new one
        if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(exports.API_VERSION)) {
            var registryHubTopStack = getHubFromCarrier(registry).getStackTop();
            setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, scope_1.Scope.clone(registryHubTopStack.scope)));
        }
        // Return hub that lives on a domain
        return getHubFromCarrier(activeDomain);
    }
    catch (_Oo) {
        // Return hub that lives on a global object
        return getHubFromCarrier(registry);
    }
}
/**
 * This will tell whether a carrier has a hub on it or not
 * @param carrier object
 */
function hasHubOnCarrier(carrier) {
    return !!(carrier &amp;&amp; carrier.__SENTRY__ &amp;&amp; carrier.__SENTRY__.hub);
}
/**
 * This will create a new {@link Hub} and add to the passed object on
 * __SENTRY__.hub.
 * @param carrier object
 * @hidden
 */
function getHubFromCarrier(carrier) {
    if (carrier &amp;&amp; carrier.__SENTRY__ &amp;&amp; carrier.__SENTRY__.hub)
        return carrier.__SENTRY__.hub;
    carrier.__SENTRY__ = carrier.__SENTRY__ || {};
    carrier.__SENTRY__.hub = new Hub();
    return carrier.__SENTRY__.hub;
}
exports.getHubFromCarrier = getHubFromCarrier;
/**
 * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute
 * @param carrier object
 * @param hub Hub
 */
function setHubOnCarrier(carrier, hub) {
    if (!carrier)
        return false;
    carrier.__SENTRY__ = carrier.__SENTRY__ || {};
    carrier.__SENTRY__.hub = hub;
    return true;
}
exports.setHubOnCarrier = setHubOnCarrier;

},{"./scope":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/hub/dist/scope.js","./session":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/hub/dist/session.js","@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/hub/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/hub/dist/index.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var scope_1 = _dereq_("./scope");
exports.addGlobalEventProcessor = scope_1.addGlobalEventProcessor;
exports.Scope = scope_1.Scope;
var session_1 = _dereq_("./session");
exports.Session = session_1.Session;
var hub_1 = _dereq_("./hub");
exports.getActiveDomain = hub_1.getActiveDomain;
exports.getCurrentHub = hub_1.getCurrentHub;
exports.getHubFromCarrier = hub_1.getHubFromCarrier;
exports.getMainCarrier = hub_1.getMainCarrier;
exports.Hub = hub_1.Hub;
exports.makeMain = hub_1.makeMain;
exports.setHubOnCarrier = hub_1.setHubOnCarrier;

},{"./hub":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/hub/dist/hub.js","./scope":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/hub/dist/scope.js","./session":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/hub/dist/session.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/hub/dist/scope.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
var utils_1 = _dereq_("@sentry/utils");
/**
 * Holds additional event information. {@link Scope.applyToEvent} will be
 * called by the client before an event will be sent.
 */
var Scope = /** @class */ (function () {
    function Scope() {
        /** Flag if notifiying is happening. */
        this._notifyingListeners = false;
        /** Callback for client to receive scope changes. */
        this._scopeListeners = [];
        /** Callback list that will be called after {@link applyToEvent}. */
        this._eventProcessors = [];
        /** Array of breadcrumbs. */
        this._breadcrumbs = [];
        /** User */
        this._user = {};
        /** Tags */
        this._tags = {};
        /** Extra */
        this._extra = {};
        /** Contexts */
        this._contexts = {};
    }
    /**
     * Inherit values from the parent scope.
     * @param scope to clone.
     */
    Scope.clone = function (scope) {
        var newScope = new Scope();
        if (scope) {
            newScope._breadcrumbs = tslib_1.__spread(scope._breadcrumbs);
            newScope._tags = tslib_1.__assign({}, scope._tags);
            newScope._extra = tslib_1.__assign({}, scope._extra);
            newScope._contexts = tslib_1.__assign({}, scope._contexts);
            newScope._user = scope._user;
            newScope._level = scope._level;
            newScope._span = scope._span;
            newScope._session = scope._session;
            newScope._transactionName = scope._transactionName;
            newScope._fingerprint = scope._fingerprint;
            newScope._eventProcessors = tslib_1.__spread(scope._eventProcessors);
        }
        return newScope;
    };
    /**
     * Add internal on change listener. Used for sub SDKs that need to store the scope.
     * @hidden
     */
    Scope.prototype.addScopeListener = function (callback) {
        this._scopeListeners.push(callback);
    };
    /**
     * @inheritDoc
     */
    Scope.prototype.addEventProcessor = function (callback) {
        this._eventProcessors.push(callback);
        return this;
    };
    /**
     * @inheritDoc
     */
    Scope.prototype.setUser = function (user) {
        this._user = user || {};
        if (this._session) {
            this._session.update({ user: user });
        }
        this._notifyScopeListeners();
        return this;
    };
    /**
     * @inheritDoc
     */
    Scope.prototype.getUser = function () {
        return this._user;
    };
    /**
     * @inheritDoc
     */
    Scope.prototype.setTags = function (tags) {
        this._tags = tslib_1.__assign(tslib_1.__assign({}, this._tags), tags);
        this._notifyScopeListeners();
        return this;
    };
    /**
     * @inheritDoc
     */
    Scope.prototype.setTag = function (key, value) {
        var _a;
        this._tags = tslib_1.__assign(tslib_1.__assign({}, this._tags), (_a = {}, _a[key] = value, _a));
        this._notifyScopeListeners();
        return this;
    };
    /**
     * @inheritDoc
     */
    Scope.prototype.setExtras = function (extras) {
        this._extra = tslib_1.__assign(tslib_1.__assign({}, this._extra), extras);
        this._notifyScopeListeners();
        return this;
    };
    /**
     * @inheritDoc
     */
    Scope.prototype.setExtra = function (key, extra) {
        var _a;
        this._extra = tslib_1.__assign(tslib_1.__assign({}, this._extra), (_a = {}, _a[key] = extra, _a));
        this._notifyScopeListeners();
        return this;
    };
    /**
     * @inheritDoc
     */
    Scope.prototype.setFingerprint = function (fingerprint) {
        this._fingerprint = fingerprint;
        this._notifyScopeListeners();
        return this;
    };
    /**
     * @inheritDoc
     */
    Scope.prototype.setLevel = function (level) {
        this._level = level;
        this._notifyScopeListeners();
        return this;
    };
    /**
     * @inheritDoc
     */
    Scope.prototype.setTransactionName = function (name) {
        this._transactionName = name;
        this._notifyScopeListeners();
        return this;
    };
    /**
     * Can be removed in major version.
     * @deprecated in favor of {@link this.setTransactionName}
     */
    Scope.prototype.setTransaction = function (name) {
        return this.setTransactionName(name);
    };
    /**
     * @inheritDoc
     */
    Scope.prototype.setContext = function (key, context) {
        var _a;
        if (context === null) {
            // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
            delete this._contexts[key];
        }
        else {
            this._contexts = tslib_1.__assign(tslib_1.__assign({}, this._contexts), (_a = {}, _a[key] = context, _a));
        }
        this._notifyScopeListeners();
        return this;
    };
    /**
     * @inheritDoc
     */
    Scope.prototype.setSpan = function (span) {
        this._span = span;
        this._notifyScopeListeners();
        return this;
    };
    /**
     * @inheritDoc
     */
    Scope.prototype.getSpan = function () {
        return this._span;
    };
    /**
     * @inheritDoc
     */
    Scope.prototype.getTransaction = function () {
        var _a, _b, _c, _d;
        // often, this span will be a transaction, but it's not guaranteed to be
        var span = this.getSpan();
        // try it the new way first
        if ((_a = span) === null || _a === void 0 ? void 0 : _a.transaction) {
            return (_b = span) === null || _b === void 0 ? void 0 : _b.transaction;
        }
        // fallback to the old way (known bug: this only finds transactions with sampled = true)
        if ((_d = (_c = span) === null || _c === void 0 ? void 0 : _c.spanRecorder) === null || _d === void 0 ? void 0 : _d.spans[0]) {
            return span.spanRecorder.spans[0];
        }
        // neither way found a transaction
        return undefined;
    };
    /**
     * @inheritDoc
     */
    Scope.prototype.setSession = function (session) {
        if (!session) {
            delete this._session;
        }
        else {
            this._session = session;
        }
        this._notifyScopeListeners();
        return this;
    };
    /**
     * @inheritDoc
     */
    Scope.prototype.getSession = function () {
        return this._session;
    };
    /**
     * @inheritDoc
     */
    Scope.prototype.update = function (captureContext) {
        if (!captureContext) {
            return this;
        }
        if (typeof captureContext === 'function') {
            var updatedScope = captureContext(this);
            return updatedScope instanceof Scope ? updatedScope : this;
        }
        if (captureContext instanceof Scope) {
            this._tags = tslib_1.__assign(tslib_1.__assign({}, this._tags), captureContext._tags);
            this._extra = tslib_1.__assign(tslib_1.__assign({}, this._extra), captureContext._extra);
            this._contexts = tslib_1.__assign(tslib_1.__assign({}, this._contexts), captureContext._contexts);
            if (captureContext._user &amp;&amp; Object.keys(captureContext._user).length) {
                this._user = captureContext._user;
            }
            if (captureContext._level) {
                this._level = captureContext._level;
            }
            if (captureContext._fingerprint) {
                this._fingerprint = captureContext._fingerprint;
            }
        }
        else if (utils_1.isPlainObject(captureContext)) {
            // eslint-disable-next-line no-param-reassign
            captureContext = captureContext;
            this._tags = tslib_1.__assign(tslib_1.__assign({}, this._tags), captureContext.tags);
            this._extra = tslib_1.__assign(tslib_1.__assign({}, this._extra), captureContext.extra);
            this._contexts = tslib_1.__assign(tslib_1.__assign({}, this._contexts), captureContext.contexts);
            if (captureContext.user) {
                this._user = captureContext.user;
            }
            if (captureContext.level) {
                this._level = captureContext.level;
            }
            if (captureContext.fingerprint) {
                this._fingerprint = captureContext.fingerprint;
            }
        }
        return this;
    };
    /**
     * @inheritDoc
     */
    Scope.prototype.clear = function () {
        this._breadcrumbs = [];
        this._tags = {};
        this._extra = {};
        this._user = {};
        this._contexts = {};
        this._level = undefined;
        this._transactionName = undefined;
        this._fingerprint = undefined;
        this._span = undefined;
        this._session = undefined;
        this._notifyScopeListeners();
        return this;
    };
    /**
     * @inheritDoc
     */
    Scope.prototype.addBreadcrumb = function (breadcrumb, maxBreadcrumbs) {
        var mergedBreadcrumb = tslib_1.__assign({ timestamp: utils_1.dateTimestampInSeconds() }, breadcrumb);
        this._breadcrumbs =
            maxBreadcrumbs !== undefined &amp;&amp; maxBreadcrumbs &gt;= 0
                ? tslib_1.__spread(this._breadcrumbs, [mergedBreadcrumb]).slice(-maxBreadcrumbs)
                : tslib_1.__spread(this._breadcrumbs, [mergedBreadcrumb]);
        this._notifyScopeListeners();
        return this;
    };
    /**
     * @inheritDoc
     */
    Scope.prototype.clearBreadcrumbs = function () {
        this._breadcrumbs = [];
        this._notifyScopeListeners();
        return this;
    };
    /**
     * Applies the current context and fingerprint to the event.
     * Note that breadcrumbs will be added by the client.
     * Also if the event has already breadcrumbs on it, we do not merge them.
     * @param event Event
     * @param hint May contain additional informartion about the original exception.
     * @hidden
     */
    Scope.prototype.applyToEvent = function (event, hint) {
        var _a;
        if (this._extra &amp;&amp; Object.keys(this._extra).length) {
            event.extra = tslib_1.__assign(tslib_1.__assign({}, this._extra), event.extra);
        }
        if (this._tags &amp;&amp; Object.keys(this._tags).length) {
            event.tags = tslib_1.__assign(tslib_1.__assign({}, this._tags), event.tags);
        }
        if (this._user &amp;&amp; Object.keys(this._user).length) {
            event.user = tslib_1.__assign(tslib_1.__assign({}, this._user), event.user);
        }
        if (this._contexts &amp;&amp; Object.keys(this._contexts).length) {
            event.contexts = tslib_1.__assign(tslib_1.__assign({}, this._contexts), event.contexts);
        }
        if (this._level) {
            event.level = this._level;
        }
        if (this._transactionName) {
            event.transaction = this._transactionName;
        }
        // We want to set the trace context for normal events only if there isn't already
        // a trace context on the event. There is a product feature in place where we link
        // errors with transaction and it relys on that.
        if (this._span) {
            event.contexts = tslib_1.__assign({ trace: this._span.getTraceContext() }, event.contexts);
            var transactionName = (_a = this._span.transaction) === null || _a === void 0 ? void 0 : _a.name;
            if (transactionName) {
                event.tags = tslib_1.__assign({ transaction: transactionName }, event.tags);
            }
        }
        this._applyFingerprint(event);
        event.breadcrumbs = tslib_1.__spread((event.breadcrumbs || []), this._breadcrumbs);
        event.breadcrumbs = event.breadcrumbs.length &gt; 0 ? event.breadcrumbs : undefined;
        return this._notifyEventProcessors(tslib_1.__spread(getGlobalEventProcessors(), this._eventProcessors), event, hint);
    };
    /**
     * This will be called after {@link applyToEvent} is finished.
     */
    Scope.prototype._notifyEventProcessors = function (processors, event, hint, index) {
        var _this = this;
        if (index === void 0) { index = 0; }
        return new utils_1.SyncPromise(function (resolve, reject) {
            var processor = processors[index];
            if (event === null || typeof processor !== 'function') {
                resolve(event);
            }
            else {
                var result = processor(tslib_1.__assign({}, event), hint);
                if (utils_1.isThenable(result)) {
                    result
                        .then(function (final) { return _this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve); })
                        .then(null, reject);
                }
                else {
                    _this._notifyEventProcessors(processors, result, hint, index + 1)
                        .then(resolve)
                        .then(null, reject);
                }
            }
        });
    };
    /**
     * This will be called on every set call.
     */
    Scope.prototype._notifyScopeListeners = function () {
        var _this = this;
        // We need this check for this._notifyingListeners to be able to work on scope during updates
        // If this check is not here we'll produce endless recursion when something is done with the scope
        // during the callback.
        if (!this._notifyingListeners) {
            this._notifyingListeners = true;
            this._scopeListeners.forEach(function (callback) {
                callback(_this);
            });
            this._notifyingListeners = false;
        }
    };
    /**
     * Applies fingerprint from the scope to the event if there's one,
     * uses message if there's one instead or get rid of empty fingerprint
     */
    Scope.prototype._applyFingerprint = function (event) {
        // Make sure it's an array first and we actually have something in place
        event.fingerprint = event.fingerprint
            ? Array.isArray(event.fingerprint)
                ? event.fingerprint
                : [event.fingerprint]
            : [];
        // If we have something on the scope, then merge it with event
        if (this._fingerprint) {
            event.fingerprint = event.fingerprint.concat(this._fingerprint);
        }
        // If we have no data at all, remove empty array default
        if (event.fingerprint &amp;&amp; !event.fingerprint.length) {
            delete event.fingerprint;
        }
    };
    return Scope;
}());
exports.Scope = Scope;
/**
 * Retruns the global event processors.
 */
function getGlobalEventProcessors() {
    /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access  */
    var global = utils_1.getGlobalObject();
    global.__SENTRY__ = global.__SENTRY__ || {};
    global.__SENTRY__.globalEventProcessors = global.__SENTRY__.globalEventProcessors || [];
    return global.__SENTRY__.globalEventProcessors;
    /* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */
}
/**
 * Add a EventProcessor to be kept globally.
 * @param callback EventProcessor to add
 */
function addGlobalEventProcessor(callback) {
    getGlobalEventProcessors().push(callback);
}
exports.addGlobalEventProcessor = addGlobalEventProcessor;

},{"@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/hub/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/hub/dist/session.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var types_1 = _dereq_("@sentry/types");
var utils_1 = _dereq_("@sentry/utils");
/**
 * @inheritdoc
 */
var Session = /** @class */ (function () {
    function Session(context) {
        this.errors = 0;
        this.sid = utils_1.uuid4();
        this.timestamp = Date.now();
        this.started = Date.now();
        this.duration = 0;
        this.status = types_1.SessionStatus.Ok;
        if (context) {
            this.update(context);
        }
    }
    /** JSDoc */
    // eslint-disable-next-line complexity
    Session.prototype.update = function (context) {
        if (context === void 0) { context = {}; }
        if (context.user) {
            if (context.user.ip_address) {
                this.ipAddress = context.user.ip_address;
            }
            if (!context.did) {
                this.did = context.user.id || context.user.email || context.user.username;
            }
        }
        this.timestamp = context.timestamp || Date.now();
        if (context.sid) {
            // Good enough uuid validation. — Kamil
            this.sid = context.sid.length === 32 ? context.sid : utils_1.uuid4();
        }
        if (context.did) {
            this.did = "" + context.did;
        }
        if (typeof context.started === 'number') {
            this.started = context.started;
        }
        if (typeof context.duration === 'number') {
            this.duration = context.duration;
        }
        else {
            this.duration = this.timestamp - this.started;
        }
        if (context.release) {
            this.release = context.release;
        }
        if (context.environment) {
            this.environment = context.environment;
        }
        if (context.ipAddress) {
            this.ipAddress = context.ipAddress;
        }
        if (context.userAgent) {
            this.userAgent = context.userAgent;
        }
        if (typeof context.errors === 'number') {
            this.errors = context.errors;
        }
        if (context.status) {
            this.status = context.status;
        }
    };
    /** JSDoc */
    Session.prototype.close = function (status) {
        if (status) {
            this.update({ status: status });
        }
        else if (this.status === types_1.SessionStatus.Ok) {
            this.update({ status: types_1.SessionStatus.Exited });
        }
        else {
            this.update();
        }
    };
    /** JSDoc */
    Session.prototype.toJSON = function () {
        return utils_1.dropUndefinedKeys({
            sid: "" + this.sid,
            init: true,
            started: new Date(this.started).toISOString(),
            timestamp: new Date(this.timestamp).toISOString(),
            status: this.status,
            errors: this.errors,
            did: typeof this.did === 'number' || typeof this.did === 'string' ? "" + this.did : undefined,
            duration: this.duration,
            attrs: utils_1.dropUndefinedKeys({
                release: this.release,
                environment: this.environment,
                ip_address: this.ipAddress,
                user_agent: this.userAgent,
            }),
        });
    };
    return Session;
}());
exports.Session = Session;

},{"@sentry/types":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/types/dist/index.js","@sentry/utils":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/hub/node_modules/tslib/tslib.js":[function(_dereq_,module,exports){
arguments[4]["/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/node_modules/tslib/tslib.js"][0].apply(exports,arguments)
},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/minimal/dist/index.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
var hub_1 = _dereq_("@sentry/hub");
/**
 * This calls a function on the current hub.
 * @param method function to call on hub.
 * @param args to pass to function.
 */
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function callOnHub(method) {
    var args = [];
    for (var _i = 1; _i &lt; arguments.length; _i++) {
        args[_i - 1] = arguments[_i];
    }
    var hub = hub_1.getCurrentHub();
    if (hub &amp;&amp; hub[method]) {
        // eslint-disable-next-line @typescript-eslint/no-explicit-any
        return hub[method].apply(hub, tslib_1.__spread(args));
    }
    throw new Error("No hub defined or " + method + " was not found on the hub, please open a bug report.");
}
/**
 * Captures an exception event and sends it to Sentry.
 *
 * @param exception An exception-like object.
 * @returns The generated eventId.
 */
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
function captureException(exception, captureContext) {
    var syntheticException;
    try {
        throw new Error('Sentry syntheticException');
    }
    catch (exception) {
        syntheticException = exception;
    }
    return callOnHub('captureException', exception, {
        captureContext: captureContext,
        originalException: exception,
        syntheticException: syntheticException,
    });
}
exports.captureException = captureException;
/**
 * Captures a message event and sends it to Sentry.
 *
 * @param message The message to send to Sentry.
 * @param level Define the level of the message.
 * @returns The generated eventId.
 */
function captureMessage(message, captureContext) {
    var syntheticException;
    try {
        throw new Error(message);
    }
    catch (exception) {
        syntheticException = exception;
    }
    // This is necessary to provide explicit scopes upgrade, without changing the original
    // arity of the `captureMessage(message, level)` method.
    var level = typeof captureContext === 'string' ? captureContext : undefined;
    var context = typeof captureContext !== 'string' ? { captureContext: captureContext } : undefined;
    return callOnHub('captureMessage', message, level, tslib_1.__assign({ originalException: message, syntheticException: syntheticException }, context));
}
exports.captureMessage = captureMessage;
/**
 * Captures a manually created event and sends it to Sentry.
 *
 * @param event The event to send to Sentry.
 * @returns The generated eventId.
 */
function captureEvent(event) {
    return callOnHub('captureEvent', event);
}
exports.captureEvent = captureEvent;
/**
 * Callback to set context information onto the scope.
 * @param callback Callback function that receives Scope.
 */
function configureScope(callback) {
    callOnHub('configureScope', callback);
}
exports.configureScope = configureScope;
/**
 * Records a new breadcrumb which will be attached to future events.
 *
 * Breadcrumbs will be added to subsequent events to provide more context on
 * user's actions prior to an error or crash.
 *
 * @param breadcrumb The breadcrumb to record.
 */
function addBreadcrumb(breadcrumb) {
    callOnHub('addBreadcrumb', breadcrumb);
}
exports.addBreadcrumb = addBreadcrumb;
/**
 * Sets context data with the given name.
 * @param name of the context
 * @param context Any kind of data. This data will be normalized.
 */
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function setContext(name, context) {
    callOnHub('setContext', name, context);
}
exports.setContext = setContext;
/**
 * Set an object that will be merged sent as extra data with the event.
 * @param extras Extras object to merge into current context.
 */
function setExtras(extras) {
    callOnHub('setExtras', extras);
}
exports.setExtras = setExtras;
/**
 * Set an object that will be merged sent as tags data with the event.
 * @param tags Tags context object to merge into current context.
 */
function setTags(tags) {
    callOnHub('setTags', tags);
}
exports.setTags = setTags;
/**
 * Set key:value that will be sent as extra data with the event.
 * @param key String of extra
 * @param extra Any kind of data. This data will be normalized.
 */
function setExtra(key, extra) {
    callOnHub('setExtra', key, extra);
}
exports.setExtra = setExtra;
/**
 * Set key:value that will be sent as tags data with the event.
 *
 * Can also be used to unset a tag, by passing `undefined`.
 *
 * @param key String key of tag
 * @param value Value of tag
 */
function setTag(key, value) {
    callOnHub('setTag', key, value);
}
exports.setTag = setTag;
/**
 * Updates user context information for future events.
 *
 * @param user User context object to be set in the current context. Pass `null` to unset the user.
 */
function setUser(user) {
    callOnHub('setUser', user);
}
exports.setUser = setUser;
/**
 * Creates a new scope with and executes the given operation within.
 * The scope is automatically removed once the operation
 * finishes or throws.
 *
 * This is essentially a convenience function for:
 *
 *     pushScope();
 *     callback();
 *     popScope();
 *
 * @param callback that will be enclosed into push/popScope.
 */
function withScope(callback) {
    callOnHub('withScope', callback);
}
exports.withScope = withScope;
/**
 * Calls a function on the latest client. Use this with caution, it's meant as
 * in "internal" helper so we don't need to expose every possible function in
 * the shim. It is not guaranteed that the client actually implements the
 * function.
 *
 * @param method The method to call on the client/client.
 * @param args Arguments to pass to the client/fontend.
 * @hidden
 */
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function _callOnClient(method) {
    var args = [];
    for (var _i = 1; _i &lt; arguments.length; _i++) {
        args[_i - 1] = arguments[_i];
    }
    callOnHub.apply(void 0, tslib_1.__spread(['_invokeClient', method], args));
}
exports._callOnClient = _callOnClient;
/**
 * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.
 *
 * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a
 * new child span within the transaction or any span, call the respective `.startChild()` method.
 *
 * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.
 *
 * The transaction must be finished with a call to its `.finish()` method, at which point the transaction with all its
 * finished child spans will be sent to Sentry.
 *
 * @param context Properties of the new `Transaction`.
 * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent
 * default values). See {@link Options.tracesSampler}.
 *
 * @returns The transaction which was just started
 */
function startTransaction(context, customSamplingContext) {
    return callOnHub('startTransaction', tslib_1.__assign({}, context), customSamplingContext);
}
exports.startTransaction = startTransaction;

},{"@sentry/hub":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/hub/dist/index.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/minimal/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/minimal/node_modules/tslib/tslib.js":[function(_dereq_,module,exports){
arguments[4]["/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/node_modules/tslib/tslib.js"][0].apply(exports,arguments)
},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/types/dist/index.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var loglevel_1 = _dereq_("./loglevel");
exports.LogLevel = loglevel_1.LogLevel;
var session_1 = _dereq_("./session");
exports.SessionStatus = session_1.SessionStatus;
var severity_1 = _dereq_("./severity");
exports.Severity = severity_1.Severity;
var status_1 = _dereq_("./status");
exports.Status = status_1.Status;
var transaction_1 = _dereq_("./transaction");
exports.TransactionSamplingMethod = transaction_1.TransactionSamplingMethod;

},{"./loglevel":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/types/dist/loglevel.js","./session":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/types/dist/session.js","./severity":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/types/dist/severity.js","./status":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/types/dist/status.js","./transaction":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/types/dist/transaction.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/types/dist/loglevel.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
/** Console logging verbosity for the SDK. */
var LogLevel;
(function (LogLevel) {
    /** No logs will be generated. */
    LogLevel[LogLevel["None"] = 0] = "None";
    /** Only SDK internal errors will be logged. */
    LogLevel[LogLevel["Error"] = 1] = "Error";
    /** Information useful for debugging the SDK will be logged. */
    LogLevel[LogLevel["Debug"] = 2] = "Debug";
    /** All SDK actions will be logged. */
    LogLevel[LogLevel["Verbose"] = 3] = "Verbose";
})(LogLevel = exports.LogLevel || (exports.LogLevel = {}));

},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/types/dist/session.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
/**
 * Session Status
 */
var SessionStatus;
(function (SessionStatus) {
    /** JSDoc */
    SessionStatus["Ok"] = "ok";
    /** JSDoc */
    SessionStatus["Exited"] = "exited";
    /** JSDoc */
    SessionStatus["Crashed"] = "crashed";
    /** JSDoc */
    SessionStatus["Abnormal"] = "abnormal";
})(SessionStatus = exports.SessionStatus || (exports.SessionStatus = {}));

},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/types/dist/severity.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
/** JSDoc */
// eslint-disable-next-line import/export
var Severity;
(function (Severity) {
    /** JSDoc */
    Severity["Fatal"] = "fatal";
    /** JSDoc */
    Severity["Error"] = "error";
    /** JSDoc */
    Severity["Warning"] = "warning";
    /** JSDoc */
    Severity["Log"] = "log";
    /** JSDoc */
    Severity["Info"] = "info";
    /** JSDoc */
    Severity["Debug"] = "debug";
    /** JSDoc */
    Severity["Critical"] = "critical";
})(Severity = exports.Severity || (exports.Severity = {}));
// eslint-disable-next-line @typescript-eslint/no-namespace, import/export
(function (Severity) {
    /**
     * Converts a string-based level into a {@link Severity}.
     *
     * @param level string representation of Severity
     * @returns Severity
     */
    function fromString(level) {
        switch (level) {
            case 'debug':
                return Severity.Debug;
            case 'info':
                return Severity.Info;
            case 'warn':
            case 'warning':
                return Severity.Warning;
            case 'error':
                return Severity.Error;
            case 'fatal':
                return Severity.Fatal;
            case 'critical':
                return Severity.Critical;
            case 'log':
            default:
                return Severity.Log;
        }
    }
    Severity.fromString = fromString;
})(Severity = exports.Severity || (exports.Severity = {}));

},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/types/dist/status.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
/** The status of an event. */
// eslint-disable-next-line import/export
var Status;
(function (Status) {
    /** The status could not be determined. */
    Status["Unknown"] = "unknown";
    /** The event was skipped due to configuration or callbacks. */
    Status["Skipped"] = "skipped";
    /** The event was sent to Sentry successfully. */
    Status["Success"] = "success";
    /** The client is currently rate limited and will try again later. */
    Status["RateLimit"] = "rate_limit";
    /** The event could not be processed. */
    Status["Invalid"] = "invalid";
    /** A server-side error ocurred during submission. */
    Status["Failed"] = "failed";
})(Status = exports.Status || (exports.Status = {}));
// eslint-disable-next-line @typescript-eslint/no-namespace, import/export
(function (Status) {
    /**
     * Converts a HTTP status code into a {@link Status}.
     *
     * @param code The HTTP response status code.
     * @returns The send status or {@link Status.Unknown}.
     */
    function fromHttpCode(code) {
        if (code &gt;= 200 &amp;&amp; code &lt; 300) {
            return Status.Success;
        }
        if (code === 429) {
            return Status.RateLimit;
        }
        if (code &gt;= 400 &amp;&amp; code &lt; 500) {
            return Status.Invalid;
        }
        if (code &gt;= 500) {
            return Status.Failed;
        }
        return Status.Unknown;
    }
    Status.fromHttpCode = fromHttpCode;
})(Status = exports.Status || (exports.Status = {}));

},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/types/dist/transaction.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var TransactionSamplingMethod;
(function (TransactionSamplingMethod) {
    TransactionSamplingMethod["Explicit"] = "explicitly_set";
    TransactionSamplingMethod["Sampler"] = "client_sampler";
    TransactionSamplingMethod["Rate"] = "client_rate";
    TransactionSamplingMethod["Inheritance"] = "inheritance";
})(TransactionSamplingMethod = exports.TransactionSamplingMethod || (exports.TransactionSamplingMethod = {}));

},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/async.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
/**
 * Consumes the promise and logs the error when it rejects.
 * @param promise A promise to forget.
 */
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function forget(promise) {
    promise.then(null, function (e) {
        // TODO: Use a better logging mechanism
        // eslint-disable-next-line no-console
        console.error(e);
    });
}
exports.forget = forget;

},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/browser.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var is_1 = _dereq_("./is");
/**
 * Given a child DOM element, returns a query-selector statement describing that
 * and its ancestors
 * e.g. [HTMLElement] =&gt; body &gt; div &gt; input#foo.btn[name=baz]
 * @returns generated DOM path
 */
function htmlTreeAsString(elem) {
    // try/catch both:
    // - accessing event.target (see getsentry/raven-js#838, #768)
    // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly
    // - can throw an exception in some circumstances.
    try {
        var currentElem = elem;
        var MAX_TRAVERSE_HEIGHT = 5;
        var MAX_OUTPUT_LEN = 80;
        var out = [];
        var height = 0;
        var len = 0;
        var separator = ' &gt; ';
        var sepLength = separator.length;
        var nextStr = void 0;
        // eslint-disable-next-line no-plusplus
        while (currentElem &amp;&amp; height++ &lt; MAX_TRAVERSE_HEIGHT) {
            nextStr = _htmlElementAsString(currentElem);
            // bail out if
            // - nextStr is the 'html' element
            // - the length of the string that would be created exceeds MAX_OUTPUT_LEN
            //   (ignore this limit if we are on the first iteration)
            if (nextStr === 'html' || (height &gt; 1 &amp;&amp; len + out.length * sepLength + nextStr.length &gt;= MAX_OUTPUT_LEN)) {
                break;
            }
            out.push(nextStr);
            len += nextStr.length;
            currentElem = currentElem.parentNode;
        }
        return out.reverse().join(separator);
    }
    catch (_oO) {
        return '&lt;unknown&gt;';
    }
}
exports.htmlTreeAsString = htmlTreeAsString;
/**
 * Returns a simple, query-selector representation of a DOM element
 * e.g. [HTMLElement] =&gt; input#foo.btn[name=baz]
 * @returns generated DOM path
 */
function _htmlElementAsString(el) {
    var elem = el;
    var out = [];
    var className;
    var classes;
    var key;
    var attr;
    var i;
    if (!elem || !elem.tagName) {
        return '';
    }
    out.push(elem.tagName.toLowerCase());
    if (elem.id) {
        out.push("#" + elem.id);
    }
    // eslint-disable-next-line prefer-const
    className = elem.className;
    if (className &amp;&amp; is_1.isString(className)) {
        classes = className.split(/\s+/);
        for (i = 0; i &lt; classes.length; i++) {
            out.push("." + classes[i]);
        }
    }
    var allowedAttrs = ['type', 'name', 'title', 'alt'];
    for (i = 0; i &lt; allowedAttrs.length; i++) {
        key = allowedAttrs[i];
        attr = elem.getAttribute(key);
        if (attr) {
            out.push("[" + key + "=\"" + attr + "\"]");
        }
    }
    return out.join('');
}

},{"./is":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/is.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/dsn.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
var error_1 = _dereq_("./error");
/** Regular expression used to parse a Dsn. */
var DSN_REGEX = /^(?:(\w+):)\/\/(?:(\w+)(?::(\w+))?@)([\w.-]+)(?::(\d+))?\/(.+)/;
/** Error message */
var ERROR_MESSAGE = 'Invalid Dsn';
/** The Sentry Dsn, identifying a Sentry instance and project. */
var Dsn = /** @class */ (function () {
    /** Creates a new Dsn component */
    function Dsn(from) {
        if (typeof from === 'string') {
            this._fromString(from);
        }
        else {
            this._fromComponents(from);
        }
        this._validate();
    }
    /**
     * Renders the string representation of this Dsn.
     *
     * By default, this will render the public representation without the password
     * component. To get the deprecated private representation, set `withPassword`
     * to true.
     *
     * @param withPassword When set to true, the password will be included.
     */
    Dsn.prototype.toString = function (withPassword) {
        if (withPassword === void 0) { withPassword = false; }
        var _a = this, host = _a.host, path = _a.path, pass = _a.pass, port = _a.port, projectId = _a.projectId, protocol = _a.protocol, user = _a.user;
        return (protocol + "://" + user + (withPassword &amp;&amp; pass ? ":" + pass : '') +
            ("@" + host + (port ? ":" + port : '') + "/" + (path ? path + "/" : path) + projectId));
    };
    /** Parses a string into this Dsn. */
    Dsn.prototype._fromString = function (str) {
        var match = DSN_REGEX.exec(str);
        if (!match) {
            throw new error_1.SentryError(ERROR_MESSAGE);
        }
        var _a = tslib_1.__read(match.slice(1), 6), protocol = _a[0], user = _a[1], _b = _a[2], pass = _b === void 0 ? '' : _b, host = _a[3], _c = _a[4], port = _c === void 0 ? '' : _c, lastPath = _a[5];
        var path = '';
        var projectId = lastPath;
        var split = projectId.split('/');
        if (split.length &gt; 1) {
            path = split.slice(0, -1).join('/');
            projectId = split.pop();
        }
        if (projectId) {
            var projectMatch = projectId.match(/^\d+/);
            if (projectMatch) {
                projectId = projectMatch[0];
            }
        }
        this._fromComponents({ host: host, pass: pass, path: path, projectId: projectId, port: port, protocol: protocol, user: user });
    };
    /** Maps Dsn components into this instance. */
    Dsn.prototype._fromComponents = function (components) {
        this.protocol = components.protocol;
        this.user = components.user;
        this.pass = components.pass || '';
        this.host = components.host;
        this.port = components.port || '';
        this.path = components.path || '';
        this.projectId = components.projectId;
    };
    /** Validates this Dsn and throws on error. */
    Dsn.prototype._validate = function () {
        var _this = this;
        ['protocol', 'user', 'host', 'projectId'].forEach(function (component) {
            if (!_this[component]) {
                throw new error_1.SentryError(ERROR_MESSAGE + ": " + component + " missing");
            }
        });
        if (!this.projectId.match(/^\d+$/)) {
            throw new error_1.SentryError(ERROR_MESSAGE + ": Invalid projectId " + this.projectId);
        }
        if (this.protocol !== 'http' &amp;&amp; this.protocol !== 'https') {
            throw new error_1.SentryError(ERROR_MESSAGE + ": Invalid protocol " + this.protocol);
        }
        if (this.port &amp;&amp; isNaN(parseInt(this.port, 10))) {
            throw new error_1.SentryError(ERROR_MESSAGE + ": Invalid port " + this.port);
        }
    };
    return Dsn;
}());
exports.Dsn = Dsn;

},{"./error":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/error.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/error.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
var polyfill_1 = _dereq_("./polyfill");
/** An error emitted by Sentry SDKs and related utilities. */
var SentryError = /** @class */ (function (_super) {
    tslib_1.__extends(SentryError, _super);
    function SentryError(message) {
        var _newTarget = this.constructor;
        var _this = _super.call(this, message) || this;
        _this.message = message;
        _this.name = _newTarget.prototype.constructor.name;
        polyfill_1.setPrototypeOf(_this, _newTarget.prototype);
        return _this;
    }
    return SentryError;
}(Error));
exports.SentryError = SentryError;

},{"./polyfill":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/polyfill.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/index.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
tslib_1.__exportStar(_dereq_("./async"), exports);
tslib_1.__exportStar(_dereq_("./browser"), exports);
tslib_1.__exportStar(_dereq_("./dsn"), exports);
tslib_1.__exportStar(_dereq_("./error"), exports);
tslib_1.__exportStar(_dereq_("./instrument"), exports);
tslib_1.__exportStar(_dereq_("./is"), exports);
tslib_1.__exportStar(_dereq_("./logger"), exports);
tslib_1.__exportStar(_dereq_("./memo"), exports);
tslib_1.__exportStar(_dereq_("./misc"), exports);
tslib_1.__exportStar(_dereq_("./node"), exports);
tslib_1.__exportStar(_dereq_("./object"), exports);
tslib_1.__exportStar(_dereq_("./path"), exports);
tslib_1.__exportStar(_dereq_("./promisebuffer"), exports);
tslib_1.__exportStar(_dereq_("./stacktrace"), exports);
tslib_1.__exportStar(_dereq_("./string"), exports);
tslib_1.__exportStar(_dereq_("./supports"), exports);
tslib_1.__exportStar(_dereq_("./syncpromise"), exports);
tslib_1.__exportStar(_dereq_("./time"), exports);

},{"./async":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/async.js","./browser":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/browser.js","./dsn":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/dsn.js","./error":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/error.js","./instrument":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/instrument.js","./is":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/is.js","./logger":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/logger.js","./memo":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/memo.js","./misc":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/misc.js","./node":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/node.js","./object":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/object.js","./path":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/path.js","./promisebuffer":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/promisebuffer.js","./stacktrace":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/stacktrace.js","./string":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/string.js","./supports":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/supports.js","./syncpromise":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/syncpromise.js","./time":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/time.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/instrument.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
var is_1 = _dereq_("./is");
var logger_1 = _dereq_("./logger");
var misc_1 = _dereq_("./misc");
var object_1 = _dereq_("./object");
var stacktrace_1 = _dereq_("./stacktrace");
var supports_1 = _dereq_("./supports");
var global = misc_1.getGlobalObject();
/**
 * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.
 *  - Console API
 *  - Fetch API
 *  - XHR API
 *  - History API
 *  - DOM API (click/typing)
 *  - Error API
 *  - UnhandledRejection API
 */
var handlers = {};
var instrumented = {};
/** Instruments given API */
function instrument(type) {
    if (instrumented[type]) {
        return;
    }
    instrumented[type] = true;
    switch (type) {
        case 'console':
            instrumentConsole();
            break;
        case 'dom':
            instrumentDOM();
            break;
        case 'xhr':
            instrumentXHR();
            break;
        case 'fetch':
            instrumentFetch();
            break;
        case 'history':
            instrumentHistory();
            break;
        case 'error':
            instrumentError();
            break;
        case 'unhandledrejection':
            instrumentUnhandledRejection();
            break;
        default:
            logger_1.logger.warn('unknown instrumentation type:', type);
    }
}
/**
 * Add handler that will be called when given type of instrumentation triggers.
 * Use at your own risk, this might break without changelog notice, only used internally.
 * @hidden
 */
function addInstrumentationHandler(handler) {
    if (!handler || typeof handler.type !== 'string' || typeof handler.callback !== 'function') {
        return;
    }
    handlers[handler.type] = handlers[handler.type] || [];
    handlers[handler.type].push(handler.callback);
    instrument(handler.type);
}
exports.addInstrumentationHandler = addInstrumentationHandler;
/** JSDoc */
function triggerHandlers(type, data) {
    var e_1, _a;
    if (!type || !handlers[type]) {
        return;
    }
    try {
        for (var _b = tslib_1.__values(handlers[type] || []), _c = _b.next(); !_c.done; _c = _b.next()) {
            var handler = _c.value;
            try {
                handler(data);
            }
            catch (e) {
                logger_1.logger.error("Error while triggering instrumentation handler.\nType: " + type + "\nName: " + stacktrace_1.getFunctionName(handler) + "\nError: " + e);
            }
        }
    }
    catch (e_1_1) { e_1 = { error: e_1_1 }; }
    finally {
        try {
            if (_c &amp;&amp; !_c.done &amp;&amp; (_a = _b.return)) _a.call(_b);
        }
        finally { if (e_1) throw e_1.error; }
    }
}
/** JSDoc */
function instrumentConsole() {
    if (!('console' in global)) {
        return;
    }
    ['debug', 'info', 'warn', 'error', 'log', 'assert'].forEach(function (level) {
        if (!(level in global.console)) {
            return;
        }
        object_1.fill(global.console, level, function (originalConsoleLevel) {
            return function () {
                var args = [];
                for (var _i = 0; _i &lt; arguments.length; _i++) {
                    args[_i] = arguments[_i];
                }
                triggerHandlers('console', { args: args, level: level });
                // this fails for some browsers. :(
                if (originalConsoleLevel) {
                    Function.prototype.apply.call(originalConsoleLevel, global.console, args);
                }
            };
        });
    });
}
/** JSDoc */
function instrumentFetch() {
    if (!supports_1.supportsNativeFetch()) {
        return;
    }
    object_1.fill(global, 'fetch', function (originalFetch) {
        return function () {
            var args = [];
            for (var _i = 0; _i &lt; arguments.length; _i++) {
                args[_i] = arguments[_i];
            }
            var handlerData = {
                args: args,
                fetchData: {
                    method: getFetchMethod(args),
                    url: getFetchUrl(args),
                },
                startTimestamp: Date.now(),
            };
            triggerHandlers('fetch', tslib_1.__assign({}, handlerData));
            // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
            return originalFetch.apply(global, args).then(function (response) {
                triggerHandlers('fetch', tslib_1.__assign(tslib_1.__assign({}, handlerData), { endTimestamp: Date.now(), response: response }));
                return response;
            }, function (error) {
                triggerHandlers('fetch', tslib_1.__assign(tslib_1.__assign({}, handlerData), { endTimestamp: Date.now(), error: error }));
                // NOTE: If you are a Sentry user, and you are seeing this stack frame,
                //       it means the sentry.javascript SDK caught an error invoking your application code.
                //       This is expected behavior and NOT indicative of a bug with sentry.javascript.
                throw error;
            });
        };
    });
}
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
/** Extract `method` from fetch call arguments */
function getFetchMethod(fetchArgs) {
    if (fetchArgs === void 0) { fetchArgs = []; }
    if ('Request' in global &amp;&amp; is_1.isInstanceOf(fetchArgs[0], Request) &amp;&amp; fetchArgs[0].method) {
        return String(fetchArgs[0].method).toUpperCase();
    }
    if (fetchArgs[1] &amp;&amp; fetchArgs[1].method) {
        return String(fetchArgs[1].method).toUpperCase();
    }
    return 'GET';
}
/** Extract `url` from fetch call arguments */
function getFetchUrl(fetchArgs) {
    if (fetchArgs === void 0) { fetchArgs = []; }
    if (typeof fetchArgs[0] === 'string') {
        return fetchArgs[0];
    }
    if ('Request' in global &amp;&amp; is_1.isInstanceOf(fetchArgs[0], Request)) {
        return fetchArgs[0].url;
    }
    return String(fetchArgs[0]);
}
/* eslint-enable @typescript-eslint/no-unsafe-member-access */
/** JSDoc */
function instrumentXHR() {
    if (!('XMLHttpRequest' in global)) {
        return;
    }
    // Poor man's implementation of ES6 `Map`, tracking and keeping in sync key and value separately.
    var requestKeys = [];
    var requestValues = [];
    var xhrproto = XMLHttpRequest.prototype;
    object_1.fill(xhrproto, 'open', function (originalOpen) {
        return function () {
            var args = [];
            for (var _i = 0; _i &lt; arguments.length; _i++) {
                args[_i] = arguments[_i];
            }
            // eslint-disable-next-line @typescript-eslint/no-this-alias
            var xhr = this;
            var url = args[1];
            xhr.__sentry_xhr__ = {
                // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
                method: is_1.isString(args[0]) ? args[0].toUpperCase() : args[0],
                url: args[1],
            };
            // if Sentry key appears in URL, don't capture it as a request
            // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
            if (is_1.isString(url) &amp;&amp; xhr.__sentry_xhr__.method === 'POST' &amp;&amp; url.match(/sentry_key/)) {
                xhr.__sentry_own_request__ = true;
            }
            var onreadystatechangeHandler = function () {
                if (xhr.readyState === 4) {
                    try {
                        // touching statusCode in some platforms throws
                        // an exception
                        if (xhr.__sentry_xhr__) {
                            xhr.__sentry_xhr__.status_code = xhr.status;
                        }
                    }
                    catch (e) {
                        /* do nothing */
                    }
                    try {
                        var requestPos = requestKeys.indexOf(xhr);
                        if (requestPos !== -1) {
                            // Make sure to pop both key and value to keep it in sync.
                            requestKeys.splice(requestPos);
                            var args_1 = requestValues.splice(requestPos)[0];
                            if (xhr.__sentry_xhr__ &amp;&amp; args_1[0] !== undefined) {
                                xhr.__sentry_xhr__.body = args_1[0];
                            }
                        }
                    }
                    catch (e) {
                        /* do nothing */
                    }
                    triggerHandlers('xhr', {
                        args: args,
                        endTimestamp: Date.now(),
                        startTimestamp: Date.now(),
                        xhr: xhr,
                    });
                }
            };
            if ('onreadystatechange' in xhr &amp;&amp; typeof xhr.onreadystatechange === 'function') {
                object_1.fill(xhr, 'onreadystatechange', function (original) {
                    return function () {
                        var readyStateArgs = [];
                        for (var _i = 0; _i &lt; arguments.length; _i++) {
                            readyStateArgs[_i] = arguments[_i];
                        }
                        onreadystatechangeHandler();
                        return original.apply(xhr, readyStateArgs);
                    };
                });
            }
            else {
                xhr.addEventListener('readystatechange', onreadystatechangeHandler);
            }
            return originalOpen.apply(xhr, args);
        };
    });
    object_1.fill(xhrproto, 'send', function (originalSend) {
        return function () {
            var args = [];
            for (var _i = 0; _i &lt; arguments.length; _i++) {
                args[_i] = arguments[_i];
            }
            requestKeys.push(this);
            requestValues.push(args);
            triggerHandlers('xhr', {
                args: args,
                startTimestamp: Date.now(),
                xhr: this,
            });
            return originalSend.apply(this, args);
        };
    });
}
var lastHref;
/** JSDoc */
function instrumentHistory() {
    if (!supports_1.supportsHistory()) {
        return;
    }
    var oldOnPopState = global.onpopstate;
    global.onpopstate = function () {
        var args = [];
        for (var _i = 0; _i &lt; arguments.length; _i++) {
            args[_i] = arguments[_i];
        }
        var to = global.location.href;
        // keep track of the current URL state, as we always receive only the updated state
        var from = lastHref;
        lastHref = to;
        triggerHandlers('history', {
            from: from,
            to: to,
        });
        if (oldOnPopState) {
            return oldOnPopState.apply(this, args);
        }
    };
    /** @hidden */
    function historyReplacementFunction(originalHistoryFunction) {
        return function () {
            var args = [];
            for (var _i = 0; _i &lt; arguments.length; _i++) {
                args[_i] = arguments[_i];
            }
            var url = args.length &gt; 2 ? args[2] : undefined;
            if (url) {
                // coerce to string (this is what pushState does)
                var from = lastHref;
                var to = String(url);
                // keep track of the current URL state, as we always receive only the updated state
                lastHref = to;
                triggerHandlers('history', {
                    from: from,
                    to: to,
                });
            }
            return originalHistoryFunction.apply(this, args);
        };
    }
    object_1.fill(global.history, 'pushState', historyReplacementFunction);
    object_1.fill(global.history, 'replaceState', historyReplacementFunction);
}
/** JSDoc */
function instrumentDOM() {
    if (!('document' in global)) {
        return;
    }
    // Capture breadcrumbs from any click that is unhandled / bubbled up all the way
    // to the document. Do this before we instrument addEventListener.
    global.document.addEventListener('click', domEventHandler('click', triggerHandlers.bind(null, 'dom')), false);
    global.document.addEventListener('keypress', keypressEventHandler(triggerHandlers.bind(null, 'dom')), false);
    // After hooking into document bubbled up click and keypresses events, we also hook into user handled click &amp; keypresses.
    ['EventTarget', 'Node'].forEach(function (target) {
        /* eslint-disable @typescript-eslint/no-unsafe-member-access */
        var proto = global[target] &amp;&amp; global[target].prototype;
        // eslint-disable-next-line no-prototype-builtins
        if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {
            return;
        }
        /* eslint-enable @typescript-eslint/no-unsafe-member-access */
        object_1.fill(proto, 'addEventListener', function (original) {
            return function (eventName, fn, options) {
                if (fn &amp;&amp; fn.handleEvent) {
                    if (eventName === 'click') {
                        object_1.fill(fn, 'handleEvent', function (innerOriginal) {
                            return function (event) {
                                domEventHandler('click', triggerHandlers.bind(null, 'dom'))(event);
                                return innerOriginal.call(this, event);
                            };
                        });
                    }
                    if (eventName === 'keypress') {
                        object_1.fill(fn, 'handleEvent', function (innerOriginal) {
                            return function (event) {
                                keypressEventHandler(triggerHandlers.bind(null, 'dom'))(event);
                                return innerOriginal.call(this, event);
                            };
                        });
                    }
                }
                else {
                    if (eventName === 'click') {
                        domEventHandler('click', triggerHandlers.bind(null, 'dom'), true)(this);
                    }
                    if (eventName === 'keypress') {
                        keypressEventHandler(triggerHandlers.bind(null, 'dom'))(this);
                    }
                }
                return original.call(this, eventName, fn, options);
            };
        });
        object_1.fill(proto, 'removeEventListener', function (original) {
            return function (eventName, fn, options) {
                try {
                    original.call(this, eventName, fn.__sentry_wrapped__, options);
                }
                catch (e) {
                    // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments
                }
                return original.call(this, eventName, fn, options);
            };
        });
    });
}
var debounceDuration = 1000;
var debounceTimer = 0;
var keypressTimeout;
var lastCapturedEvent;
/**
 * Wraps addEventListener to capture UI breadcrumbs
 * @param name the event name (e.g. "click")
 * @param handler function that will be triggered
 * @param debounce decides whether it should wait till another event loop
 * @returns wrapped breadcrumb events handler
 * @hidden
 */
function domEventHandler(name, handler, debounce) {
    if (debounce === void 0) { debounce = false; }
    return function (event) {
        // reset keypress timeout; e.g. triggering a 'click' after
        // a 'keypress' will reset the keypress debounce so that a new
        // set of keypresses can be recorded
        keypressTimeout = undefined;
        // It's possible this handler might trigger multiple times for the same
        // event (e.g. event propagation through node ancestors). Ignore if we've
        // already captured the event.
        if (!event || lastCapturedEvent === event) {
            return;
        }
        lastCapturedEvent = event;
        if (debounceTimer) {
            clearTimeout(debounceTimer);
        }
        if (debounce) {
            debounceTimer = setTimeout(function () {
                handler({ event: event, name: name });
            });
        }
        else {
            handler({ event: event, name: name });
        }
    };
}
/**
 * Wraps addEventListener to capture keypress UI events
 * @param handler function that will be triggered
 * @returns wrapped keypress events handler
 * @hidden
 */
function keypressEventHandler(handler) {
    // TODO: if somehow user switches keypress target before
    //       debounce timeout is triggered, we will only capture
    //       a single breadcrumb from the FIRST target (acceptable?)
    return function (event) {
        var target;
        try {
            target = event.target;
        }
        catch (e) {
            // just accessing event properties can throw an exception in some rare circumstances
            // see: https://github.com/getsentry/raven-js/issues/838
            return;
        }
        var tagName = target &amp;&amp; target.tagName;
        // only consider keypress events on actual input elements
        // this will disregard keypresses targeting body (e.g. tabbing
        // through elements, hotkeys, etc)
        if (!tagName || (tagName !== 'INPUT' &amp;&amp; tagName !== 'TEXTAREA' &amp;&amp; !target.isContentEditable)) {
            return;
        }
        // record first keypress in a series, but ignore subsequent
        // keypresses until debounce clears
        if (!keypressTimeout) {
            domEventHandler('input', handler)(event);
        }
        clearTimeout(keypressTimeout);
        keypressTimeout = setTimeout(function () {
            keypressTimeout = undefined;
        }, debounceDuration);
    };
}
var _oldOnErrorHandler = null;
/** JSDoc */
function instrumentError() {
    _oldOnErrorHandler = global.onerror;
    global.onerror = function (msg, url, line, column, error) {
        triggerHandlers('error', {
            column: column,
            error: error,
            line: line,
            msg: msg,
            url: url,
        });
        if (_oldOnErrorHandler) {
            // eslint-disable-next-line prefer-rest-params
            return _oldOnErrorHandler.apply(this, arguments);
        }
        return false;
    };
}
var _oldOnUnhandledRejectionHandler = null;
/** JSDoc */
function instrumentUnhandledRejection() {
    _oldOnUnhandledRejectionHandler = global.onunhandledrejection;
    global.onunhandledrejection = function (e) {
        triggerHandlers('unhandledrejection', e);
        if (_oldOnUnhandledRejectionHandler) {
            // eslint-disable-next-line prefer-rest-params
            return _oldOnUnhandledRejectionHandler.apply(this, arguments);
        }
        return true;
    };
}

},{"./is":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/is.js","./logger":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/logger.js","./misc":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/misc.js","./object":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/object.js","./stacktrace":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/stacktrace.js","./supports":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/supports.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/is.js":[function(_dereq_,module,exports){
/* eslint-disable @typescript-eslint/no-explicit-any */
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
Object.defineProperty(exports, "__esModule", { value: true });
/**
 * Checks whether given value's type is one of a few Error or Error-like
 * {@link isError}.
 *
 * @param wat A value to be checked.
 * @returns A boolean representing the result.
 */
function isError(wat) {
    switch (Object.prototype.toString.call(wat)) {
        case '[object Error]':
            return true;
        case '[object Exception]':
            return true;
        case '[object DOMException]':
            return true;
        default:
            return isInstanceOf(wat, Error);
    }
}
exports.isError = isError;
/**
 * Checks whether given value's type is ErrorEvent
 * {@link isErrorEvent}.
 *
 * @param wat A value to be checked.
 * @returns A boolean representing the result.
 */
function isErrorEvent(wat) {
    return Object.prototype.toString.call(wat) === '[object ErrorEvent]';
}
exports.isErrorEvent = isErrorEvent;
/**
 * Checks whether given value's type is DOMError
 * {@link isDOMError}.
 *
 * @param wat A value to be checked.
 * @returns A boolean representing the result.
 */
function isDOMError(wat) {
    return Object.prototype.toString.call(wat) === '[object DOMError]';
}
exports.isDOMError = isDOMError;
/**
 * Checks whether given value's type is DOMException
 * {@link isDOMException}.
 *
 * @param wat A value to be checked.
 * @returns A boolean representing the result.
 */
function isDOMException(wat) {
    return Object.prototype.toString.call(wat) === '[object DOMException]';
}
exports.isDOMException = isDOMException;
/**
 * Checks whether given value's type is a string
 * {@link isString}.
 *
 * @param wat A value to be checked.
 * @returns A boolean representing the result.
 */
function isString(wat) {
    return Object.prototype.toString.call(wat) === '[object String]';
}
exports.isString = isString;
/**
 * Checks whether given value's is a primitive (undefined, null, number, boolean, string, bigint, symbol)
 * {@link isPrimitive}.
 *
 * @param wat A value to be checked.
 * @returns A boolean representing the result.
 */
function isPrimitive(wat) {
    return wat === null || (typeof wat !== 'object' &amp;&amp; typeof wat !== 'function');
}
exports.isPrimitive = isPrimitive;
/**
 * Checks whether given value's type is an object literal
 * {@link isPlainObject}.
 *
 * @param wat A value to be checked.
 * @returns A boolean representing the result.
 */
function isPlainObject(wat) {
    return Object.prototype.toString.call(wat) === '[object Object]';
}
exports.isPlainObject = isPlainObject;
/**
 * Checks whether given value's type is an Event instance
 * {@link isEvent}.
 *
 * @param wat A value to be checked.
 * @returns A boolean representing the result.
 */
function isEvent(wat) {
    return typeof Event !== 'undefined' &amp;&amp; isInstanceOf(wat, Event);
}
exports.isEvent = isEvent;
/**
 * Checks whether given value's type is an Element instance
 * {@link isElement}.
 *
 * @param wat A value to be checked.
 * @returns A boolean representing the result.
 */
function isElement(wat) {
    return typeof Element !== 'undefined' &amp;&amp; isInstanceOf(wat, Element);
}
exports.isElement = isElement;
/**
 * Checks whether given value's type is an regexp
 * {@link isRegExp}.
 *
 * @param wat A value to be checked.
 * @returns A boolean representing the result.
 */
function isRegExp(wat) {
    return Object.prototype.toString.call(wat) === '[object RegExp]';
}
exports.isRegExp = isRegExp;
/**
 * Checks whether given value has a then function.
 * @param wat A value to be checked.
 */
function isThenable(wat) {
    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
    return Boolean(wat &amp;&amp; wat.then &amp;&amp; typeof wat.then === 'function');
}
exports.isThenable = isThenable;
/**
 * Checks whether given value's type is a SyntheticEvent
 * {@link isSyntheticEvent}.
 *
 * @param wat A value to be checked.
 * @returns A boolean representing the result.
 */
function isSyntheticEvent(wat) {
    return isPlainObject(wat) &amp;&amp; 'nativeEvent' in wat &amp;&amp; 'preventDefault' in wat &amp;&amp; 'stopPropagation' in wat;
}
exports.isSyntheticEvent = isSyntheticEvent;
/**
 * Checks whether given value's type is an instance of provided constructor.
 * {@link isInstanceOf}.
 *
 * @param wat A value to be checked.
 * @param base A constructor to be used in a check.
 * @returns A boolean representing the result.
 */
function isInstanceOf(wat, base) {
    try {
        return wat instanceof base;
    }
    catch (_e) {
        return false;
    }
}
exports.isInstanceOf = isInstanceOf;

},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/logger.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
/* eslint-disable @typescript-eslint/no-explicit-any */
var misc_1 = _dereq_("./misc");
// TODO: Implement different loggers for different environments
var global = misc_1.getGlobalObject();
/** Prefix for logging strings */
var PREFIX = 'Sentry Logger ';
/** JSDoc */
var Logger = /** @class */ (function () {
    /** JSDoc */
    function Logger() {
        this._enabled = false;
    }
    /** JSDoc */
    Logger.prototype.disable = function () {
        this._enabled = false;
    };
    /** JSDoc */
    Logger.prototype.enable = function () {
        this._enabled = true;
    };
    /** JSDoc */
    Logger.prototype.log = function () {
        var args = [];
        for (var _i = 0; _i &lt; arguments.length; _i++) {
            args[_i] = arguments[_i];
        }
        if (!this._enabled) {
            return;
        }
        misc_1.consoleSandbox(function () {
            global.console.log(PREFIX + "[Log]: " + args.join(' '));
        });
    };
    /** JSDoc */
    Logger.prototype.warn = function () {
        var args = [];
        for (var _i = 0; _i &lt; arguments.length; _i++) {
            args[_i] = arguments[_i];
        }
        if (!this._enabled) {
            return;
        }
        misc_1.consoleSandbox(function () {
            global.console.warn(PREFIX + "[Warn]: " + args.join(' '));
        });
    };
    /** JSDoc */
    Logger.prototype.error = function () {
        var args = [];
        for (var _i = 0; _i &lt; arguments.length; _i++) {
            args[_i] = arguments[_i];
        }
        if (!this._enabled) {
            return;
        }
        misc_1.consoleSandbox(function () {
            global.console.error(PREFIX + "[Error]: " + args.join(' '));
        });
    };
    return Logger;
}());
// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used
global.__SENTRY__ = global.__SENTRY__ || {};
var logger = global.__SENTRY__.logger || (global.__SENTRY__.logger = new Logger());
exports.logger = logger;

},{"./misc":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/misc.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/memo.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
/* eslint-disable @typescript-eslint/no-explicit-any */
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
/**
 * Memo class used for decycle json objects. Uses WeakSet if available otherwise array.
 */
var Memo = /** @class */ (function () {
    function Memo() {
        this._hasWeakSet = typeof WeakSet === 'function';
        this._inner = this._hasWeakSet ? new WeakSet() : [];
    }
    /**
     * Sets obj to remember.
     * @param obj Object to remember
     */
    Memo.prototype.memoize = function (obj) {
        if (this._hasWeakSet) {
            if (this._inner.has(obj)) {
                return true;
            }
            this._inner.add(obj);
            return false;
        }
        // eslint-disable-next-line @typescript-eslint/prefer-for-of
        for (var i = 0; i &lt; this._inner.length; i++) {
            var value = this._inner[i];
            if (value === obj) {
                return true;
            }
        }
        this._inner.push(obj);
        return false;
    };
    /**
     * Removes object from internal storage.
     * @param obj Object to forget
     */
    Memo.prototype.unmemoize = function (obj) {
        if (this._hasWeakSet) {
            this._inner.delete(obj);
        }
        else {
            for (var i = 0; i &lt; this._inner.length; i++) {
                if (this._inner[i] === obj) {
                    this._inner.splice(i, 1);
                    break;
                }
            }
        }
    };
    return Memo;
}());
exports.Memo = Memo;

},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/misc.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var node_1 = _dereq_("./node");
var string_1 = _dereq_("./string");
var fallbackGlobalObject = {};
/**
 * Safely get global scope object
 *
 * @returns Global scope object
 */
function getGlobalObject() {
    return (node_1.isNodeEnv()
        ? global
        : typeof window !== 'undefined'
            ? window
            : typeof self !== 'undefined'
                ? self
                : fallbackGlobalObject);
}
exports.getGlobalObject = getGlobalObject;
/**
 * UUID4 generator
 *
 * @returns string Generated UUID4.
 */
function uuid4() {
    var global = getGlobalObject();
    var crypto = global.crypto || global.msCrypto;
    if (!(crypto === void 0) &amp;&amp; crypto.getRandomValues) {
        // Use window.crypto API if available
        var arr = new Uint16Array(8);
        crypto.getRandomValues(arr);
        // set 4 in byte 7
        // eslint-disable-next-line no-bitwise
        arr[3] = (arr[3] &amp; 0xfff) | 0x4000;
        // set 2 most significant bits of byte 9 to '10'
        // eslint-disable-next-line no-bitwise
        arr[4] = (arr[4] &amp; 0x3fff) | 0x8000;
        var pad = function (num) {
            var v = num.toString(16);
            while (v.length &lt; 4) {
                v = "0" + v;
            }
            return v;
        };
        return (pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]));
    }
    // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523
    return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
        // eslint-disable-next-line no-bitwise
        var r = (Math.random() * 16) | 0;
        // eslint-disable-next-line no-bitwise
        var v = c === 'x' ? r : (r &amp; 0x3) | 0x8;
        return v.toString(16);
    });
}
exports.uuid4 = uuid4;
/**
 * Parses string form of URL into an object
 * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B
 * // intentionally using regex and not &lt;a/&gt; href parsing trick because React Native and other
 * // environments where DOM might not be available
 * @returns parsed URL object
 */
function parseUrl(url) {
    if (!url) {
        return {};
    }
    var match = url.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);
    if (!match) {
        return {};
    }
    // coerce to undefined values to empty string so we don't get 'undefined'
    var query = match[6] || '';
    var fragment = match[8] || '';
    return {
        host: match[4],
        path: match[5],
        protocol: match[2],
        relative: match[5] + query + fragment,
    };
}
exports.parseUrl = parseUrl;
/**
 * Extracts either message or type+value from an event that can be used for user-facing logs
 * @returns event's description
 */
function getEventDescription(event) {
    if (event.message) {
        return event.message;
    }
    if (event.exception &amp;&amp; event.exception.values &amp;&amp; event.exception.values[0]) {
        var exception = event.exception.values[0];
        if (exception.type &amp;&amp; exception.value) {
            return exception.type + ": " + exception.value;
        }
        return exception.type || exception.value || event.event_id || '&lt;unknown&gt;';
    }
    return event.event_id || '&lt;unknown&gt;';
}
exports.getEventDescription = getEventDescription;
/** JSDoc */
function consoleSandbox(callback) {
    var global = getGlobalObject();
    var levels = ['debug', 'info', 'warn', 'error', 'log', 'assert'];
    if (!('console' in global)) {
        return callback();
    }
    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
    var originalConsole = global.console;
    var wrappedLevels = {};
    // Restore all wrapped console methods
    levels.forEach(function (level) {
        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
        if (level in global.console &amp;&amp; originalConsole[level].__sentry_original__) {
            wrappedLevels[level] = originalConsole[level];
            originalConsole[level] = originalConsole[level].__sentry_original__;
        }
    });
    // Perform callback manipulations
    var result = callback();
    // Revert restoration to wrapped state
    Object.keys(wrappedLevels).forEach(function (level) {
        originalConsole[level] = wrappedLevels[level];
    });
    return result;
}
exports.consoleSandbox = consoleSandbox;
/**
 * Adds exception values, type and value to an synthetic Exception.
 * @param event The event to modify.
 * @param value Value of the exception.
 * @param type Type of the exception.
 * @hidden
 */
function addExceptionTypeValue(event, value, type) {
    event.exception = event.exception || {};
    event.exception.values = event.exception.values || [];
    event.exception.values[0] = event.exception.values[0] || {};
    event.exception.values[0].value = event.exception.values[0].value || value || '';
    event.exception.values[0].type = event.exception.values[0].type || type || 'Error';
}
exports.addExceptionTypeValue = addExceptionTypeValue;
/**
 * Adds exception mechanism to a given event.
 * @param event The event to modify.
 * @param mechanism Mechanism of the mechanism.
 * @hidden
 */
function addExceptionMechanism(event, mechanism) {
    if (mechanism === void 0) { mechanism = {}; }
    // TODO: Use real type with `keyof Mechanism` thingy and maybe make it better?
    try {
        // @ts-ignore Type 'Mechanism | {}' is not assignable to type 'Mechanism | undefined'
        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
        event.exception.values[0].mechanism = event.exception.values[0].mechanism || {};
        Object.keys(mechanism).forEach(function (key) {
            // @ts-ignore Mechanism has no index signature
            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
            event.exception.values[0].mechanism[key] = mechanism[key];
        });
    }
    catch (_oO) {
        // no-empty
    }
}
exports.addExceptionMechanism = addExceptionMechanism;
/**
 * A safe form of location.href
 */
function getLocationHref() {
    try {
        return document.location.href;
    }
    catch (oO) {
        return '';
    }
}
exports.getLocationHref = getLocationHref;
// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string
var SEMVER_REGEXP = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;
/**
 * Parses input into a SemVer interface
 * @param input string representation of a semver version
 */
function parseSemver(input) {
    var match = input.match(SEMVER_REGEXP) || [];
    var major = parseInt(match[1], 10);
    var minor = parseInt(match[2], 10);
    var patch = parseInt(match[3], 10);
    return {
        buildmetadata: match[5],
        major: isNaN(major) ? undefined : major,
        minor: isNaN(minor) ? undefined : minor,
        patch: isNaN(patch) ? undefined : patch,
        prerelease: match[4],
    };
}
exports.parseSemver = parseSemver;
var defaultRetryAfter = 60 * 1000; // 60 seconds
/**
 * Extracts Retry-After value from the request header or returns default value
 * @param now current unix timestamp
 * @param header string representation of 'Retry-After' header
 */
function parseRetryAfterHeader(now, header) {
    if (!header) {
        return defaultRetryAfter;
    }
    var headerDelay = parseInt("" + header, 10);
    if (!isNaN(headerDelay)) {
        return headerDelay * 1000;
    }
    var headerDate = Date.parse("" + header);
    if (!isNaN(headerDate)) {
        return headerDate - now;
    }
    return defaultRetryAfter;
}
exports.parseRetryAfterHeader = parseRetryAfterHeader;
/**
 * This function adds context (pre/post/line) lines to the provided frame
 *
 * @param lines string[] containing all lines
 * @param frame StackFrame that will be mutated
 * @param linesOfContext number of context lines we want to add pre/post
 */
function addContextToFrame(lines, frame, linesOfContext) {
    if (linesOfContext === void 0) { linesOfContext = 5; }
    var lineno = frame.lineno || 0;
    var maxLines = lines.length;
    var sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);
    frame.pre_context = lines
        .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)
        .map(function (line) { return string_1.snipLine(line, 0); });
    frame.context_line = string_1.snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);
    frame.post_context = lines
        .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)
        .map(function (line) { return string_1.snipLine(line, 0); });
}
exports.addContextToFrame = addContextToFrame;
/**
 * Strip the query string and fragment off of a given URL or path (if present)
 *
 * @param urlPath Full URL or path, including possible query string and/or fragment
 * @returns URL or path without query string or fragment
 */
function stripUrlQueryAndFragment(urlPath) {
    // eslint-disable-next-line no-useless-escape
    return urlPath.split(/[\?#]/, 1)[0];
}
exports.stripUrlQueryAndFragment = stripUrlQueryAndFragment;

},{"./node":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/node.js","./string":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/string.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/node.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var is_1 = _dereq_("./is");
var object_1 = _dereq_("./object");
/**
 * Checks whether we're in the Node.js or Browser environment
 *
 * @returns Answer to given question
 */
function isNodeEnv() {
    return Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';
}
exports.isNodeEnv = isNodeEnv;
/**
 * Requires a module which is protected against bundler minification.
 *
 * @param request The module path to resolve
 */
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
function dynamicRequire(mod, request) {
    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
    return mod.require(request);
}
exports.dynamicRequire = dynamicRequire;
/** Default request keys that'll be used to extract data from the request */
var DEFAULT_REQUEST_KEYS = ['cookies', 'data', 'headers', 'method', 'query_string', 'url'];
/**
 * Normalizes data from the request object, accounting for framework differences.
 *
 * @param req The request object from which to extract data
 * @param keys An optional array of keys to include in the normalized data. Defaults to DEFAULT_REQUEST_KEYS if not
 * provided.
 * @returns An object containing normalized request data
 */
function extractNodeRequestData(req, keys) {
    if (keys === void 0) { keys = DEFAULT_REQUEST_KEYS; }
    // make sure we can safely use dynamicRequire below
    if (!isNodeEnv()) {
        throw new Error("Can't get node request data outside of a node environment");
    }
    var requestData = {};
    // headers:
    //   node, express: req.headers
    //   koa: req.header
    var headers = (req.headers || req.header || {});
    // method:
    //   node, express, koa: req.method
    var method = req.method;
    // host:
    //   express: req.hostname in &gt; 4 and req.host in &lt; 4
    //   koa: req.host
    //   node: req.headers.host
    var host = req.hostname || req.host || headers.host || '&lt;no host&gt;';
    // protocol:
    //   node: &lt;n/a&gt;
    //   express, koa: req.protocol
    var protocol = req.protocol === 'https' || req.secure || (req.socket || {}).encrypted
        ? 'https'
        : 'http';
    // url (including path and query string):
    //   node, express: req.originalUrl
    //   koa: req.url
    var originalUrl = (req.originalUrl || req.url || '');
    // absolute url
    var absoluteUrl = protocol + "://" + host + originalUrl;
    keys.forEach(function (key) {
        switch (key) {
            case 'headers':
                requestData.headers = headers;
                break;
            case 'method':
                requestData.method = method;
                break;
            case 'url':
                requestData.url = absoluteUrl;
                break;
            case 'cookies':
                // cookies:
                //   node, express, koa: req.headers.cookie
                //   vercel, sails.js, express (w/ cookie middleware): req.cookies
                // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
                requestData.cookies = req.cookies || dynamicRequire(module, 'cookie').parse(headers.cookie || '');
                break;
            case 'query_string':
                // query string:
                //   node: req.url (raw)
                //   express, koa: req.query
                // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
                requestData.query_string = dynamicRequire(module, 'url').parse(originalUrl || '', false).query;
                break;
            case 'data':
                if (method === 'GET' || method === 'HEAD') {
                    break;
                }
                // body data:
                //   node, express, koa: req.body
                if (req.body !== undefined) {
                    requestData.data = is_1.isString(req.body) ? req.body : JSON.stringify(object_1.normalize(req.body));
                }
                break;
            default:
                if ({}.hasOwnProperty.call(req, key)) {
                    requestData[key] = req[key];
                }
        }
    });
    return requestData;
}
exports.extractNodeRequestData = extractNodeRequestData;

},{"./is":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/is.js","./object":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/object.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/object.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = _dereq_("tslib");
var browser_1 = _dereq_("./browser");
var is_1 = _dereq_("./is");
var memo_1 = _dereq_("./memo");
var stacktrace_1 = _dereq_("./stacktrace");
var string_1 = _dereq_("./string");
/**
 * Wrap a given object method with a higher-order function
 *
 * @param source An object that contains a method to be wrapped.
 * @param name A name of method to be wrapped.
 * @param replacementFactory A function that should be used to wrap a given method, returning the wrapped method which
 * will be substituted in for `source[name]`.
 * @returns void
 */
function fill(source, name, replacementFactory) {
    if (!(name in source)) {
        return;
    }
    var original = source[name];
    var wrapped = replacementFactory(original);
    // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work
    // otherwise it'll throw "TypeError: Object.defineProperties called on non-object"
    if (typeof wrapped === 'function') {
        try {
            wrapped.prototype = wrapped.prototype || {};
            Object.defineProperties(wrapped, {
                __sentry_original__: {
                    enumerable: false,
                    value: original,
                },
            });
        }
        catch (_Oo) {
            // This can throw if multiple fill happens on a global object like XMLHttpRequest
            // Fixes https://github.com/getsentry/sentry-javascript/issues/2043
        }
    }
    source[name] = wrapped;
}
exports.fill = fill;
/**
 * Encodes given object into url-friendly format
 *
 * @param object An object that contains serializable values
 * @returns string Encoded
 */
function urlEncode(object) {
    return Object.keys(object)
        .map(function (key) { return encodeURIComponent(key) + "=" + encodeURIComponent(object[key]); })
        .join('&amp;');
}
exports.urlEncode = urlEncode;
/**
 * Transforms any object into an object literal with all its attributes
 * attached to it.
 *
 * @param value Initial source that we have to transform in order for it to be usable by the serializer
 */
function getWalkSource(value) {
    if (is_1.isError(value)) {
        var error = value;
        var err = {
            message: error.message,
            name: error.name,
            stack: error.stack,
        };
        for (var i in error) {
            if (Object.prototype.hasOwnProperty.call(error, i)) {
                err[i] = error[i];
            }
        }
        return err;
    }
    if (is_1.isEvent(value)) {
        var event_1 = value;
        var source = {};
        source.type = event_1.type;
        // Accessing event.target can throw (see getsentry/raven-js#838, #768)
        try {
            source.target = is_1.isElement(event_1.target)
                ? browser_1.htmlTreeAsString(event_1.target)
                : Object.prototype.toString.call(event_1.target);
        }
        catch (_oO) {
            source.target = '&lt;unknown&gt;';
        }
        try {
            source.currentTarget = is_1.isElement(event_1.currentTarget)
                ? browser_1.htmlTreeAsString(event_1.currentTarget)
                : Object.prototype.toString.call(event_1.currentTarget);
        }
        catch (_oO) {
            source.currentTarget = '&lt;unknown&gt;';
        }
        if (typeof CustomEvent !== 'undefined' &amp;&amp; is_1.isInstanceOf(value, CustomEvent)) {
            source.detail = event_1.detail;
        }
        for (var i in event_1) {
            if (Object.prototype.hasOwnProperty.call(event_1, i)) {
                source[i] = event_1;
            }
        }
        return source;
    }
    return value;
}
/** Calculates bytes size of input string */
function utf8Length(value) {
    // eslint-disable-next-line no-bitwise
    return ~-encodeURI(value).split(/%..|./).length;
}
/** Calculates bytes size of input object */
function jsonSize(value) {
    return utf8Length(JSON.stringify(value));
}
/** JSDoc */
function normalizeToSize(object, 
// Default Node.js REPL depth
depth, 
// 100kB, as 200kB is max payload size, so half sounds reasonable
maxSize) {
    if (depth === void 0) { depth = 3; }
    if (maxSize === void 0) { maxSize = 100 * 1024; }
    var serialized = normalize(object, depth);
    if (jsonSize(serialized) &gt; maxSize) {
        return normalizeToSize(object, depth - 1, maxSize);
    }
    return serialized;
}
exports.normalizeToSize = normalizeToSize;
/**
 * Transform any non-primitive, BigInt, or Symbol-type value into a string. Acts as a no-op on strings, numbers,
 * booleans, null, and undefined.
 *
 * @param value The value to stringify
 * @returns For non-primitive, BigInt, and Symbol-type values, a string denoting the value's type, type and value, or
 *  type and `description` property, respectively. For non-BigInt, non-Symbol primitives, returns the original value,
 *  unchanged.
 */
function serializeValue(value) {
    var type = Object.prototype.toString.call(value);
    // Node.js REPL notation
    if (typeof value === 'string') {
        return value;
    }
    if (type === '[object Object]') {
        return '[Object]';
    }
    if (type === '[object Array]') {
        return '[Array]';
    }
    var normalized = normalizeValue(value);
    return is_1.isPrimitive(normalized) ? normalized : type;
}
/**
 * normalizeValue()
 *
 * Takes unserializable input and make it serializable friendly
 *
 * - translates undefined/NaN values to "[undefined]"/"[NaN]" respectively,
 * - serializes Error objects
 * - filter global objects
 */
function normalizeValue(value, key) {
    if (key === 'domain' &amp;&amp; value &amp;&amp; typeof value === 'object' &amp;&amp; value._events) {
        return '[Domain]';
    }
    if (key === 'domainEmitter') {
        return '[DomainEmitter]';
    }
    if (typeof global !== 'undefined' &amp;&amp; value === global) {
        return '[Global]';
    }
    if (typeof window !== 'undefined' &amp;&amp; value === window) {
        return '[Window]';
    }
    if (typeof document !== 'undefined' &amp;&amp; value === document) {
        return '[Document]';
    }
    // React's SyntheticEvent thingy
    if (is_1.isSyntheticEvent(value)) {
        return '[SyntheticEvent]';
    }
    if (typeof value === 'number' &amp;&amp; value !== value) {
        return '[NaN]';
    }
    if (value === void 0) {
        return '[undefined]';
    }
    if (typeof value === 'function') {
        return "[Function: " + stacktrace_1.getFunctionName(value) + "]";
    }
    // symbols and bigints are considered primitives by TS, but aren't natively JSON-serilaizable
    if (typeof value === 'symbol') {
        return "[" + String(value) + "]";
    }
    if (typeof value === 'bigint') {
        return "[BigInt: " + String(value) + "]";
    }
    return value;
}
/**
 * Walks an object to perform a normalization on it
 *
 * @param key of object that's walked in current iteration
 * @param value object to be walked
 * @param depth Optional number indicating how deep should walking be performed
 * @param memo Optional Memo class handling decycling
 */
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
function walk(key, value, depth, memo) {
    if (depth === void 0) { depth = +Infinity; }
    if (memo === void 0) { memo = new memo_1.Memo(); }
    // If we reach the maximum depth, serialize whatever has left
    if (depth === 0) {
        return serializeValue(value);
    }
    /* eslint-disable @typescript-eslint/no-unsafe-member-access */
    // If value implements `toJSON` method, call it and return early
    if (value !== null &amp;&amp; value !== undefined &amp;&amp; typeof value.toJSON === 'function') {
        return value.toJSON();
    }
    /* eslint-enable @typescript-eslint/no-unsafe-member-access */
    // If normalized value is a primitive, there are no branches left to walk, so we can just bail out, as theres no point in going down that branch any further
    var normalized = normalizeValue(value, key);
    if (is_1.isPrimitive(normalized)) {
        return normalized;
    }
    // Create source that we will use for next itterations, either objectified error object (Error type with extracted keys:value pairs) or the input itself
    var source = getWalkSource(value);
    // Create an accumulator that will act as a parent for all future itterations of that branch
    var acc = Array.isArray(value) ? [] : {};
    // If we already walked that branch, bail out, as it's circular reference
    if (memo.memoize(value)) {
        return '[Circular ~]';
    }
    // Walk all keys of the source
    for (var innerKey in source) {
        // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.
        if (!Object.prototype.hasOwnProperty.call(source, innerKey)) {
            continue;
        }
        // Recursively walk through all the child nodes
        acc[innerKey] = walk(innerKey, source[innerKey], depth - 1, memo);
    }
    // Once walked through all the branches, remove the parent from memo storage
    memo.unmemoize(value);
    // Return accumulated values
    return acc;
}
exports.walk = walk;
/**
 * normalize()
 *
 * - Creates a copy to prevent original input mutation
 * - Skip non-enumerablers
 * - Calls `toJSON` if implemented
 * - Removes circular references
 * - Translates non-serializeable values (undefined/NaN/Functions) to serializable format
 * - Translates known global objects/Classes to a string representations
 * - Takes care of Error objects serialization
 * - Optionally limit depth of final output
 */
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
function normalize(input, depth) {
    try {
        return JSON.parse(JSON.stringify(input, function (key, value) { return walk(key, value, depth); }));
    }
    catch (_oO) {
        return '**non-serializable**';
    }
}
exports.normalize = normalize;
/**
 * Given any captured exception, extract its keys and create a sorted
 * and truncated list that will be used inside the event message.
 * eg. `Non-error exception captured with keys: foo, bar, baz`
 */
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
function extractExceptionKeysForMessage(exception, maxLength) {
    if (maxLength === void 0) { maxLength = 40; }
    var keys = Object.keys(getWalkSource(exception));
    keys.sort();
    if (!keys.length) {
        return '[object has no keys]';
    }
    if (keys[0].length &gt;= maxLength) {
        return string_1.truncate(keys[0], maxLength);
    }
    for (var includedKeys = keys.length; includedKeys &gt; 0; includedKeys--) {
        var serialized = keys.slice(0, includedKeys).join(', ');
        if (serialized.length &gt; maxLength) {
            continue;
        }
        if (includedKeys === keys.length) {
            return serialized;
        }
        return string_1.truncate(serialized, maxLength);
    }
    return '';
}
exports.extractExceptionKeysForMessage = extractExceptionKeysForMessage;
/**
 * Given any object, return the new object with removed keys that value was `undefined`.
 * Works recursively on objects and arrays.
 */
function dropUndefinedKeys(val) {
    var e_1, _a;
    if (is_1.isPlainObject(val)) {
        var obj = val;
        var rv = {};
        try {
            for (var _b = tslib_1.__values(Object.keys(obj)), _c = _b.next(); !_c.done; _c = _b.next()) {
                var key = _c.value;
                if (typeof obj[key] !== 'undefined') {
                    rv[key] = dropUndefinedKeys(obj[key]);
                }
            }
        }
        catch (e_1_1) { e_1 = { error: e_1_1 }; }
        finally {
            try {
                if (_c &amp;&amp; !_c.done &amp;&amp; (_a = _b.return)) _a.call(_b);
            }
            finally { if (e_1) throw e_1.error; }
        }
        return rv;
    }
    if (Array.isArray(val)) {
        return val.map(dropUndefinedKeys);
    }
    return val;
}
exports.dropUndefinedKeys = dropUndefinedKeys;

},{"./browser":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/browser.js","./is":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/is.js","./memo":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/memo.js","./stacktrace":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/stacktrace.js","./string":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/string.js","tslib":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/node_modules/tslib/tslib.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/path.js":[function(_dereq_,module,exports){
// Slightly modified (no IE8 support, ES6) and transcribed to TypeScript
// https://raw.githubusercontent.com/calvinmetcalf/rollup-plugin-node-builtins/master/src/es6/path.js
Object.defineProperty(exports, "__esModule", { value: true });
/** JSDoc */
function normalizeArray(parts, allowAboveRoot) {
    // if the path tries to go above the root, `up` ends up &gt; 0
    var up = 0;
    for (var i = parts.length - 1; i &gt;= 0; i--) {
        var last = parts[i];
        if (last === '.') {
            parts.splice(i, 1);
        }
        else if (last === '..') {
            parts.splice(i, 1);
            // eslint-disable-next-line no-plusplus
            up++;
        }
        else if (up) {
            parts.splice(i, 1);
            // eslint-disable-next-line no-plusplus
            up--;
        }
    }
    // if the path is allowed to go above the root, restore leading ..s
    if (allowAboveRoot) {
        // eslint-disable-next-line no-plusplus
        for (; up--; up) {
            parts.unshift('..');
        }
    }
    return parts;
}
// Split a filename into [root, dir, basename, ext], unix version
// 'root' is just a slash, or nothing.
var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^/]+?|)(\.[^./]*|))(?:[/]*)$/;
/** JSDoc */
function splitPath(filename) {
    var parts = splitPathRe.exec(filename);
    return parts ? parts.slice(1) : [];
}
// path.resolve([from ...], to)
// posix version
/** JSDoc */
function resolve() {
    var args = [];
    for (var _i = 0; _i &lt; arguments.length; _i++) {
        args[_i] = arguments[_i];
    }
    var resolvedPath = '';
    var resolvedAbsolute = false;
    for (var i = args.length - 1; i &gt;= -1 &amp;&amp; !resolvedAbsolute; i--) {
        var path = i &gt;= 0 ? args[i] : '/';
        // Skip empty entries
        if (!path) {
            continue;
        }
        resolvedPath = path + "/" + resolvedPath;
        resolvedAbsolute = path.charAt(0) === '/';
    }
    // At this point the path should be resolved to a full absolute path, but
    // handle relative paths to be safe (might happen when process.cwd() fails)
    // Normalize the path
    resolvedPath = normalizeArray(resolvedPath.split('/').filter(function (p) { return !!p; }), !resolvedAbsolute).join('/');
    return (resolvedAbsolute ? '/' : '') + resolvedPath || '.';
}
exports.resolve = resolve;
/** JSDoc */
function trim(arr) {
    var start = 0;
    for (; start &lt; arr.length; start++) {
        if (arr[start] !== '') {
            break;
        }
    }
    var end = arr.length - 1;
    for (; end &gt;= 0; end--) {
        if (arr[end] !== '') {
            break;
        }
    }
    if (start &gt; end) {
        return [];
    }
    return arr.slice(start, end - start + 1);
}
// path.relative(from, to)
// posix version
/** JSDoc */
function relative(from, to) {
    /* eslint-disable no-param-reassign */
    from = resolve(from).substr(1);
    to = resolve(to).substr(1);
    /* eslint-enable no-param-reassign */
    var fromParts = trim(from.split('/'));
    var toParts = trim(to.split('/'));
    var length = Math.min(fromParts.length, toParts.length);
    var samePartsLength = length;
    for (var i = 0; i &lt; length; i++) {
        if (fromParts[i] !== toParts[i]) {
            samePartsLength = i;
            break;
        }
    }
    var outputParts = [];
    for (var i = samePartsLength; i &lt; fromParts.length; i++) {
        outputParts.push('..');
    }
    outputParts = outputParts.concat(toParts.slice(samePartsLength));
    return outputParts.join('/');
}
exports.relative = relative;
// path.normalize(path)
// posix version
/** JSDoc */
function normalizePath(path) {
    var isPathAbsolute = isAbsolute(path);
    var trailingSlash = path.substr(-1) === '/';
    // Normalize the path
    var normalizedPath = normalizeArray(path.split('/').filter(function (p) { return !!p; }), !isPathAbsolute).join('/');
    if (!normalizedPath &amp;&amp; !isPathAbsolute) {
        normalizedPath = '.';
    }
    if (normalizedPath &amp;&amp; trailingSlash) {
        normalizedPath += '/';
    }
    return (isPathAbsolute ? '/' : '') + normalizedPath;
}
exports.normalizePath = normalizePath;
// posix version
/** JSDoc */
function isAbsolute(path) {
    return path.charAt(0) === '/';
}
exports.isAbsolute = isAbsolute;
// posix version
/** JSDoc */
function join() {
    var args = [];
    for (var _i = 0; _i &lt; arguments.length; _i++) {
        args[_i] = arguments[_i];
    }
    return normalizePath(args.join('/'));
}
exports.join = join;
/** JSDoc */
function dirname(path) {
    var result = splitPath(path);
    var root = result[0];
    var dir = result[1];
    if (!root &amp;&amp; !dir) {
        // No dirname whatsoever
        return '.';
    }
    if (dir) {
        // It has a dirname, strip trailing slash
        dir = dir.substr(0, dir.length - 1);
    }
    return root + dir;
}
exports.dirname = dirname;
/** JSDoc */
function basename(path, ext) {
    var f = splitPath(path)[2];
    if (ext &amp;&amp; f.substr(ext.length * -1) === ext) {
        f = f.substr(0, f.length - ext.length);
    }
    return f;
}
exports.basename = basename;

},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/polyfill.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
exports.setPrototypeOf = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties);
/**
 * setPrototypeOf polyfill using __proto__
 */
// eslint-disable-next-line @typescript-eslint/ban-types
function setProtoOf(obj, proto) {
    // @ts-ignore __proto__ does not exist on obj
    obj.__proto__ = proto;
    return obj;
}
/**
 * setPrototypeOf polyfill using mixin
 */
// eslint-disable-next-line @typescript-eslint/ban-types
function mixinProperties(obj, proto) {
    for (var prop in proto) {
        // eslint-disable-next-line no-prototype-builtins
        if (!obj.hasOwnProperty(prop)) {
            // @ts-ignore typescript complains about indexing so we remove
            obj[prop] = proto[prop];
        }
    }
    return obj;
}

},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/promisebuffer.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var error_1 = _dereq_("./error");
var syncpromise_1 = _dereq_("./syncpromise");
/** A simple queue that holds promises. */
var PromiseBuffer = /** @class */ (function () {
    function PromiseBuffer(_limit) {
        this._limit = _limit;
        /** Internal set of queued Promises */
        this._buffer = [];
    }
    /**
     * Says if the buffer is ready to take more requests
     */
    PromiseBuffer.prototype.isReady = function () {
        return this._limit === undefined || this.length() &lt; this._limit;
    };
    /**
     * Add a promise to the queue.
     *
     * @param task Can be any PromiseLike&lt;T&gt;
     * @returns The original promise.
     */
    PromiseBuffer.prototype.add = function (task) {
        var _this = this;
        if (!this.isReady()) {
            return syncpromise_1.SyncPromise.reject(new error_1.SentryError('Not adding Promise due to buffer limit reached.'));
        }
        if (this._buffer.indexOf(task) === -1) {
            this._buffer.push(task);
        }
        task
            .then(function () { return _this.remove(task); })
            .then(null, function () {
            return _this.remove(task).then(null, function () {
                // We have to add this catch here otherwise we have an unhandledPromiseRejection
                // because it's a new Promise chain.
            });
        });
        return task;
    };
    /**
     * Remove a promise to the queue.
     *
     * @param task Can be any PromiseLike&lt;T&gt;
     * @returns Removed promise.
     */
    PromiseBuffer.prototype.remove = function (task) {
        var removedTask = this._buffer.splice(this._buffer.indexOf(task), 1)[0];
        return removedTask;
    };
    /**
     * This function returns the number of unresolved promises in the queue.
     */
    PromiseBuffer.prototype.length = function () {
        return this._buffer.length;
    };
    /**
     * This will drain the whole queue, returns true if queue is empty or drained.
     * If timeout is provided and the queue takes longer to drain, the promise still resolves but with false.
     *
     * @param timeout Number in ms to wait until it resolves with false.
     */
    PromiseBuffer.prototype.drain = function (timeout) {
        var _this = this;
        return new syncpromise_1.SyncPromise(function (resolve) {
            var capturedSetTimeout = setTimeout(function () {
                if (timeout &amp;&amp; timeout &gt; 0) {
                    resolve(false);
                }
            }, timeout);
            syncpromise_1.SyncPromise.all(_this._buffer)
                .then(function () {
                clearTimeout(capturedSetTimeout);
                resolve(true);
            })
                .then(null, function () {
                resolve(true);
            });
        });
    };
    return PromiseBuffer;
}());
exports.PromiseBuffer = PromiseBuffer;

},{"./error":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/error.js","./syncpromise":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/syncpromise.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/stacktrace.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var defaultFunctionName = '&lt;anonymous&gt;';
/**
 * Safely extract function name from itself
 */
function getFunctionName(fn) {
    try {
        if (!fn || typeof fn !== 'function') {
            return defaultFunctionName;
        }
        return fn.name || defaultFunctionName;
    }
    catch (e) {
        // Just accessing custom props in some Selenium environments
        // can cause a "Permission denied" exception (see raven-js#495).
        return defaultFunctionName;
    }
}
exports.getFunctionName = getFunctionName;

},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/string.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var is_1 = _dereq_("./is");
/**
 * Truncates given string to the maximum characters count
 *
 * @param str An object that contains serializable values
 * @param max Maximum number of characters in truncated string (0 = unlimited)
 * @returns string Encoded
 */
function truncate(str, max) {
    if (max === void 0) { max = 0; }
    if (typeof str !== 'string' || max === 0) {
        return str;
    }
    return str.length &lt;= max ? str : str.substr(0, max) + "...";
}
exports.truncate = truncate;
/**
 * This is basically just `trim_line` from
 * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67
 *
 * @param str An object that contains serializable values
 * @param max Maximum number of characters in truncated string
 * @returns string Encoded
 */
function snipLine(line, colno) {
    var newLine = line;
    var ll = newLine.length;
    if (ll &lt;= 150) {
        return newLine;
    }
    if (colno &gt; ll) {
        // eslint-disable-next-line no-param-reassign
        colno = ll;
    }
    var start = Math.max(colno - 60, 0);
    if (start &lt; 5) {
        start = 0;
    }
    var end = Math.min(start + 140, ll);
    if (end &gt; ll - 5) {
        end = ll;
    }
    if (end === ll) {
        start = Math.max(end - 140, 0);
    }
    newLine = newLine.slice(start, end);
    if (start &gt; 0) {
        newLine = "'{snip} " + newLine;
    }
    if (end &lt; ll) {
        newLine += ' {snip}';
    }
    return newLine;
}
exports.snipLine = snipLine;
/**
 * Join values in array
 * @param input array of values to be joined together
 * @param delimiter string to be placed in-between values
 * @returns Joined values
 */
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function safeJoin(input, delimiter) {
    if (!Array.isArray(input)) {
        return '';
    }
    var output = [];
    // eslint-disable-next-line @typescript-eslint/prefer-for-of
    for (var i = 0; i &lt; input.length; i++) {
        var value = input[i];
        try {
            output.push(String(value));
        }
        catch (e) {
            output.push('[value cannot be serialized]');
        }
    }
    return output.join(delimiter);
}
exports.safeJoin = safeJoin;
/**
 * Checks if the value matches a regex or includes the string
 * @param value The string value to be checked against
 * @param pattern Either a regex or a string that must be contained in value
 */
function isMatchingPattern(value, pattern) {
    if (!is_1.isString(value)) {
        return false;
    }
    if (is_1.isRegExp(pattern)) {
        return pattern.test(value);
    }
    if (typeof pattern === 'string') {
        return value.indexOf(pattern) !== -1;
    }
    return false;
}
exports.isMatchingPattern = isMatchingPattern;

},{"./is":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/is.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/supports.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var logger_1 = _dereq_("./logger");
var misc_1 = _dereq_("./misc");
/**
 * Tells whether current environment supports ErrorEvent objects
 * {@link supportsErrorEvent}.
 *
 * @returns Answer to the given question.
 */
function supportsErrorEvent() {
    try {
        new ErrorEvent('');
        return true;
    }
    catch (e) {
        return false;
    }
}
exports.supportsErrorEvent = supportsErrorEvent;
/**
 * Tells whether current environment supports DOMError objects
 * {@link supportsDOMError}.
 *
 * @returns Answer to the given question.
 */
function supportsDOMError() {
    try {
        // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':
        // 1 argument required, but only 0 present.
        // @ts-ignore It really needs 1 argument, not 0.
        new DOMError('');
        return true;
    }
    catch (e) {
        return false;
    }
}
exports.supportsDOMError = supportsDOMError;
/**
 * Tells whether current environment supports DOMException objects
 * {@link supportsDOMException}.
 *
 * @returns Answer to the given question.
 */
function supportsDOMException() {
    try {
        new DOMException('');
        return true;
    }
    catch (e) {
        return false;
    }
}
exports.supportsDOMException = supportsDOMException;
/**
 * Tells whether current environment supports Fetch API
 * {@link supportsFetch}.
 *
 * @returns Answer to the given question.
 */
function supportsFetch() {
    if (!('fetch' in misc_1.getGlobalObject())) {
        return false;
    }
    try {
        new Headers();
        new Request('');
        new Response();
        return true;
    }
    catch (e) {
        return false;
    }
}
exports.supportsFetch = supportsFetch;
/**
 * isNativeFetch checks if the given function is a native implementation of fetch()
 */
// eslint-disable-next-line @typescript-eslint/ban-types
function isNativeFetch(func) {
    return func &amp;&amp; /^function fetch\(\)\s+\{\s+\[native code\]\s+\}$/.test(func.toString());
}
/**
 * Tells whether current environment supports Fetch API natively
 * {@link supportsNativeFetch}.
 *
 * @returns true if `window.fetch` is natively implemented, false otherwise
 */
function supportsNativeFetch() {
    if (!supportsFetch()) {
        return false;
    }
    var global = misc_1.getGlobalObject();
    // Fast path to avoid DOM I/O
    // eslint-disable-next-line @typescript-eslint/unbound-method
    if (isNativeFetch(global.fetch)) {
        return true;
    }
    // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)
    // so create a "pure" iframe to see if that has native fetch
    var result = false;
    var doc = global.document;
    // eslint-disable-next-line deprecation/deprecation
    if (doc &amp;&amp; typeof doc.createElement === "function") {
        try {
            var sandbox = doc.createElement('iframe');
            sandbox.hidden = true;
            doc.head.appendChild(sandbox);
            if (sandbox.contentWindow &amp;&amp; sandbox.contentWindow.fetch) {
                // eslint-disable-next-line @typescript-eslint/unbound-method
                result = isNativeFetch(sandbox.contentWindow.fetch);
            }
            doc.head.removeChild(sandbox);
        }
        catch (err) {
            logger_1.logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);
        }
    }
    return result;
}
exports.supportsNativeFetch = supportsNativeFetch;
/**
 * Tells whether current environment supports ReportingObserver API
 * {@link supportsReportingObserver}.
 *
 * @returns Answer to the given question.
 */
function supportsReportingObserver() {
    return 'ReportingObserver' in misc_1.getGlobalObject();
}
exports.supportsReportingObserver = supportsReportingObserver;
/**
 * Tells whether current environment supports Referrer Policy API
 * {@link supportsReferrerPolicy}.
 *
 * @returns Answer to the given question.
 */
function supportsReferrerPolicy() {
    // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default
    // https://caniuse.com/#feat=referrer-policy
    // It doesn't. And it throw exception instead of ignoring this parameter...
    // REF: https://github.com/getsentry/raven-js/issues/1233
    if (!supportsFetch()) {
        return false;
    }
    try {
        new Request('_', {
            referrerPolicy: 'origin',
        });
        return true;
    }
    catch (e) {
        return false;
    }
}
exports.supportsReferrerPolicy = supportsReferrerPolicy;
/**
 * Tells whether current environment supports History API
 * {@link supportsHistory}.
 *
 * @returns Answer to the given question.
 */
function supportsHistory() {
    // NOTE: in Chrome App environment, touching history.pushState, *even inside
    //       a try/catch block*, will cause Chrome to output an error to console.error
    // borrowed from: https://github.com/angular/angular.js/pull/13945/files
    var global = misc_1.getGlobalObject();
    /* eslint-disable @typescript-eslint/no-unsafe-member-access */
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    var chrome = global.chrome;
    var isChromePackagedApp = chrome &amp;&amp; chrome.app &amp;&amp; chrome.app.runtime;
    /* eslint-enable @typescript-eslint/no-unsafe-member-access */
    var hasHistoryApi = 'history' in global &amp;&amp; !!global.history.pushState &amp;&amp; !!global.history.replaceState;
    return !isChromePackagedApp &amp;&amp; hasHistoryApi;
}
exports.supportsHistory = supportsHistory;

},{"./logger":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/logger.js","./misc":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/misc.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/syncpromise.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
/* eslint-disable @typescript-eslint/explicit-function-return-type */
/* eslint-disable @typescript-eslint/typedef */
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
/* eslint-disable @typescript-eslint/no-explicit-any */
var is_1 = _dereq_("./is");
/** SyncPromise internal states */
var States;
(function (States) {
    /** Pending */
    States["PENDING"] = "PENDING";
    /** Resolved / OK */
    States["RESOLVED"] = "RESOLVED";
    /** Rejected / Error */
    States["REJECTED"] = "REJECTED";
})(States || (States = {}));
/**
 * Thenable class that behaves like a Promise and follows it's interface
 * but is not async internally
 */
var SyncPromise = /** @class */ (function () {
    function SyncPromise(executor) {
        var _this = this;
        this._state = States.PENDING;
        this._handlers = [];
        /** JSDoc */
        this._resolve = function (value) {
            _this._setResult(States.RESOLVED, value);
        };
        /** JSDoc */
        this._reject = function (reason) {
            _this._setResult(States.REJECTED, reason);
        };
        /** JSDoc */
        this._setResult = function (state, value) {
            if (_this._state !== States.PENDING) {
                return;
            }
            if (is_1.isThenable(value)) {
                value.then(_this._resolve, _this._reject);
                return;
            }
            _this._state = state;
            _this._value = value;
            _this._executeHandlers();
        };
        // TODO: FIXME
        /** JSDoc */
        this._attachHandler = function (handler) {
            _this._handlers = _this._handlers.concat(handler);
            _this._executeHandlers();
        };
        /** JSDoc */
        this._executeHandlers = function () {
            if (_this._state === States.PENDING) {
                return;
            }
            var cachedHandlers = _this._handlers.slice();
            _this._handlers = [];
            cachedHandlers.forEach(function (handler) {
                if (handler.done) {
                    return;
                }
                if (_this._state === States.RESOLVED) {
                    if (handler.onfulfilled) {
                        // eslint-disable-next-line @typescript-eslint/no-floating-promises
                        handler.onfulfilled(_this._value);
                    }
                }
                if (_this._state === States.REJECTED) {
                    if (handler.onrejected) {
                        handler.onrejected(_this._value);
                    }
                }
                handler.done = true;
            });
        };
        try {
            executor(this._resolve, this._reject);
        }
        catch (e) {
            this._reject(e);
        }
    }
    /** JSDoc */
    SyncPromise.resolve = function (value) {
        return new SyncPromise(function (resolve) {
            resolve(value);
        });
    };
    /** JSDoc */
    SyncPromise.reject = function (reason) {
        return new SyncPromise(function (_, reject) {
            reject(reason);
        });
    };
    /** JSDoc */
    SyncPromise.all = function (collection) {
        return new SyncPromise(function (resolve, reject) {
            if (!Array.isArray(collection)) {
                reject(new TypeError("Promise.all requires an array as input."));
                return;
            }
            if (collection.length === 0) {
                resolve([]);
                return;
            }
            var counter = collection.length;
            var resolvedCollection = [];
            collection.forEach(function (item, index) {
                SyncPromise.resolve(item)
                    .then(function (value) {
                    resolvedCollection[index] = value;
                    counter -= 1;
                    if (counter !== 0) {
                        return;
                    }
                    resolve(resolvedCollection);
                })
                    .then(null, reject);
            });
        });
    };
    /** JSDoc */
    SyncPromise.prototype.then = function (onfulfilled, onrejected) {
        var _this = this;
        return new SyncPromise(function (resolve, reject) {
            _this._attachHandler({
                done: false,
                onfulfilled: function (result) {
                    if (!onfulfilled) {
                        // TODO: ¯\_(ツ)_/¯
                        // TODO: FIXME
                        resolve(result);
                        return;
                    }
                    try {
                        resolve(onfulfilled(result));
                        return;
                    }
                    catch (e) {
                        reject(e);
                        return;
                    }
                },
                onrejected: function (reason) {
                    if (!onrejected) {
                        reject(reason);
                        return;
                    }
                    try {
                        resolve(onrejected(reason));
                        return;
                    }
                    catch (e) {
                        reject(e);
                        return;
                    }
                },
            });
        });
    };
    /** JSDoc */
    SyncPromise.prototype.catch = function (onrejected) {
        return this.then(function (val) { return val; }, onrejected);
    };
    /** JSDoc */
    SyncPromise.prototype.finally = function (onfinally) {
        var _this = this;
        return new SyncPromise(function (resolve, reject) {
            var val;
            var isRejected;
            return _this.then(function (value) {
                isRejected = false;
                val = value;
                if (onfinally) {
                    onfinally();
                }
            }, function (reason) {
                isRejected = true;
                val = reason;
                if (onfinally) {
                    onfinally();
                }
            }).then(function () {
                if (isRejected) {
                    reject(val);
                    return;
                }
                resolve(val);
            });
        });
    };
    /** JSDoc */
    SyncPromise.prototype.toString = function () {
        return '[object SyncPromise]';
    };
    return SyncPromise;
}());
exports.SyncPromise = SyncPromise;

},{"./is":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/is.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/time.js":[function(_dereq_,module,exports){
Object.defineProperty(exports, "__esModule", { value: true });
var misc_1 = _dereq_("./misc");
var node_1 = _dereq_("./node");
/**
 * A TimestampSource implementation for environments that do not support the Performance Web API natively.
 *
 * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier
 * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It
 * is more obvious to explain "why does my span have negative duration" than "why my spans have zero duration".
 */
var dateTimestampSource = {
    nowSeconds: function () { return Date.now() / 1000; },
};
/**
 * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not
 * support the API.
 *
 * Wrapping the native API works around differences in behavior from different browsers.
 */
function getBrowserPerformance() {
    var performance = misc_1.getGlobalObject().performance;
    if (!performance || !performance.now) {
        return undefined;
    }
    // Replace performance.timeOrigin with our own timeOrigin based on Date.now().
    //
    // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +
    // performance.now() gives a date arbitrarily in the past.
    //
    // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is
    // undefined.
    //
    // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to
    // interact with data coming out of performance entries.
    //
    // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that
    // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes
    // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have
    // observed skews that can be as long as days, weeks or months.
    //
    // See https://github.com/getsentry/sentry-javascript/issues/2590.
    //
    // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload
    // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation
    // transactions of long-lived web pages.
    var timeOrigin = Date.now() - performance.now();
    return {
        now: function () { return performance.now(); },
        timeOrigin: timeOrigin,
    };
}
/**
 * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't
 * implement the API.
 */
function getNodePerformance() {
    try {
        var perfHooks = node_1.dynamicRequire(module, 'perf_hooks');
        return perfHooks.performance;
    }
    catch (_) {
        return undefined;
    }
}
/**
 * The Performance API implementation for the current platform, if available.
 */
var platformPerformance = node_1.isNodeEnv() ? getNodePerformance() : getBrowserPerformance();
var timestampSource = platformPerformance === undefined
    ? dateTimestampSource
    : {
        nowSeconds: function () { return (platformPerformance.timeOrigin + platformPerformance.now()) / 1000; },
    };
/**
 * Returns a timestamp in seconds since the UNIX epoch using the Date API.
 */
exports.dateTimestampInSeconds = dateTimestampSource.nowSeconds.bind(dateTimestampSource);
/**
 * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the
 * availability of the Performance API.
 *
 * See `usingPerformanceAPI` to test whether the Performance API is used.
 *
 * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is
 * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The
 * skew can grow to arbitrary amounts like days, weeks or months.
 * See https://github.com/getsentry/sentry-javascript/issues/2590.
 */
exports.timestampInSeconds = timestampSource.nowSeconds.bind(timestampSource);
// Re-exported with an old name for backwards-compatibility.
exports.timestampWithMs = exports.timestampInSeconds;
/**
 * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.
 */
exports.usingPerformanceAPI = platformPerformance !== undefined;
/**
 * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the
 * performance API is available.
 */
exports.browserPerformanceTimeOrigin = (function () {
    var performance = misc_1.getGlobalObject().performance;
    if (!performance) {
        return undefined;
    }
    if (performance.timeOrigin) {
        return performance.timeOrigin;
    }
    // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin
    // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.
    // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always
    // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the
    // Date API.
    // eslint-disable-next-line deprecation/deprecation
    return (performance.timing &amp;&amp; performance.timing.navigationStart) || Date.now();
})();

},{"./misc":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/misc.js","./node":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/dist/node.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/utils/node_modules/tslib/tslib.js":[function(_dereq_,module,exports){
arguments[4]["/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/node_modules/tslib/tslib.js"][0].apply(exports,arguments)
},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/aes.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./enc-base64"), _dereq_("./md5"), _dereq_("./evpkdf"), _dereq_("./cipher-core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./enc-base64", "./md5", "./evpkdf", "./cipher-core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	(function () {
	    // Shortcuts
	    var C = CryptoJS;
	    var C_lib = C.lib;
	    var BlockCipher = C_lib.BlockCipher;
	    var C_algo = C.algo;

	    // Lookup tables
	    var SBOX = [];
	    var INV_SBOX = [];
	    var SUB_MIX_0 = [];
	    var SUB_MIX_1 = [];
	    var SUB_MIX_2 = [];
	    var SUB_MIX_3 = [];
	    var INV_SUB_MIX_0 = [];
	    var INV_SUB_MIX_1 = [];
	    var INV_SUB_MIX_2 = [];
	    var INV_SUB_MIX_3 = [];

	    // Compute lookup tables
	    (function () {
	        // Compute double table
	        var d = [];
	        for (var i = 0; i &lt; 256; i++) {
	            if (i &lt; 128) {
	                d[i] = i &lt;&lt; 1;
	            } else {
	                d[i] = (i &lt;&lt; 1) ^ 0x11b;
	            }
	        }

	        // Walk GF(2^8)
	        var x = 0;
	        var xi = 0;
	        for (var i = 0; i &lt; 256; i++) {
	            // Compute sbox
	            var sx = xi ^ (xi &lt;&lt; 1) ^ (xi &lt;&lt; 2) ^ (xi &lt;&lt; 3) ^ (xi &lt;&lt; 4);
	            sx = (sx &gt;&gt;&gt; 8) ^ (sx &amp; 0xff) ^ 0x63;
	            SBOX[x] = sx;
	            INV_SBOX[sx] = x;

	            // Compute multiplication
	            var x2 = d[x];
	            var x4 = d[x2];
	            var x8 = d[x4];

	            // Compute sub bytes, mix columns tables
	            var t = (d[sx] * 0x101) ^ (sx * 0x1010100);
	            SUB_MIX_0[x] = (t &lt;&lt; 24) | (t &gt;&gt;&gt; 8);
	            SUB_MIX_1[x] = (t &lt;&lt; 16) | (t &gt;&gt;&gt; 16);
	            SUB_MIX_2[x] = (t &lt;&lt; 8)  | (t &gt;&gt;&gt; 24);
	            SUB_MIX_3[x] = t;

	            // Compute inv sub bytes, inv mix columns tables
	            var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);
	            INV_SUB_MIX_0[sx] = (t &lt;&lt; 24) | (t &gt;&gt;&gt; 8);
	            INV_SUB_MIX_1[sx] = (t &lt;&lt; 16) | (t &gt;&gt;&gt; 16);
	            INV_SUB_MIX_2[sx] = (t &lt;&lt; 8)  | (t &gt;&gt;&gt; 24);
	            INV_SUB_MIX_3[sx] = t;

	            // Compute next counter
	            if (!x) {
	                x = xi = 1;
	            } else {
	                x = x2 ^ d[d[d[x8 ^ x2]]];
	                xi ^= d[d[xi]];
	            }
	        }
	    }());

	    // Precomputed Rcon lookup
	    var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];

	    /**
	     * AES block cipher algorithm.
	     */
	    var AES = C_algo.AES = BlockCipher.extend({
	        _doReset: function () {
	            // Skip reset of nRounds has been set before and key did not change
	            if (this._nRounds &amp;&amp; this._keyPriorReset === this._key) {
	                return;
	            }

	            // Shortcuts
	            var key = this._keyPriorReset = this._key;
	            var keyWords = key.words;
	            var keySize = key.sigBytes / 4;

	            // Compute number of rounds
	            var nRounds = this._nRounds = keySize + 6;

	            // Compute number of key schedule rows
	            var ksRows = (nRounds + 1) * 4;

	            // Compute key schedule
	            var keySchedule = this._keySchedule = [];
	            for (var ksRow = 0; ksRow &lt; ksRows; ksRow++) {
	                if (ksRow &lt; keySize) {
	                    keySchedule[ksRow] = keyWords[ksRow];
	                } else {
	                    var t = keySchedule[ksRow - 1];

	                    if (!(ksRow % keySize)) {
	                        // Rot word
	                        t = (t &lt;&lt; 8) | (t &gt;&gt;&gt; 24);

	                        // Sub word
	                        t = (SBOX[t &gt;&gt;&gt; 24] &lt;&lt; 24) | (SBOX[(t &gt;&gt;&gt; 16) &amp; 0xff] &lt;&lt; 16) | (SBOX[(t &gt;&gt;&gt; 8) &amp; 0xff] &lt;&lt; 8) | SBOX[t &amp; 0xff];

	                        // Mix Rcon
	                        t ^= RCON[(ksRow / keySize) | 0] &lt;&lt; 24;
	                    } else if (keySize &gt; 6 &amp;&amp; ksRow % keySize == 4) {
	                        // Sub word
	                        t = (SBOX[t &gt;&gt;&gt; 24] &lt;&lt; 24) | (SBOX[(t &gt;&gt;&gt; 16) &amp; 0xff] &lt;&lt; 16) | (SBOX[(t &gt;&gt;&gt; 8) &amp; 0xff] &lt;&lt; 8) | SBOX[t &amp; 0xff];
	                    }

	                    keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;
	                }
	            }

	            // Compute inv key schedule
	            var invKeySchedule = this._invKeySchedule = [];
	            for (var invKsRow = 0; invKsRow &lt; ksRows; invKsRow++) {
	                var ksRow = ksRows - invKsRow;

	                if (invKsRow % 4) {
	                    var t = keySchedule[ksRow];
	                } else {
	                    var t = keySchedule[ksRow - 4];
	                }

	                if (invKsRow &lt; 4 || ksRow &lt;= 4) {
	                    invKeySchedule[invKsRow] = t;
	                } else {
	                    invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t &gt;&gt;&gt; 24]] ^ INV_SUB_MIX_1[SBOX[(t &gt;&gt;&gt; 16) &amp; 0xff]] ^
	                                               INV_SUB_MIX_2[SBOX[(t &gt;&gt;&gt; 8) &amp; 0xff]] ^ INV_SUB_MIX_3[SBOX[t &amp; 0xff]];
	                }
	            }
	        },

	        encryptBlock: function (M, offset) {
	            this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);
	        },

	        decryptBlock: function (M, offset) {
	            // Swap 2nd and 4th rows
	            var t = M[offset + 1];
	            M[offset + 1] = M[offset + 3];
	            M[offset + 3] = t;

	            this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);

	            // Inv swap 2nd and 4th rows
	            var t = M[offset + 1];
	            M[offset + 1] = M[offset + 3];
	            M[offset + 3] = t;
	        },

	        _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {
	            // Shortcut
	            var nRounds = this._nRounds;

	            // Get input, add round key
	            var s0 = M[offset]     ^ keySchedule[0];
	            var s1 = M[offset + 1] ^ keySchedule[1];
	            var s2 = M[offset + 2] ^ keySchedule[2];
	            var s3 = M[offset + 3] ^ keySchedule[3];

	            // Key schedule row counter
	            var ksRow = 4;

	            // Rounds
	            for (var round = 1; round &lt; nRounds; round++) {
	                // Shift rows, sub bytes, mix columns, add round key
	                var t0 = SUB_MIX_0[s0 &gt;&gt;&gt; 24] ^ SUB_MIX_1[(s1 &gt;&gt;&gt; 16) &amp; 0xff] ^ SUB_MIX_2[(s2 &gt;&gt;&gt; 8) &amp; 0xff] ^ SUB_MIX_3[s3 &amp; 0xff] ^ keySchedule[ksRow++];
	                var t1 = SUB_MIX_0[s1 &gt;&gt;&gt; 24] ^ SUB_MIX_1[(s2 &gt;&gt;&gt; 16) &amp; 0xff] ^ SUB_MIX_2[(s3 &gt;&gt;&gt; 8) &amp; 0xff] ^ SUB_MIX_3[s0 &amp; 0xff] ^ keySchedule[ksRow++];
	                var t2 = SUB_MIX_0[s2 &gt;&gt;&gt; 24] ^ SUB_MIX_1[(s3 &gt;&gt;&gt; 16) &amp; 0xff] ^ SUB_MIX_2[(s0 &gt;&gt;&gt; 8) &amp; 0xff] ^ SUB_MIX_3[s1 &amp; 0xff] ^ keySchedule[ksRow++];
	                var t3 = SUB_MIX_0[s3 &gt;&gt;&gt; 24] ^ SUB_MIX_1[(s0 &gt;&gt;&gt; 16) &amp; 0xff] ^ SUB_MIX_2[(s1 &gt;&gt;&gt; 8) &amp; 0xff] ^ SUB_MIX_3[s2 &amp; 0xff] ^ keySchedule[ksRow++];

	                // Update state
	                s0 = t0;
	                s1 = t1;
	                s2 = t2;
	                s3 = t3;
	            }

	            // Shift rows, sub bytes, add round key
	            var t0 = ((SBOX[s0 &gt;&gt;&gt; 24] &lt;&lt; 24) | (SBOX[(s1 &gt;&gt;&gt; 16) &amp; 0xff] &lt;&lt; 16) | (SBOX[(s2 &gt;&gt;&gt; 8) &amp; 0xff] &lt;&lt; 8) | SBOX[s3 &amp; 0xff]) ^ keySchedule[ksRow++];
	            var t1 = ((SBOX[s1 &gt;&gt;&gt; 24] &lt;&lt; 24) | (SBOX[(s2 &gt;&gt;&gt; 16) &amp; 0xff] &lt;&lt; 16) | (SBOX[(s3 &gt;&gt;&gt; 8) &amp; 0xff] &lt;&lt; 8) | SBOX[s0 &amp; 0xff]) ^ keySchedule[ksRow++];
	            var t2 = ((SBOX[s2 &gt;&gt;&gt; 24] &lt;&lt; 24) | (SBOX[(s3 &gt;&gt;&gt; 16) &amp; 0xff] &lt;&lt; 16) | (SBOX[(s0 &gt;&gt;&gt; 8) &amp; 0xff] &lt;&lt; 8) | SBOX[s1 &amp; 0xff]) ^ keySchedule[ksRow++];
	            var t3 = ((SBOX[s3 &gt;&gt;&gt; 24] &lt;&lt; 24) | (SBOX[(s0 &gt;&gt;&gt; 16) &amp; 0xff] &lt;&lt; 16) | (SBOX[(s1 &gt;&gt;&gt; 8) &amp; 0xff] &lt;&lt; 8) | SBOX[s2 &amp; 0xff]) ^ keySchedule[ksRow++];

	            // Set output
	            M[offset]     = t0;
	            M[offset + 1] = t1;
	            M[offset + 2] = t2;
	            M[offset + 3] = t3;
	        },

	        keySize: 256/32
	    });

	    /**
	     * Shortcut functions to the cipher's object interface.
	     *
	     * @example
	     *
	     *     var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);
	     *     var plaintext  = CryptoJS.AES.decrypt(ciphertext, key, cfg);
	     */
	    C.AES = BlockCipher._createHelper(AES);
	}());


	return CryptoJS.AES;

}));
},{"./cipher-core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/cipher-core.js","./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js","./enc-base64":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/enc-base64.js","./evpkdf":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/evpkdf.js","./md5":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/md5.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/cipher-core.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./evpkdf"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./evpkdf"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	/**
	 * Cipher core components.
	 */
	CryptoJS.lib.Cipher || (function (undefined) {
	    // Shortcuts
	    var C = CryptoJS;
	    var C_lib = C.lib;
	    var Base = C_lib.Base;
	    var WordArray = C_lib.WordArray;
	    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;
	    var C_enc = C.enc;
	    var Utf8 = C_enc.Utf8;
	    var Base64 = C_enc.Base64;
	    var C_algo = C.algo;
	    var EvpKDF = C_algo.EvpKDF;

	    /**
	     * Abstract base cipher template.
	     *
	     * @property {number} keySize This cipher's key size. Default: 4 (128 bits)
	     * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)
	     * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.
	     * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.
	     */
	    var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({
	        /**
	         * Configuration options.
	         *
	         * @property {WordArray} iv The IV to use for this operation.
	         */
	        cfg: Base.extend(),

	        /**
	         * Creates this cipher in encryption mode.
	         *
	         * @param {WordArray} key The key.
	         * @param {Object} cfg (Optional) The configuration options to use for this operation.
	         *
	         * @return {Cipher} A cipher instance.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });
	         */
	        createEncryptor: function (key, cfg) {
	            return this.create(this._ENC_XFORM_MODE, key, cfg);
	        },

	        /**
	         * Creates this cipher in decryption mode.
	         *
	         * @param {WordArray} key The key.
	         * @param {Object} cfg (Optional) The configuration options to use for this operation.
	         *
	         * @return {Cipher} A cipher instance.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });
	         */
	        createDecryptor: function (key, cfg) {
	            return this.create(this._DEC_XFORM_MODE, key, cfg);
	        },

	        /**
	         * Initializes a newly created cipher.
	         *
	         * @param {number} xformMode Either the encryption or decryption transormation mode constant.
	         * @param {WordArray} key The key.
	         * @param {Object} cfg (Optional) The configuration options to use for this operation.
	         *
	         * @example
	         *
	         *     var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });
	         */
	        init: function (xformMode, key, cfg) {
	            // Apply config defaults
	            this.cfg = this.cfg.extend(cfg);

	            // Store transform mode and key
	            this._xformMode = xformMode;
	            this._key = key;

	            // Set initial values
	            this.reset();
	        },

	        /**
	         * Resets this cipher to its initial state.
	         *
	         * @example
	         *
	         *     cipher.reset();
	         */
	        reset: function () {
	            // Reset data buffer
	            BufferedBlockAlgorithm.reset.call(this);

	            // Perform concrete-cipher logic
	            this._doReset();
	        },

	        /**
	         * Adds data to be encrypted or decrypted.
	         *
	         * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.
	         *
	         * @return {WordArray} The data after processing.
	         *
	         * @example
	         *
	         *     var encrypted = cipher.process('data');
	         *     var encrypted = cipher.process(wordArray);
	         */
	        process: function (dataUpdate) {
	            // Append
	            this._append(dataUpdate);

	            // Process available blocks
	            return this._process();
	        },

	        /**
	         * Finalizes the encryption or decryption process.
	         * Note that the finalize operation is effectively a destructive, read-once operation.
	         *
	         * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.
	         *
	         * @return {WordArray} The data after final processing.
	         *
	         * @example
	         *
	         *     var encrypted = cipher.finalize();
	         *     var encrypted = cipher.finalize('data');
	         *     var encrypted = cipher.finalize(wordArray);
	         */
	        finalize: function (dataUpdate) {
	            // Final data update
	            if (dataUpdate) {
	                this._append(dataUpdate);
	            }

	            // Perform concrete-cipher logic
	            var finalProcessedData = this._doFinalize();

	            return finalProcessedData;
	        },

	        keySize: 128/32,

	        ivSize: 128/32,

	        _ENC_XFORM_MODE: 1,

	        _DEC_XFORM_MODE: 2,

	        /**
	         * Creates shortcut functions to a cipher's object interface.
	         *
	         * @param {Cipher} cipher The cipher to create a helper for.
	         *
	         * @return {Object} An object with encrypt and decrypt shortcut functions.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);
	         */
	        _createHelper: (function () {
	            function selectCipherStrategy(key) {
	                if (typeof key == 'string') {
	                    return PasswordBasedCipher;
	                } else {
	                    return SerializableCipher;
	                }
	            }

	            return function (cipher) {
	                return {
	                    encrypt: function (message, key, cfg) {
	                        return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);
	                    },

	                    decrypt: function (ciphertext, key, cfg) {
	                        return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);
	                    }
	                };
	            };
	        }())
	    });

	    /**
	     * Abstract base stream cipher template.
	     *
	     * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)
	     */
	    var StreamCipher = C_lib.StreamCipher = Cipher.extend({
	        _doFinalize: function () {
	            // Process partial blocks
	            var finalProcessedBlocks = this._process(!!'flush');

	            return finalProcessedBlocks;
	        },

	        blockSize: 1
	    });

	    /**
	     * Mode namespace.
	     */
	    var C_mode = C.mode = {};

	    /**
	     * Abstract base block cipher mode template.
	     */
	    var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({
	        /**
	         * Creates this mode for encryption.
	         *
	         * @param {Cipher} cipher A block cipher instance.
	         * @param {Array} iv The IV words.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);
	         */
	        createEncryptor: function (cipher, iv) {
	            return this.Encryptor.create(cipher, iv);
	        },

	        /**
	         * Creates this mode for decryption.
	         *
	         * @param {Cipher} cipher A block cipher instance.
	         * @param {Array} iv The IV words.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);
	         */
	        createDecryptor: function (cipher, iv) {
	            return this.Decryptor.create(cipher, iv);
	        },

	        /**
	         * Initializes a newly created mode.
	         *
	         * @param {Cipher} cipher A block cipher instance.
	         * @param {Array} iv The IV words.
	         *
	         * @example
	         *
	         *     var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);
	         */
	        init: function (cipher, iv) {
	            this._cipher = cipher;
	            this._iv = iv;
	        }
	    });

	    /**
	     * Cipher Block Chaining mode.
	     */
	    var CBC = C_mode.CBC = (function () {
	        /**
	         * Abstract base CBC mode.
	         */
	        var CBC = BlockCipherMode.extend();

	        /**
	         * CBC encryptor.
	         */
	        CBC.Encryptor = CBC.extend({
	            /**
	             * Processes the data block at offset.
	             *
	             * @param {Array} words The data words to operate on.
	             * @param {number} offset The offset where the block starts.
	             *
	             * @example
	             *
	             *     mode.processBlock(data.words, offset);
	             */
	            processBlock: function (words, offset) {
	                // Shortcuts
	                var cipher = this._cipher;
	                var blockSize = cipher.blockSize;

	                // XOR and encrypt
	                xorBlock.call(this, words, offset, blockSize);
	                cipher.encryptBlock(words, offset);

	                // Remember this block to use with next block
	                this._prevBlock = words.slice(offset, offset + blockSize);
	            }
	        });

	        /**
	         * CBC decryptor.
	         */
	        CBC.Decryptor = CBC.extend({
	            /**
	             * Processes the data block at offset.
	             *
	             * @param {Array} words The data words to operate on.
	             * @param {number} offset The offset where the block starts.
	             *
	             * @example
	             *
	             *     mode.processBlock(data.words, offset);
	             */
	            processBlock: function (words, offset) {
	                // Shortcuts
	                var cipher = this._cipher;
	                var blockSize = cipher.blockSize;

	                // Remember this block to use with next block
	                var thisBlock = words.slice(offset, offset + blockSize);

	                // Decrypt and XOR
	                cipher.decryptBlock(words, offset);
	                xorBlock.call(this, words, offset, blockSize);

	                // This block becomes the previous block
	                this._prevBlock = thisBlock;
	            }
	        });

	        function xorBlock(words, offset, blockSize) {
	            // Shortcut
	            var iv = this._iv;

	            // Choose mixing block
	            if (iv) {
	                var block = iv;

	                // Remove IV for subsequent blocks
	                this._iv = undefined;
	            } else {
	                var block = this._prevBlock;
	            }

	            // XOR blocks
	            for (var i = 0; i &lt; blockSize; i++) {
	                words[offset + i] ^= block[i];
	            }
	        }

	        return CBC;
	    }());

	    /**
	     * Padding namespace.
	     */
	    var C_pad = C.pad = {};

	    /**
	     * PKCS #5/7 padding strategy.
	     */
	    var Pkcs7 = C_pad.Pkcs7 = {
	        /**
	         * Pads data using the algorithm defined in PKCS #5/7.
	         *
	         * @param {WordArray} data The data to pad.
	         * @param {number} blockSize The multiple that the data should be padded to.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     CryptoJS.pad.Pkcs7.pad(wordArray, 4);
	         */
	        pad: function (data, blockSize) {
	            // Shortcut
	            var blockSizeBytes = blockSize * 4;

	            // Count padding bytes
	            var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;

	            // Create padding word
	            var paddingWord = (nPaddingBytes &lt;&lt; 24) | (nPaddingBytes &lt;&lt; 16) | (nPaddingBytes &lt;&lt; 8) | nPaddingBytes;

	            // Create padding
	            var paddingWords = [];
	            for (var i = 0; i &lt; nPaddingBytes; i += 4) {
	                paddingWords.push(paddingWord);
	            }
	            var padding = WordArray.create(paddingWords, nPaddingBytes);

	            // Add padding
	            data.concat(padding);
	        },

	        /**
	         * Unpads data that had been padded using the algorithm defined in PKCS #5/7.
	         *
	         * @param {WordArray} data The data to unpad.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     CryptoJS.pad.Pkcs7.unpad(wordArray);
	         */
	        unpad: function (data) {
	            // Get number of padding bytes from last byte
	            var nPaddingBytes = data.words[(data.sigBytes - 1) &gt;&gt;&gt; 2] &amp; 0xff;

	            // Remove padding
	            data.sigBytes -= nPaddingBytes;
	        }
	    };

	    /**
	     * Abstract base block cipher template.
	     *
	     * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)
	     */
	    var BlockCipher = C_lib.BlockCipher = Cipher.extend({
	        /**
	         * Configuration options.
	         *
	         * @property {Mode} mode The block mode to use. Default: CBC
	         * @property {Padding} padding The padding strategy to use. Default: Pkcs7
	         */
	        cfg: Cipher.cfg.extend({
	            mode: CBC,
	            padding: Pkcs7
	        }),

	        reset: function () {
	            // Reset cipher
	            Cipher.reset.call(this);

	            // Shortcuts
	            var cfg = this.cfg;
	            var iv = cfg.iv;
	            var mode = cfg.mode;

	            // Reset block mode
	            if (this._xformMode == this._ENC_XFORM_MODE) {
	                var modeCreator = mode.createEncryptor;
	            } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {
	                var modeCreator = mode.createDecryptor;
	                // Keep at least one block in the buffer for unpadding
	                this._minBufferSize = 1;
	            }

	            if (this._mode &amp;&amp; this._mode.__creator == modeCreator) {
	                this._mode.init(this, iv &amp;&amp; iv.words);
	            } else {
	                this._mode = modeCreator.call(mode, this, iv &amp;&amp; iv.words);
	                this._mode.__creator = modeCreator;
	            }
	        },

	        _doProcessBlock: function (words, offset) {
	            this._mode.processBlock(words, offset);
	        },

	        _doFinalize: function () {
	            // Shortcut
	            var padding = this.cfg.padding;

	            // Finalize
	            if (this._xformMode == this._ENC_XFORM_MODE) {
	                // Pad data
	                padding.pad(this._data, this.blockSize);

	                // Process final blocks
	                var finalProcessedBlocks = this._process(!!'flush');
	            } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {
	                // Process final blocks
	                var finalProcessedBlocks = this._process(!!'flush');

	                // Unpad data
	                padding.unpad(finalProcessedBlocks);
	            }

	            return finalProcessedBlocks;
	        },

	        blockSize: 128/32
	    });

	    /**
	     * A collection of cipher parameters.
	     *
	     * @property {WordArray} ciphertext The raw ciphertext.
	     * @property {WordArray} key The key to this ciphertext.
	     * @property {WordArray} iv The IV used in the ciphering operation.
	     * @property {WordArray} salt The salt used with a key derivation function.
	     * @property {Cipher} algorithm The cipher algorithm.
	     * @property {Mode} mode The block mode used in the ciphering operation.
	     * @property {Padding} padding The padding scheme used in the ciphering operation.
	     * @property {number} blockSize The block size of the cipher.
	     * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.
	     */
	    var CipherParams = C_lib.CipherParams = Base.extend({
	        /**
	         * Initializes a newly created cipher params object.
	         *
	         * @param {Object} cipherParams An object with any of the possible cipher parameters.
	         *
	         * @example
	         *
	         *     var cipherParams = CryptoJS.lib.CipherParams.create({
	         *         ciphertext: ciphertextWordArray,
	         *         key: keyWordArray,
	         *         iv: ivWordArray,
	         *         salt: saltWordArray,
	         *         algorithm: CryptoJS.algo.AES,
	         *         mode: CryptoJS.mode.CBC,
	         *         padding: CryptoJS.pad.PKCS7,
	         *         blockSize: 4,
	         *         formatter: CryptoJS.format.OpenSSL
	         *     });
	         */
	        init: function (cipherParams) {
	            this.mixIn(cipherParams);
	        },

	        /**
	         * Converts this cipher params object to a string.
	         *
	         * @param {Format} formatter (Optional) The formatting strategy to use.
	         *
	         * @return {string} The stringified cipher params.
	         *
	         * @throws Error If neither the formatter nor the default formatter is set.
	         *
	         * @example
	         *
	         *     var string = cipherParams + '';
	         *     var string = cipherParams.toString();
	         *     var string = cipherParams.toString(CryptoJS.format.OpenSSL);
	         */
	        toString: function (formatter) {
	            return (formatter || this.formatter).stringify(this);
	        }
	    });

	    /**
	     * Format namespace.
	     */
	    var C_format = C.format = {};

	    /**
	     * OpenSSL formatting strategy.
	     */
	    var OpenSSLFormatter = C_format.OpenSSL = {
	        /**
	         * Converts a cipher params object to an OpenSSL-compatible string.
	         *
	         * @param {CipherParams} cipherParams The cipher params object.
	         *
	         * @return {string} The OpenSSL-compatible string.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);
	         */
	        stringify: function (cipherParams) {
	            // Shortcuts
	            var ciphertext = cipherParams.ciphertext;
	            var salt = cipherParams.salt;

	            // Format
	            if (salt) {
	                var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);
	            } else {
	                var wordArray = ciphertext;
	            }

	            return wordArray.toString(Base64);
	        },

	        /**
	         * Converts an OpenSSL-compatible string to a cipher params object.
	         *
	         * @param {string} openSSLStr The OpenSSL-compatible string.
	         *
	         * @return {CipherParams} The cipher params object.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);
	         */
	        parse: function (openSSLStr) {
	            // Parse base64
	            var ciphertext = Base64.parse(openSSLStr);

	            // Shortcut
	            var ciphertextWords = ciphertext.words;

	            // Test for salt
	            if (ciphertextWords[0] == 0x53616c74 &amp;&amp; ciphertextWords[1] == 0x65645f5f) {
	                // Extract salt
	                var salt = WordArray.create(ciphertextWords.slice(2, 4));

	                // Remove salt from ciphertext
	                ciphertextWords.splice(0, 4);
	                ciphertext.sigBytes -= 16;
	            }

	            return CipherParams.create({ ciphertext: ciphertext, salt: salt });
	        }
	    };

	    /**
	     * A cipher wrapper that returns ciphertext as a serializable cipher params object.
	     */
	    var SerializableCipher = C_lib.SerializableCipher = Base.extend({
	        /**
	         * Configuration options.
	         *
	         * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL
	         */
	        cfg: Base.extend({
	            format: OpenSSLFormatter
	        }),

	        /**
	         * Encrypts a message.
	         *
	         * @param {Cipher} cipher The cipher algorithm to use.
	         * @param {WordArray|string} message The message to encrypt.
	         * @param {WordArray} key The key.
	         * @param {Object} cfg (Optional) The configuration options to use for this operation.
	         *
	         * @return {CipherParams} A cipher params object.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);
	         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });
	         *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });
	         */
	        encrypt: function (cipher, message, key, cfg) {
	            // Apply config defaults
	            cfg = this.cfg.extend(cfg);

	            // Encrypt
	            var encryptor = cipher.createEncryptor(key, cfg);
	            var ciphertext = encryptor.finalize(message);

	            // Shortcut
	            var cipherCfg = encryptor.cfg;

	            // Create and return serializable cipher params
	            return CipherParams.create({
	                ciphertext: ciphertext,
	                key: key,
	                iv: cipherCfg.iv,
	                algorithm: cipher,
	                mode: cipherCfg.mode,
	                padding: cipherCfg.padding,
	                blockSize: cipher.blockSize,
	                formatter: cfg.format
	            });
	        },

	        /**
	         * Decrypts serialized ciphertext.
	         *
	         * @param {Cipher} cipher The cipher algorithm to use.
	         * @param {CipherParams|string} ciphertext The ciphertext to decrypt.
	         * @param {WordArray} key The key.
	         * @param {Object} cfg (Optional) The configuration options to use for this operation.
	         *
	         * @return {WordArray} The plaintext.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });
	         *     var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });
	         */
	        decrypt: function (cipher, ciphertext, key, cfg) {
	            // Apply config defaults
	            cfg = this.cfg.extend(cfg);

	            // Convert string to CipherParams
	            ciphertext = this._parse(ciphertext, cfg.format);

	            // Decrypt
	            var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);

	            return plaintext;
	        },

	        /**
	         * Converts serialized ciphertext to CipherParams,
	         * else assumed CipherParams already and returns ciphertext unchanged.
	         *
	         * @param {CipherParams|string} ciphertext The ciphertext.
	         * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.
	         *
	         * @return {CipherParams} The unserialized ciphertext.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);
	         */
	        _parse: function (ciphertext, format) {
	            if (typeof ciphertext == 'string') {
	                return format.parse(ciphertext, this);
	            } else {
	                return ciphertext;
	            }
	        }
	    });

	    /**
	     * Key derivation function namespace.
	     */
	    var C_kdf = C.kdf = {};

	    /**
	     * OpenSSL key derivation function.
	     */
	    var OpenSSLKdf = C_kdf.OpenSSL = {
	        /**
	         * Derives a key and IV from a password.
	         *
	         * @param {string} password The password to derive from.
	         * @param {number} keySize The size in words of the key to generate.
	         * @param {number} ivSize The size in words of the IV to generate.
	         * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.
	         *
	         * @return {CipherParams} A cipher params object with the key, IV, and salt.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);
	         *     var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');
	         */
	        execute: function (password, keySize, ivSize, salt) {
	            // Generate random salt
	            if (!salt) {
	                salt = WordArray.random(64/8);
	            }

	            // Derive key and IV
	            var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);

	            // Separate key and IV
	            var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);
	            key.sigBytes = keySize * 4;

	            // Return params
	            return CipherParams.create({ key: key, iv: iv, salt: salt });
	        }
	    };

	    /**
	     * A serializable cipher wrapper that derives the key from a password,
	     * and returns ciphertext as a serializable cipher params object.
	     */
	    var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({
	        /**
	         * Configuration options.
	         *
	         * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL
	         */
	        cfg: SerializableCipher.cfg.extend({
	            kdf: OpenSSLKdf
	        }),

	        /**
	         * Encrypts a message using a password.
	         *
	         * @param {Cipher} cipher The cipher algorithm to use.
	         * @param {WordArray|string} message The message to encrypt.
	         * @param {string} password The password.
	         * @param {Object} cfg (Optional) The configuration options to use for this operation.
	         *
	         * @return {CipherParams} A cipher params object.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');
	         *     var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });
	         */
	        encrypt: function (cipher, message, password, cfg) {
	            // Apply config defaults
	            cfg = this.cfg.extend(cfg);

	            // Derive key and other params
	            var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);

	            // Add IV to config
	            cfg.iv = derivedParams.iv;

	            // Encrypt
	            var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);

	            // Mix in derived params
	            ciphertext.mixIn(derivedParams);

	            return ciphertext;
	        },

	        /**
	         * Decrypts serialized ciphertext using a password.
	         *
	         * @param {Cipher} cipher The cipher algorithm to use.
	         * @param {CipherParams|string} ciphertext The ciphertext to decrypt.
	         * @param {string} password The password.
	         * @param {Object} cfg (Optional) The configuration options to use for this operation.
	         *
	         * @return {WordArray} The plaintext.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });
	         *     var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });
	         */
	        decrypt: function (cipher, ciphertext, password, cfg) {
	            // Apply config defaults
	            cfg = this.cfg.extend(cfg);

	            // Convert string to CipherParams
	            ciphertext = this._parse(ciphertext, cfg.format);

	            // Derive key and other params
	            var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);

	            // Add IV to config
	            cfg.iv = derivedParams.iv;

	            // Decrypt
	            var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);

	            return plaintext;
	        }
	    });
	}());


}));
},{"./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js","./evpkdf":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/evpkdf.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js":[function(_dereq_,module,exports){
;(function (root, factory) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory();
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define([], factory);
	}
	else {
		// Global (browser)
		root.CryptoJS = factory();
	}
}(this, function () {

	/**
	 * CryptoJS core components.
	 */
	var CryptoJS = CryptoJS || (function (Math, undefined) {
	    /*
	     * Local polyfil of Object.create
	     */
	    var create = Object.create || (function () {
	        function F() {};

	        return function (obj) {
	            var subtype;

	            F.prototype = obj;

	            subtype = new F();

	            F.prototype = null;

	            return subtype;
	        };
	    }())

	    /**
	     * CryptoJS namespace.
	     */
	    var C = {};

	    /**
	     * Library namespace.
	     */
	    var C_lib = C.lib = {};

	    /**
	     * Base object for prototypal inheritance.
	     */
	    var Base = C_lib.Base = (function () {


	        return {
	            /**
	             * Creates a new object that inherits from this object.
	             *
	             * @param {Object} overrides Properties to copy into the new object.
	             *
	             * @return {Object} The new object.
	             *
	             * @static
	             *
	             * @example
	             *
	             *     var MyType = CryptoJS.lib.Base.extend({
	             *         field: 'value',
	             *
	             *         method: function () {
	             *         }
	             *     });
	             */
	            extend: function (overrides) {
	                // Spawn
	                var subtype = create(this);

	                // Augment
	                if (overrides) {
	                    subtype.mixIn(overrides);
	                }

	                // Create default initializer
	                if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {
	                    subtype.init = function () {
	                        subtype.$super.init.apply(this, arguments);
	                    };
	                }

	                // Initializer's prototype is the subtype object
	                subtype.init.prototype = subtype;

	                // Reference supertype
	                subtype.$super = this;

	                return subtype;
	            },

	            /**
	             * Extends this object and runs the init method.
	             * Arguments to create() will be passed to init().
	             *
	             * @return {Object} The new object.
	             *
	             * @static
	             *
	             * @example
	             *
	             *     var instance = MyType.create();
	             */
	            create: function () {
	                var instance = this.extend();
	                instance.init.apply(instance, arguments);

	                return instance;
	            },

	            /**
	             * Initializes a newly created object.
	             * Override this method to add some logic when your objects are created.
	             *
	             * @example
	             *
	             *     var MyType = CryptoJS.lib.Base.extend({
	             *         init: function () {
	             *             // ...
	             *         }
	             *     });
	             */
	            init: function () {
	            },

	            /**
	             * Copies properties into this object.
	             *
	             * @param {Object} properties The properties to mix in.
	             *
	             * @example
	             *
	             *     MyType.mixIn({
	             *         field: 'value'
	             *     });
	             */
	            mixIn: function (properties) {
	                for (var propertyName in properties) {
	                    if (properties.hasOwnProperty(propertyName)) {
	                        this[propertyName] = properties[propertyName];
	                    }
	                }

	                // IE won't copy toString using the loop above
	                if (properties.hasOwnProperty('toString')) {
	                    this.toString = properties.toString;
	                }
	            },

	            /**
	             * Creates a copy of this object.
	             *
	             * @return {Object} The clone.
	             *
	             * @example
	             *
	             *     var clone = instance.clone();
	             */
	            clone: function () {
	                return this.init.prototype.extend(this);
	            }
	        };
	    }());

	    /**
	     * An array of 32-bit words.
	     *
	     * @property {Array} words The array of 32-bit words.
	     * @property {number} sigBytes The number of significant bytes in this word array.
	     */
	    var WordArray = C_lib.WordArray = Base.extend({
	        /**
	         * Initializes a newly created word array.
	         *
	         * @param {Array} words (Optional) An array of 32-bit words.
	         * @param {number} sigBytes (Optional) The number of significant bytes in the words.
	         *
	         * @example
	         *
	         *     var wordArray = CryptoJS.lib.WordArray.create();
	         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);
	         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);
	         */
	        init: function (words, sigBytes) {
	            words = this.words = words || [];

	            if (sigBytes != undefined) {
	                this.sigBytes = sigBytes;
	            } else {
	                this.sigBytes = words.length * 4;
	            }
	        },

	        /**
	         * Converts this word array to a string.
	         *
	         * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex
	         *
	         * @return {string} The stringified word array.
	         *
	         * @example
	         *
	         *     var string = wordArray + '';
	         *     var string = wordArray.toString();
	         *     var string = wordArray.toString(CryptoJS.enc.Utf8);
	         */
	        toString: function (encoder) {
	            return (encoder || Hex).stringify(this);
	        },

	        /**
	         * Concatenates a word array to this word array.
	         *
	         * @param {WordArray} wordArray The word array to append.
	         *
	         * @return {WordArray} This word array.
	         *
	         * @example
	         *
	         *     wordArray1.concat(wordArray2);
	         */
	        concat: function (wordArray) {
	            // Shortcuts
	            var thisWords = this.words;
	            var thatWords = wordArray.words;
	            var thisSigBytes = this.sigBytes;
	            var thatSigBytes = wordArray.sigBytes;

	            // Clamp excess bits
	            this.clamp();

	            // Concat
	            if (thisSigBytes % 4) {
	                // Copy one byte at a time
	                for (var i = 0; i &lt; thatSigBytes; i++) {
	                    var thatByte = (thatWords[i &gt;&gt;&gt; 2] &gt;&gt;&gt; (24 - (i % 4) * 8)) &amp; 0xff;
	                    thisWords[(thisSigBytes + i) &gt;&gt;&gt; 2] |= thatByte &lt;&lt; (24 - ((thisSigBytes + i) % 4) * 8);
	                }
	            } else {
	                // Copy one word at a time
	                for (var i = 0; i &lt; thatSigBytes; i += 4) {
	                    thisWords[(thisSigBytes + i) &gt;&gt;&gt; 2] = thatWords[i &gt;&gt;&gt; 2];
	                }
	            }
	            this.sigBytes += thatSigBytes;

	            // Chainable
	            return this;
	        },

	        /**
	         * Removes insignificant bits.
	         *
	         * @example
	         *
	         *     wordArray.clamp();
	         */
	        clamp: function () {
	            // Shortcuts
	            var words = this.words;
	            var sigBytes = this.sigBytes;

	            // Clamp
	            words[sigBytes &gt;&gt;&gt; 2] &amp;= 0xffffffff &lt;&lt; (32 - (sigBytes % 4) * 8);
	            words.length = Math.ceil(sigBytes / 4);
	        },

	        /**
	         * Creates a copy of this word array.
	         *
	         * @return {WordArray} The clone.
	         *
	         * @example
	         *
	         *     var clone = wordArray.clone();
	         */
	        clone: function () {
	            var clone = Base.clone.call(this);
	            clone.words = this.words.slice(0);

	            return clone;
	        },

	        /**
	         * Creates a word array filled with random bytes.
	         *
	         * @param {number} nBytes The number of random bytes to generate.
	         *
	         * @return {WordArray} The random word array.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var wordArray = CryptoJS.lib.WordArray.random(16);
	         */
	        random: function (nBytes) {
	            var words = [];

	            var r = (function (m_w) {
	                var m_w = m_w;
	                var m_z = 0x3ade68b1;
	                var mask = 0xffffffff;

	                return function () {
	                    m_z = (0x9069 * (m_z &amp; 0xFFFF) + (m_z &gt;&gt; 0x10)) &amp; mask;
	                    m_w = (0x4650 * (m_w &amp; 0xFFFF) + (m_w &gt;&gt; 0x10)) &amp; mask;
	                    var result = ((m_z &lt;&lt; 0x10) + m_w) &amp; mask;
	                    result /= 0x100000000;
	                    result += 0.5;
	                    return result * (Math.random() &gt; .5 ? 1 : -1);
	                }
	            });

	            for (var i = 0, rcache; i &lt; nBytes; i += 4) {
	                var _r = r((rcache || Math.random()) * 0x100000000);

	                rcache = _r() * 0x3ade67b7;
	                words.push((_r() * 0x100000000) | 0);
	            }

	            return new WordArray.init(words, nBytes);
	        }
	    });

	    /**
	     * Encoder namespace.
	     */
	    var C_enc = C.enc = {};

	    /**
	     * Hex encoding strategy.
	     */
	    var Hex = C_enc.Hex = {
	        /**
	         * Converts a word array to a hex string.
	         *
	         * @param {WordArray} wordArray The word array.
	         *
	         * @return {string} The hex string.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var hexString = CryptoJS.enc.Hex.stringify(wordArray);
	         */
	        stringify: function (wordArray) {
	            // Shortcuts
	            var words = wordArray.words;
	            var sigBytes = wordArray.sigBytes;

	            // Convert
	            var hexChars = [];
	            for (var i = 0; i &lt; sigBytes; i++) {
	                var bite = (words[i &gt;&gt;&gt; 2] &gt;&gt;&gt; (24 - (i % 4) * 8)) &amp; 0xff;
	                hexChars.push((bite &gt;&gt;&gt; 4).toString(16));
	                hexChars.push((bite &amp; 0x0f).toString(16));
	            }

	            return hexChars.join('');
	        },

	        /**
	         * Converts a hex string to a word array.
	         *
	         * @param {string} hexStr The hex string.
	         *
	         * @return {WordArray} The word array.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var wordArray = CryptoJS.enc.Hex.parse(hexString);
	         */
	        parse: function (hexStr) {
	            // Shortcut
	            var hexStrLength = hexStr.length;

	            // Convert
	            var words = [];
	            for (var i = 0; i &lt; hexStrLength; i += 2) {
	                words[i &gt;&gt;&gt; 3] |= parseInt(hexStr.substr(i, 2), 16) &lt;&lt; (24 - (i % 8) * 4);
	            }

	            return new WordArray.init(words, hexStrLength / 2);
	        }
	    };

	    /**
	     * Latin1 encoding strategy.
	     */
	    var Latin1 = C_enc.Latin1 = {
	        /**
	         * Converts a word array to a Latin1 string.
	         *
	         * @param {WordArray} wordArray The word array.
	         *
	         * @return {string} The Latin1 string.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);
	         */
	        stringify: function (wordArray) {
	            // Shortcuts
	            var words = wordArray.words;
	            var sigBytes = wordArray.sigBytes;

	            // Convert
	            var latin1Chars = [];
	            for (var i = 0; i &lt; sigBytes; i++) {
	                var bite = (words[i &gt;&gt;&gt; 2] &gt;&gt;&gt; (24 - (i % 4) * 8)) &amp; 0xff;
	                latin1Chars.push(String.fromCharCode(bite));
	            }

	            return latin1Chars.join('');
	        },

	        /**
	         * Converts a Latin1 string to a word array.
	         *
	         * @param {string} latin1Str The Latin1 string.
	         *
	         * @return {WordArray} The word array.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var wordArray = CryptoJS.enc.Latin1.parse(latin1String);
	         */
	        parse: function (latin1Str) {
	            // Shortcut
	            var latin1StrLength = latin1Str.length;

	            // Convert
	            var words = [];
	            for (var i = 0; i &lt; latin1StrLength; i++) {
	                words[i &gt;&gt;&gt; 2] |= (latin1Str.charCodeAt(i) &amp; 0xff) &lt;&lt; (24 - (i % 4) * 8);
	            }

	            return new WordArray.init(words, latin1StrLength);
	        }
	    };

	    /**
	     * UTF-8 encoding strategy.
	     */
	    var Utf8 = C_enc.Utf8 = {
	        /**
	         * Converts a word array to a UTF-8 string.
	         *
	         * @param {WordArray} wordArray The word array.
	         *
	         * @return {string} The UTF-8 string.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);
	         */
	        stringify: function (wordArray) {
	            try {
	                return decodeURIComponent(escape(Latin1.stringify(wordArray)));
	            } catch (e) {
	                throw new Error('Malformed UTF-8 data');
	            }
	        },

	        /**
	         * Converts a UTF-8 string to a word array.
	         *
	         * @param {string} utf8Str The UTF-8 string.
	         *
	         * @return {WordArray} The word array.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var wordArray = CryptoJS.enc.Utf8.parse(utf8String);
	         */
	        parse: function (utf8Str) {
	            return Latin1.parse(unescape(encodeURIComponent(utf8Str)));
	        }
	    };

	    /**
	     * Abstract buffered block algorithm template.
	     *
	     * The property blockSize must be implemented in a concrete subtype.
	     *
	     * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0
	     */
	    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({
	        /**
	         * Resets this block algorithm's data buffer to its initial state.
	         *
	         * @example
	         *
	         *     bufferedBlockAlgorithm.reset();
	         */
	        reset: function () {
	            // Initial values
	            this._data = new WordArray.init();
	            this._nDataBytes = 0;
	        },

	        /**
	         * Adds new data to this block algorithm's buffer.
	         *
	         * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.
	         *
	         * @example
	         *
	         *     bufferedBlockAlgorithm._append('data');
	         *     bufferedBlockAlgorithm._append(wordArray);
	         */
	        _append: function (data) {
	            // Convert string to WordArray, else assume WordArray already
	            if (typeof data == 'string') {
	                data = Utf8.parse(data);
	            }

	            // Append
	            this._data.concat(data);
	            this._nDataBytes += data.sigBytes;
	        },

	        /**
	         * Processes available data blocks.
	         *
	         * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.
	         *
	         * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.
	         *
	         * @return {WordArray} The processed data.
	         *
	         * @example
	         *
	         *     var processedData = bufferedBlockAlgorithm._process();
	         *     var processedData = bufferedBlockAlgorithm._process(!!'flush');
	         */
	        _process: function (doFlush) {
	            // Shortcuts
	            var data = this._data;
	            var dataWords = data.words;
	            var dataSigBytes = data.sigBytes;
	            var blockSize = this.blockSize;
	            var blockSizeBytes = blockSize * 4;

	            // Count blocks ready
	            var nBlocksReady = dataSigBytes / blockSizeBytes;
	            if (doFlush) {
	                // Round up to include partial blocks
	                nBlocksReady = Math.ceil(nBlocksReady);
	            } else {
	                // Round down to include only full blocks,
	                // less the number of blocks that must remain in the buffer
	                nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);
	            }

	            // Count words ready
	            var nWordsReady = nBlocksReady * blockSize;

	            // Count bytes ready
	            var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);

	            // Process blocks
	            if (nWordsReady) {
	                for (var offset = 0; offset &lt; nWordsReady; offset += blockSize) {
	                    // Perform concrete-algorithm logic
	                    this._doProcessBlock(dataWords, offset);
	                }

	                // Remove processed words
	                var processedWords = dataWords.splice(0, nWordsReady);
	                data.sigBytes -= nBytesReady;
	            }

	            // Return processed words
	            return new WordArray.init(processedWords, nBytesReady);
	        },

	        /**
	         * Creates a copy of this object.
	         *
	         * @return {Object} The clone.
	         *
	         * @example
	         *
	         *     var clone = bufferedBlockAlgorithm.clone();
	         */
	        clone: function () {
	            var clone = Base.clone.call(this);
	            clone._data = this._data.clone();

	            return clone;
	        },

	        _minBufferSize: 0
	    });

	    /**
	     * Abstract hasher template.
	     *
	     * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)
	     */
	    var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({
	        /**
	         * Configuration options.
	         */
	        cfg: Base.extend(),

	        /**
	         * Initializes a newly created hasher.
	         *
	         * @param {Object} cfg (Optional) The configuration options to use for this hash computation.
	         *
	         * @example
	         *
	         *     var hasher = CryptoJS.algo.SHA256.create();
	         */
	        init: function (cfg) {
	            // Apply config defaults
	            this.cfg = this.cfg.extend(cfg);

	            // Set initial values
	            this.reset();
	        },

	        /**
	         * Resets this hasher to its initial state.
	         *
	         * @example
	         *
	         *     hasher.reset();
	         */
	        reset: function () {
	            // Reset data buffer
	            BufferedBlockAlgorithm.reset.call(this);

	            // Perform concrete-hasher logic
	            this._doReset();
	        },

	        /**
	         * Updates this hasher with a message.
	         *
	         * @param {WordArray|string} messageUpdate The message to append.
	         *
	         * @return {Hasher} This hasher.
	         *
	         * @example
	         *
	         *     hasher.update('message');
	         *     hasher.update(wordArray);
	         */
	        update: function (messageUpdate) {
	            // Append
	            this._append(messageUpdate);

	            // Update the hash
	            this._process();

	            // Chainable
	            return this;
	        },

	        /**
	         * Finalizes the hash computation.
	         * Note that the finalize operation is effectively a destructive, read-once operation.
	         *
	         * @param {WordArray|string} messageUpdate (Optional) A final message update.
	         *
	         * @return {WordArray} The hash.
	         *
	         * @example
	         *
	         *     var hash = hasher.finalize();
	         *     var hash = hasher.finalize('message');
	         *     var hash = hasher.finalize(wordArray);
	         */
	        finalize: function (messageUpdate) {
	            // Final message update
	            if (messageUpdate) {
	                this._append(messageUpdate);
	            }

	            // Perform concrete-hasher logic
	            var hash = this._doFinalize();

	            return hash;
	        },

	        blockSize: 512/32,

	        /**
	         * Creates a shortcut function to a hasher's object interface.
	         *
	         * @param {Hasher} hasher The hasher to create a helper for.
	         *
	         * @return {Function} The shortcut function.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);
	         */
	        _createHelper: function (hasher) {
	            return function (message, cfg) {
	                return new hasher.init(cfg).finalize(message);
	            };
	        },

	        /**
	         * Creates a shortcut function to the HMAC's object interface.
	         *
	         * @param {Hasher} hasher The hasher to use in this HMAC helper.
	         *
	         * @return {Function} The shortcut function.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);
	         */
	        _createHmacHelper: function (hasher) {
	            return function (message, key) {
	                return new C_algo.HMAC.init(hasher, key).finalize(message);
	            };
	        }
	    });

	    /**
	     * Algorithm namespace.
	     */
	    var C_algo = C.algo = {};

	    return C;
	}(Math));


	return CryptoJS;

}));
},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/enc-base64.js":[function(_dereq_,module,exports){
;(function (root, factory) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	(function () {
	    // Shortcuts
	    var C = CryptoJS;
	    var C_lib = C.lib;
	    var WordArray = C_lib.WordArray;
	    var C_enc = C.enc;

	    /**
	     * Base64 encoding strategy.
	     */
	    var Base64 = C_enc.Base64 = {
	        /**
	         * Converts a word array to a Base64 string.
	         *
	         * @param {WordArray} wordArray The word array.
	         *
	         * @return {string} The Base64 string.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var base64String = CryptoJS.enc.Base64.stringify(wordArray);
	         */
	        stringify: function (wordArray) {
	            // Shortcuts
	            var words = wordArray.words;
	            var sigBytes = wordArray.sigBytes;
	            var map = this._map;

	            // Clamp excess bits
	            wordArray.clamp();

	            // Convert
	            var base64Chars = [];
	            for (var i = 0; i &lt; sigBytes; i += 3) {
	                var byte1 = (words[i &gt;&gt;&gt; 2]       &gt;&gt;&gt; (24 - (i % 4) * 8))       &amp; 0xff;
	                var byte2 = (words[(i + 1) &gt;&gt;&gt; 2] &gt;&gt;&gt; (24 - ((i + 1) % 4) * 8)) &amp; 0xff;
	                var byte3 = (words[(i + 2) &gt;&gt;&gt; 2] &gt;&gt;&gt; (24 - ((i + 2) % 4) * 8)) &amp; 0xff;

	                var triplet = (byte1 &lt;&lt; 16) | (byte2 &lt;&lt; 8) | byte3;

	                for (var j = 0; (j &lt; 4) &amp;&amp; (i + j * 0.75 &lt; sigBytes); j++) {
	                    base64Chars.push(map.charAt((triplet &gt;&gt;&gt; (6 * (3 - j))) &amp; 0x3f));
	                }
	            }

	            // Add padding
	            var paddingChar = map.charAt(64);
	            if (paddingChar) {
	                while (base64Chars.length % 4) {
	                    base64Chars.push(paddingChar);
	                }
	            }

	            return base64Chars.join('');
	        },

	        /**
	         * Converts a Base64 string to a word array.
	         *
	         * @param {string} base64Str The Base64 string.
	         *
	         * @return {WordArray} The word array.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var wordArray = CryptoJS.enc.Base64.parse(base64String);
	         */
	        parse: function (base64Str) {
	            // Shortcuts
	            var base64StrLength = base64Str.length;
	            var map = this._map;
	            var reverseMap = this._reverseMap;

	            if (!reverseMap) {
	                    reverseMap = this._reverseMap = [];
	                    for (var j = 0; j &lt; map.length; j++) {
	                        reverseMap[map.charCodeAt(j)] = j;
	                    }
	            }

	            // Ignore padding
	            var paddingChar = map.charAt(64);
	            if (paddingChar) {
	                var paddingIndex = base64Str.indexOf(paddingChar);
	                if (paddingIndex !== -1) {
	                    base64StrLength = paddingIndex;
	                }
	            }

	            // Convert
	            return parseLoop(base64Str, base64StrLength, reverseMap);

	        },

	        _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
	    };

	    function parseLoop(base64Str, base64StrLength, reverseMap) {
	      var words = [];
	      var nBytes = 0;
	      for (var i = 0; i &lt; base64StrLength; i++) {
	          if (i % 4) {
	              var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] &lt;&lt; ((i % 4) * 2);
	              var bits2 = reverseMap[base64Str.charCodeAt(i)] &gt;&gt;&gt; (6 - (i % 4) * 2);
	              words[nBytes &gt;&gt;&gt; 2] |= (bits1 | bits2) &lt;&lt; (24 - (nBytes % 4) * 8);
	              nBytes++;
	          }
	      }
	      return WordArray.create(words, nBytes);
	    }
	}());


	return CryptoJS.enc.Base64;

}));
},{"./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/enc-utf16.js":[function(_dereq_,module,exports){
;(function (root, factory) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	(function () {
	    // Shortcuts
	    var C = CryptoJS;
	    var C_lib = C.lib;
	    var WordArray = C_lib.WordArray;
	    var C_enc = C.enc;

	    /**
	     * UTF-16 BE encoding strategy.
	     */
	    var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {
	        /**
	         * Converts a word array to a UTF-16 BE string.
	         *
	         * @param {WordArray} wordArray The word array.
	         *
	         * @return {string} The UTF-16 BE string.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);
	         */
	        stringify: function (wordArray) {
	            // Shortcuts
	            var words = wordArray.words;
	            var sigBytes = wordArray.sigBytes;

	            // Convert
	            var utf16Chars = [];
	            for (var i = 0; i &lt; sigBytes; i += 2) {
	                var codePoint = (words[i &gt;&gt;&gt; 2] &gt;&gt;&gt; (16 - (i % 4) * 8)) &amp; 0xffff;
	                utf16Chars.push(String.fromCharCode(codePoint));
	            }

	            return utf16Chars.join('');
	        },

	        /**
	         * Converts a UTF-16 BE string to a word array.
	         *
	         * @param {string} utf16Str The UTF-16 BE string.
	         *
	         * @return {WordArray} The word array.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var wordArray = CryptoJS.enc.Utf16.parse(utf16String);
	         */
	        parse: function (utf16Str) {
	            // Shortcut
	            var utf16StrLength = utf16Str.length;

	            // Convert
	            var words = [];
	            for (var i = 0; i &lt; utf16StrLength; i++) {
	                words[i &gt;&gt;&gt; 1] |= utf16Str.charCodeAt(i) &lt;&lt; (16 - (i % 2) * 16);
	            }

	            return WordArray.create(words, utf16StrLength * 2);
	        }
	    };

	    /**
	     * UTF-16 LE encoding strategy.
	     */
	    C_enc.Utf16LE = {
	        /**
	         * Converts a word array to a UTF-16 LE string.
	         *
	         * @param {WordArray} wordArray The word array.
	         *
	         * @return {string} The UTF-16 LE string.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);
	         */
	        stringify: function (wordArray) {
	            // Shortcuts
	            var words = wordArray.words;
	            var sigBytes = wordArray.sigBytes;

	            // Convert
	            var utf16Chars = [];
	            for (var i = 0; i &lt; sigBytes; i += 2) {
	                var codePoint = swapEndian((words[i &gt;&gt;&gt; 2] &gt;&gt;&gt; (16 - (i % 4) * 8)) &amp; 0xffff);
	                utf16Chars.push(String.fromCharCode(codePoint));
	            }

	            return utf16Chars.join('');
	        },

	        /**
	         * Converts a UTF-16 LE string to a word array.
	         *
	         * @param {string} utf16Str The UTF-16 LE string.
	         *
	         * @return {WordArray} The word array.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);
	         */
	        parse: function (utf16Str) {
	            // Shortcut
	            var utf16StrLength = utf16Str.length;

	            // Convert
	            var words = [];
	            for (var i = 0; i &lt; utf16StrLength; i++) {
	                words[i &gt;&gt;&gt; 1] |= swapEndian(utf16Str.charCodeAt(i) &lt;&lt; (16 - (i % 2) * 16));
	            }

	            return WordArray.create(words, utf16StrLength * 2);
	        }
	    };

	    function swapEndian(word) {
	        return ((word &lt;&lt; 8) &amp; 0xff00ff00) | ((word &gt;&gt;&gt; 8) &amp; 0x00ff00ff);
	    }
	}());


	return CryptoJS.enc.Utf16;

}));
},{"./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/evpkdf.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./sha1"), _dereq_("./hmac"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./sha1", "./hmac"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	(function () {
	    // Shortcuts
	    var C = CryptoJS;
	    var C_lib = C.lib;
	    var Base = C_lib.Base;
	    var WordArray = C_lib.WordArray;
	    var C_algo = C.algo;
	    var MD5 = C_algo.MD5;

	    /**
	     * This key derivation function is meant to conform with EVP_BytesToKey.
	     * www.openssl.org/docs/crypto/EVP_BytesToKey.html
	     */
	    var EvpKDF = C_algo.EvpKDF = Base.extend({
	        /**
	         * Configuration options.
	         *
	         * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)
	         * @property {Hasher} hasher The hash algorithm to use. Default: MD5
	         * @property {number} iterations The number of iterations to perform. Default: 1
	         */
	        cfg: Base.extend({
	            keySize: 128/32,
	            hasher: MD5,
	            iterations: 1
	        }),

	        /**
	         * Initializes a newly created key derivation function.
	         *
	         * @param {Object} cfg (Optional) The configuration options to use for the derivation.
	         *
	         * @example
	         *
	         *     var kdf = CryptoJS.algo.EvpKDF.create();
	         *     var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });
	         *     var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });
	         */
	        init: function (cfg) {
	            this.cfg = this.cfg.extend(cfg);
	        },

	        /**
	         * Derives a key from a password.
	         *
	         * @param {WordArray|string} password The password.
	         * @param {WordArray|string} salt A salt.
	         *
	         * @return {WordArray} The derived key.
	         *
	         * @example
	         *
	         *     var key = kdf.compute(password, salt);
	         */
	        compute: function (password, salt) {
	            // Shortcut
	            var cfg = this.cfg;

	            // Init hasher
	            var hasher = cfg.hasher.create();

	            // Initial values
	            var derivedKey = WordArray.create();

	            // Shortcuts
	            var derivedKeyWords = derivedKey.words;
	            var keySize = cfg.keySize;
	            var iterations = cfg.iterations;

	            // Generate key
	            while (derivedKeyWords.length &lt; keySize) {
	                if (block) {
	                    hasher.update(block);
	                }
	                var block = hasher.update(password).finalize(salt);
	                hasher.reset();

	                // Iterations
	                for (var i = 1; i &lt; iterations; i++) {
	                    block = hasher.finalize(block);
	                    hasher.reset();
	                }

	                derivedKey.concat(block);
	            }
	            derivedKey.sigBytes = keySize * 4;

	            return derivedKey;
	        }
	    });

	    /**
	     * Derives a key from a password.
	     *
	     * @param {WordArray|string} password The password.
	     * @param {WordArray|string} salt A salt.
	     * @param {Object} cfg (Optional) The configuration options to use for this computation.
	     *
	     * @return {WordArray} The derived key.
	     *
	     * @static
	     *
	     * @example
	     *
	     *     var key = CryptoJS.EvpKDF(password, salt);
	     *     var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });
	     *     var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });
	     */
	    C.EvpKDF = function (password, salt, cfg) {
	        return EvpKDF.create(cfg).compute(password, salt);
	    };
	}());


	return CryptoJS.EvpKDF;

}));
},{"./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js","./hmac":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/hmac.js","./sha1":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/sha1.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/format-hex.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./cipher-core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./cipher-core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	(function (undefined) {
	    // Shortcuts
	    var C = CryptoJS;
	    var C_lib = C.lib;
	    var CipherParams = C_lib.CipherParams;
	    var C_enc = C.enc;
	    var Hex = C_enc.Hex;
	    var C_format = C.format;

	    var HexFormatter = C_format.Hex = {
	        /**
	         * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.
	         *
	         * @param {CipherParams} cipherParams The cipher params object.
	         *
	         * @return {string} The hexadecimally encoded string.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var hexString = CryptoJS.format.Hex.stringify(cipherParams);
	         */
	        stringify: function (cipherParams) {
	            return cipherParams.ciphertext.toString(Hex);
	        },

	        /**
	         * Converts a hexadecimally encoded ciphertext string to a cipher params object.
	         *
	         * @param {string} input The hexadecimally encoded string.
	         *
	         * @return {CipherParams} The cipher params object.
	         *
	         * @static
	         *
	         * @example
	         *
	         *     var cipherParams = CryptoJS.format.Hex.parse(hexString);
	         */
	        parse: function (input) {
	            var ciphertext = Hex.parse(input);
	            return CipherParams.create({ ciphertext: ciphertext });
	        }
	    };
	}());


	return CryptoJS.format.Hex;

}));
},{"./cipher-core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/cipher-core.js","./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/hmac.js":[function(_dereq_,module,exports){
;(function (root, factory) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	(function () {
	    // Shortcuts
	    var C = CryptoJS;
	    var C_lib = C.lib;
	    var Base = C_lib.Base;
	    var C_enc = C.enc;
	    var Utf8 = C_enc.Utf8;
	    var C_algo = C.algo;

	    /**
	     * HMAC algorithm.
	     */
	    var HMAC = C_algo.HMAC = Base.extend({
	        /**
	         * Initializes a newly created HMAC.
	         *
	         * @param {Hasher} hasher The hash algorithm to use.
	         * @param {WordArray|string} key The secret key.
	         *
	         * @example
	         *
	         *     var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);
	         */
	        init: function (hasher, key) {
	            // Init hasher
	            hasher = this._hasher = new hasher.init();

	            // Convert string to WordArray, else assume WordArray already
	            if (typeof key == 'string') {
	                key = Utf8.parse(key);
	            }

	            // Shortcuts
	            var hasherBlockSize = hasher.blockSize;
	            var hasherBlockSizeBytes = hasherBlockSize * 4;

	            // Allow arbitrary length keys
	            if (key.sigBytes &gt; hasherBlockSizeBytes) {
	                key = hasher.finalize(key);
	            }

	            // Clamp excess bits
	            key.clamp();

	            // Clone key for inner and outer pads
	            var oKey = this._oKey = key.clone();
	            var iKey = this._iKey = key.clone();

	            // Shortcuts
	            var oKeyWords = oKey.words;
	            var iKeyWords = iKey.words;

	            // XOR keys with pad constants
	            for (var i = 0; i &lt; hasherBlockSize; i++) {
	                oKeyWords[i] ^= 0x5c5c5c5c;
	                iKeyWords[i] ^= 0x36363636;
	            }
	            oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;

	            // Set initial values
	            this.reset();
	        },

	        /**
	         * Resets this HMAC to its initial state.
	         *
	         * @example
	         *
	         *     hmacHasher.reset();
	         */
	        reset: function () {
	            // Shortcut
	            var hasher = this._hasher;

	            // Reset
	            hasher.reset();
	            hasher.update(this._iKey);
	        },

	        /**
	         * Updates this HMAC with a message.
	         *
	         * @param {WordArray|string} messageUpdate The message to append.
	         *
	         * @return {HMAC} This HMAC instance.
	         *
	         * @example
	         *
	         *     hmacHasher.update('message');
	         *     hmacHasher.update(wordArray);
	         */
	        update: function (messageUpdate) {
	            this._hasher.update(messageUpdate);

	            // Chainable
	            return this;
	        },

	        /**
	         * Finalizes the HMAC computation.
	         * Note that the finalize operation is effectively a destructive, read-once operation.
	         *
	         * @param {WordArray|string} messageUpdate (Optional) A final message update.
	         *
	         * @return {WordArray} The HMAC.
	         *
	         * @example
	         *
	         *     var hmac = hmacHasher.finalize();
	         *     var hmac = hmacHasher.finalize('message');
	         *     var hmac = hmacHasher.finalize(wordArray);
	         */
	        finalize: function (messageUpdate) {
	            // Shortcut
	            var hasher = this._hasher;

	            // Compute HMAC
	            var innerHash = hasher.finalize(messageUpdate);
	            hasher.reset();
	            var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));

	            return hmac;
	        }
	    });
	}());


}));
},{"./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/index.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./x64-core"), _dereq_("./lib-typedarrays"), _dereq_("./enc-utf16"), _dereq_("./enc-base64"), _dereq_("./md5"), _dereq_("./sha1"), _dereq_("./sha256"), _dereq_("./sha224"), _dereq_("./sha512"), _dereq_("./sha384"), _dereq_("./sha3"), _dereq_("./ripemd160"), _dereq_("./hmac"), _dereq_("./pbkdf2"), _dereq_("./evpkdf"), _dereq_("./cipher-core"), _dereq_("./mode-cfb"), _dereq_("./mode-ctr"), _dereq_("./mode-ctr-gladman"), _dereq_("./mode-ofb"), _dereq_("./mode-ecb"), _dereq_("./pad-ansix923"), _dereq_("./pad-iso10126"), _dereq_("./pad-iso97971"), _dereq_("./pad-zeropadding"), _dereq_("./pad-nopadding"), _dereq_("./format-hex"), _dereq_("./aes"), _dereq_("./tripledes"), _dereq_("./rc4"), _dereq_("./rabbit"), _dereq_("./rabbit-legacy"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./x64-core", "./lib-typedarrays", "./enc-utf16", "./enc-base64", "./md5", "./sha1", "./sha256", "./sha224", "./sha512", "./sha384", "./sha3", "./ripemd160", "./hmac", "./pbkdf2", "./evpkdf", "./cipher-core", "./mode-cfb", "./mode-ctr", "./mode-ctr-gladman", "./mode-ofb", "./mode-ecb", "./pad-ansix923", "./pad-iso10126", "./pad-iso97971", "./pad-zeropadding", "./pad-nopadding", "./format-hex", "./aes", "./tripledes", "./rc4", "./rabbit", "./rabbit-legacy"], factory);
	}
	else {
		// Global (browser)
		root.CryptoJS = factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	return CryptoJS;

}));
},{"./aes":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/aes.js","./cipher-core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/cipher-core.js","./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js","./enc-base64":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/enc-base64.js","./enc-utf16":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/enc-utf16.js","./evpkdf":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/evpkdf.js","./format-hex":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/format-hex.js","./hmac":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/hmac.js","./lib-typedarrays":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/lib-typedarrays.js","./md5":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/md5.js","./mode-cfb":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/mode-cfb.js","./mode-ctr":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/mode-ctr.js","./mode-ctr-gladman":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/mode-ctr-gladman.js","./mode-ecb":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/mode-ecb.js","./mode-ofb":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/mode-ofb.js","./pad-ansix923":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/pad-ansix923.js","./pad-iso10126":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/pad-iso10126.js","./pad-iso97971":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/pad-iso97971.js","./pad-nopadding":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/pad-nopadding.js","./pad-zeropadding":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/pad-zeropadding.js","./pbkdf2":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/pbkdf2.js","./rabbit":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/rabbit.js","./rabbit-legacy":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/rabbit-legacy.js","./rc4":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/rc4.js","./ripemd160":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/ripemd160.js","./sha1":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/sha1.js","./sha224":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/sha224.js","./sha256":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/sha256.js","./sha3":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/sha3.js","./sha384":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/sha384.js","./sha512":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/sha512.js","./tripledes":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/tripledes.js","./x64-core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/x64-core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/lib-typedarrays.js":[function(_dereq_,module,exports){
;(function (root, factory) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	(function () {
	    // Check if typed arrays are supported
	    if (typeof ArrayBuffer != 'function') {
	        return;
	    }

	    // Shortcuts
	    var C = CryptoJS;
	    var C_lib = C.lib;
	    var WordArray = C_lib.WordArray;

	    // Reference original init
	    var superInit = WordArray.init;

	    // Augment WordArray.init to handle typed arrays
	    var subInit = WordArray.init = function (typedArray) {
	        // Convert buffers to uint8
	        if (typedArray instanceof ArrayBuffer) {
	            typedArray = new Uint8Array(typedArray);
	        }

	        // Convert other array views to uint8
	        if (
	            typedArray instanceof Int8Array ||
	            (typeof Uint8ClampedArray !== "undefined" &amp;&amp; typedArray instanceof Uint8ClampedArray) ||
	            typedArray instanceof Int16Array ||
	            typedArray instanceof Uint16Array ||
	            typedArray instanceof Int32Array ||
	            typedArray instanceof Uint32Array ||
	            typedArray instanceof Float32Array ||
	            typedArray instanceof Float64Array
	        ) {
	            typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);
	        }

	        // Handle Uint8Array
	        if (typedArray instanceof Uint8Array) {
	            // Shortcut
	            var typedArrayByteLength = typedArray.byteLength;

	            // Extract bytes
	            var words = [];
	            for (var i = 0; i &lt; typedArrayByteLength; i++) {
	                words[i &gt;&gt;&gt; 2] |= typedArray[i] &lt;&lt; (24 - (i % 4) * 8);
	            }

	            // Initialize this word array
	            superInit.call(this, words, typedArrayByteLength);
	        } else {
	            // Else call normal init
	            superInit.apply(this, arguments);
	        }
	    };

	    subInit.prototype = WordArray;
	}());


	return CryptoJS.lib.WordArray;

}));
},{"./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/md5.js":[function(_dereq_,module,exports){
;(function (root, factory) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	(function (Math) {
	    // Shortcuts
	    var C = CryptoJS;
	    var C_lib = C.lib;
	    var WordArray = C_lib.WordArray;
	    var Hasher = C_lib.Hasher;
	    var C_algo = C.algo;

	    // Constants table
	    var T = [];

	    // Compute constants
	    (function () {
	        for (var i = 0; i &lt; 64; i++) {
	            T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;
	        }
	    }());

	    /**
	     * MD5 hash algorithm.
	     */
	    var MD5 = C_algo.MD5 = Hasher.extend({
	        _doReset: function () {
	            this._hash = new WordArray.init([
	                0x67452301, 0xefcdab89,
	                0x98badcfe, 0x10325476
	            ]);
	        },

	        _doProcessBlock: function (M, offset) {
	            // Swap endian
	            for (var i = 0; i &lt; 16; i++) {
	                // Shortcuts
	                var offset_i = offset + i;
	                var M_offset_i = M[offset_i];

	                M[offset_i] = (
	                    (((M_offset_i &lt;&lt; 8)  | (M_offset_i &gt;&gt;&gt; 24)) &amp; 0x00ff00ff) |
	                    (((M_offset_i &lt;&lt; 24) | (M_offset_i &gt;&gt;&gt; 8))  &amp; 0xff00ff00)
	                );
	            }

	            // Shortcuts
	            var H = this._hash.words;

	            var M_offset_0  = M[offset + 0];
	            var M_offset_1  = M[offset + 1];
	            var M_offset_2  = M[offset + 2];
	            var M_offset_3  = M[offset + 3];
	            var M_offset_4  = M[offset + 4];
	            var M_offset_5  = M[offset + 5];
	            var M_offset_6  = M[offset + 6];
	            var M_offset_7  = M[offset + 7];
	            var M_offset_8  = M[offset + 8];
	            var M_offset_9  = M[offset + 9];
	            var M_offset_10 = M[offset + 10];
	            var M_offset_11 = M[offset + 11];
	            var M_offset_12 = M[offset + 12];
	            var M_offset_13 = M[offset + 13];
	            var M_offset_14 = M[offset + 14];
	            var M_offset_15 = M[offset + 15];

	            // Working varialbes
	            var a = H[0];
	            var b = H[1];
	            var c = H[2];
	            var d = H[3];

	            // Computation
	            a = FF(a, b, c, d, M_offset_0,  7,  T[0]);
	            d = FF(d, a, b, c, M_offset_1,  12, T[1]);
	            c = FF(c, d, a, b, M_offset_2,  17, T[2]);
	            b = FF(b, c, d, a, M_offset_3,  22, T[3]);
	            a = FF(a, b, c, d, M_offset_4,  7,  T[4]);
	            d = FF(d, a, b, c, M_offset_5,  12, T[5]);
	            c = FF(c, d, a, b, M_offset_6,  17, T[6]);
	            b = FF(b, c, d, a, M_offset_7,  22, T[7]);
	            a = FF(a, b, c, d, M_offset_8,  7,  T[8]);
	            d = FF(d, a, b, c, M_offset_9,  12, T[9]);
	            c = FF(c, d, a, b, M_offset_10, 17, T[10]);
	            b = FF(b, c, d, a, M_offset_11, 22, T[11]);
	            a = FF(a, b, c, d, M_offset_12, 7,  T[12]);
	            d = FF(d, a, b, c, M_offset_13, 12, T[13]);
	            c = FF(c, d, a, b, M_offset_14, 17, T[14]);
	            b = FF(b, c, d, a, M_offset_15, 22, T[15]);

	            a = GG(a, b, c, d, M_offset_1,  5,  T[16]);
	            d = GG(d, a, b, c, M_offset_6,  9,  T[17]);
	            c = GG(c, d, a, b, M_offset_11, 14, T[18]);
	            b = GG(b, c, d, a, M_offset_0,  20, T[19]);
	            a = GG(a, b, c, d, M_offset_5,  5,  T[20]);
	            d = GG(d, a, b, c, M_offset_10, 9,  T[21]);
	            c = GG(c, d, a, b, M_offset_15, 14, T[22]);
	            b = GG(b, c, d, a, M_offset_4,  20, T[23]);
	            a = GG(a, b, c, d, M_offset_9,  5,  T[24]);
	            d = GG(d, a, b, c, M_offset_14, 9,  T[25]);
	            c = GG(c, d, a, b, M_offset_3,  14, T[26]);
	            b = GG(b, c, d, a, M_offset_8,  20, T[27]);
	            a = GG(a, b, c, d, M_offset_13, 5,  T[28]);
	            d = GG(d, a, b, c, M_offset_2,  9,  T[29]);
	            c = GG(c, d, a, b, M_offset_7,  14, T[30]);
	            b = GG(b, c, d, a, M_offset_12, 20, T[31]);

	            a = HH(a, b, c, d, M_offset_5,  4,  T[32]);
	            d = HH(d, a, b, c, M_offset_8,  11, T[33]);
	            c = HH(c, d, a, b, M_offset_11, 16, T[34]);
	            b = HH(b, c, d, a, M_offset_14, 23, T[35]);
	            a = HH(a, b, c, d, M_offset_1,  4,  T[36]);
	            d = HH(d, a, b, c, M_offset_4,  11, T[37]);
	            c = HH(c, d, a, b, M_offset_7,  16, T[38]);
	            b = HH(b, c, d, a, M_offset_10, 23, T[39]);
	            a = HH(a, b, c, d, M_offset_13, 4,  T[40]);
	            d = HH(d, a, b, c, M_offset_0,  11, T[41]);
	            c = HH(c, d, a, b, M_offset_3,  16, T[42]);
	            b = HH(b, c, d, a, M_offset_6,  23, T[43]);
	            a = HH(a, b, c, d, M_offset_9,  4,  T[44]);
	            d = HH(d, a, b, c, M_offset_12, 11, T[45]);
	            c = HH(c, d, a, b, M_offset_15, 16, T[46]);
	            b = HH(b, c, d, a, M_offset_2,  23, T[47]);

	            a = II(a, b, c, d, M_offset_0,  6,  T[48]);
	            d = II(d, a, b, c, M_offset_7,  10, T[49]);
	            c = II(c, d, a, b, M_offset_14, 15, T[50]);
	            b = II(b, c, d, a, M_offset_5,  21, T[51]);
	            a = II(a, b, c, d, M_offset_12, 6,  T[52]);
	            d = II(d, a, b, c, M_offset_3,  10, T[53]);
	            c = II(c, d, a, b, M_offset_10, 15, T[54]);
	            b = II(b, c, d, a, M_offset_1,  21, T[55]);
	            a = II(a, b, c, d, M_offset_8,  6,  T[56]);
	            d = II(d, a, b, c, M_offset_15, 10, T[57]);
	            c = II(c, d, a, b, M_offset_6,  15, T[58]);
	            b = II(b, c, d, a, M_offset_13, 21, T[59]);
	            a = II(a, b, c, d, M_offset_4,  6,  T[60]);
	            d = II(d, a, b, c, M_offset_11, 10, T[61]);
	            c = II(c, d, a, b, M_offset_2,  15, T[62]);
	            b = II(b, c, d, a, M_offset_9,  21, T[63]);

	            // Intermediate hash value
	            H[0] = (H[0] + a) | 0;
	            H[1] = (H[1] + b) | 0;
	            H[2] = (H[2] + c) | 0;
	            H[3] = (H[3] + d) | 0;
	        },

	        _doFinalize: function () {
	            // Shortcuts
	            var data = this._data;
	            var dataWords = data.words;

	            var nBitsTotal = this._nDataBytes * 8;
	            var nBitsLeft = data.sigBytes * 8;

	            // Add padding
	            dataWords[nBitsLeft &gt;&gt;&gt; 5] |= 0x80 &lt;&lt; (24 - nBitsLeft % 32);

	            var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);
	            var nBitsTotalL = nBitsTotal;
	            dataWords[(((nBitsLeft + 64) &gt;&gt;&gt; 9) &lt;&lt; 4) + 15] = (
	                (((nBitsTotalH &lt;&lt; 8)  | (nBitsTotalH &gt;&gt;&gt; 24)) &amp; 0x00ff00ff) |
	                (((nBitsTotalH &lt;&lt; 24) | (nBitsTotalH &gt;&gt;&gt; 8))  &amp; 0xff00ff00)
	            );
	            dataWords[(((nBitsLeft + 64) &gt;&gt;&gt; 9) &lt;&lt; 4) + 14] = (
	                (((nBitsTotalL &lt;&lt; 8)  | (nBitsTotalL &gt;&gt;&gt; 24)) &amp; 0x00ff00ff) |
	                (((nBitsTotalL &lt;&lt; 24) | (nBitsTotalL &gt;&gt;&gt; 8))  &amp; 0xff00ff00)
	            );

	            data.sigBytes = (dataWords.length + 1) * 4;

	            // Hash final blocks
	            this._process();

	            // Shortcuts
	            var hash = this._hash;
	            var H = hash.words;

	            // Swap endian
	            for (var i = 0; i &lt; 4; i++) {
	                // Shortcut
	                var H_i = H[i];

	                H[i] = (((H_i &lt;&lt; 8)  | (H_i &gt;&gt;&gt; 24)) &amp; 0x00ff00ff) |
	                       (((H_i &lt;&lt; 24) | (H_i &gt;&gt;&gt; 8))  &amp; 0xff00ff00);
	            }

	            // Return final computed hash
	            return hash;
	        },

	        clone: function () {
	            var clone = Hasher.clone.call(this);
	            clone._hash = this._hash.clone();

	            return clone;
	        }
	    });

	    function FF(a, b, c, d, x, s, t) {
	        var n = a + ((b &amp; c) | (~b &amp; d)) + x + t;
	        return ((n &lt;&lt; s) | (n &gt;&gt;&gt; (32 - s))) + b;
	    }

	    function GG(a, b, c, d, x, s, t) {
	        var n = a + ((b &amp; d) | (c &amp; ~d)) + x + t;
	        return ((n &lt;&lt; s) | (n &gt;&gt;&gt; (32 - s))) + b;
	    }

	    function HH(a, b, c, d, x, s, t) {
	        var n = a + (b ^ c ^ d) + x + t;
	        return ((n &lt;&lt; s) | (n &gt;&gt;&gt; (32 - s))) + b;
	    }

	    function II(a, b, c, d, x, s, t) {
	        var n = a + (c ^ (b | ~d)) + x + t;
	        return ((n &lt;&lt; s) | (n &gt;&gt;&gt; (32 - s))) + b;
	    }

	    /**
	     * Shortcut function to the hasher's object interface.
	     *
	     * @param {WordArray|string} message The message to hash.
	     *
	     * @return {WordArray} The hash.
	     *
	     * @static
	     *
	     * @example
	     *
	     *     var hash = CryptoJS.MD5('message');
	     *     var hash = CryptoJS.MD5(wordArray);
	     */
	    C.MD5 = Hasher._createHelper(MD5);

	    /**
	     * Shortcut function to the HMAC's object interface.
	     *
	     * @param {WordArray|string} message The message to hash.
	     * @param {WordArray|string} key The secret key.
	     *
	     * @return {WordArray} The HMAC.
	     *
	     * @static
	     *
	     * @example
	     *
	     *     var hmac = CryptoJS.HmacMD5(message, key);
	     */
	    C.HmacMD5 = Hasher._createHmacHelper(MD5);
	}(Math));


	return CryptoJS.MD5;

}));
},{"./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/mode-cfb.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./cipher-core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./cipher-core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	/**
	 * Cipher Feedback block mode.
	 */
	CryptoJS.mode.CFB = (function () {
	    var CFB = CryptoJS.lib.BlockCipherMode.extend();

	    CFB.Encryptor = CFB.extend({
	        processBlock: function (words, offset) {
	            // Shortcuts
	            var cipher = this._cipher;
	            var blockSize = cipher.blockSize;

	            generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);

	            // Remember this block to use with next block
	            this._prevBlock = words.slice(offset, offset + blockSize);
	        }
	    });

	    CFB.Decryptor = CFB.extend({
	        processBlock: function (words, offset) {
	            // Shortcuts
	            var cipher = this._cipher;
	            var blockSize = cipher.blockSize;

	            // Remember this block to use with next block
	            var thisBlock = words.slice(offset, offset + blockSize);

	            generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);

	            // This block becomes the previous block
	            this._prevBlock = thisBlock;
	        }
	    });

	    function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {
	        // Shortcut
	        var iv = this._iv;

	        // Generate keystream
	        if (iv) {
	            var keystream = iv.slice(0);

	            // Remove IV for subsequent blocks
	            this._iv = undefined;
	        } else {
	            var keystream = this._prevBlock;
	        }
	        cipher.encryptBlock(keystream, 0);

	        // Encrypt
	        for (var i = 0; i &lt; blockSize; i++) {
	            words[offset + i] ^= keystream[i];
	        }
	    }

	    return CFB;
	}());


	return CryptoJS.mode.CFB;

}));
},{"./cipher-core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/cipher-core.js","./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/mode-ctr-gladman.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./cipher-core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./cipher-core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	/** @preserve
	 * Counter block mode compatible with  Dr Brian Gladman fileenc.c
	 * derived from CryptoJS.mode.CTR
	 * Jan Hruby jhruby.web@gmail.com
	 */
	CryptoJS.mode.CTRGladman = (function () {
	    var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();

		function incWord(word)
		{
			if (((word &gt;&gt; 24) &amp; 0xff) === 0xff) { //overflow
			var b1 = (word &gt;&gt; 16)&amp;0xff;
			var b2 = (word &gt;&gt; 8)&amp;0xff;
			var b3 = word &amp; 0xff;

			if (b1 === 0xff) // overflow b1
			{
			b1 = 0;
			if (b2 === 0xff)
			{
				b2 = 0;
				if (b3 === 0xff)
				{
					b3 = 0;
				}
				else
				{
					++b3;
				}
			}
			else
			{
				++b2;
			}
			}
			else
			{
			++b1;
			}

			word = 0;
			word += (b1 &lt;&lt; 16);
			word += (b2 &lt;&lt; 8);
			word += b3;
			}
			else
			{
			word += (0x01 &lt;&lt; 24);
			}
			return word;
		}

		function incCounter(counter)
		{
			if ((counter[0] = incWord(counter[0])) === 0)
			{
				// encr_data in fileenc.c from  Dr Brian Gladman's counts only with DWORD j &lt; 8
				counter[1] = incWord(counter[1]);
			}
			return counter;
		}

	    var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({
	        processBlock: function (words, offset) {
	            // Shortcuts
	            var cipher = this._cipher
	            var blockSize = cipher.blockSize;
	            var iv = this._iv;
	            var counter = this._counter;

	            // Generate keystream
	            if (iv) {
	                counter = this._counter = iv.slice(0);

	                // Remove IV for subsequent blocks
	                this._iv = undefined;
	            }

				incCounter(counter);

				var keystream = counter.slice(0);
	            cipher.encryptBlock(keystream, 0);

	            // Encrypt
	            for (var i = 0; i &lt; blockSize; i++) {
	                words[offset + i] ^= keystream[i];
	            }
	        }
	    });

	    CTRGladman.Decryptor = Encryptor;

	    return CTRGladman;
	}());




	return CryptoJS.mode.CTRGladman;

}));
},{"./cipher-core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/cipher-core.js","./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/mode-ctr.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./cipher-core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./cipher-core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	/**
	 * Counter block mode.
	 */
	CryptoJS.mode.CTR = (function () {
	    var CTR = CryptoJS.lib.BlockCipherMode.extend();

	    var Encryptor = CTR.Encryptor = CTR.extend({
	        processBlock: function (words, offset) {
	            // Shortcuts
	            var cipher = this._cipher
	            var blockSize = cipher.blockSize;
	            var iv = this._iv;
	            var counter = this._counter;

	            // Generate keystream
	            if (iv) {
	                counter = this._counter = iv.slice(0);

	                // Remove IV for subsequent blocks
	                this._iv = undefined;
	            }
	            var keystream = counter.slice(0);
	            cipher.encryptBlock(keystream, 0);

	            // Increment counter
	            counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0

	            // Encrypt
	            for (var i = 0; i &lt; blockSize; i++) {
	                words[offset + i] ^= keystream[i];
	            }
	        }
	    });

	    CTR.Decryptor = Encryptor;

	    return CTR;
	}());


	return CryptoJS.mode.CTR;

}));
},{"./cipher-core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/cipher-core.js","./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/mode-ecb.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./cipher-core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./cipher-core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	/**
	 * Electronic Codebook block mode.
	 */
	CryptoJS.mode.ECB = (function () {
	    var ECB = CryptoJS.lib.BlockCipherMode.extend();

	    ECB.Encryptor = ECB.extend({
	        processBlock: function (words, offset) {
	            this._cipher.encryptBlock(words, offset);
	        }
	    });

	    ECB.Decryptor = ECB.extend({
	        processBlock: function (words, offset) {
	            this._cipher.decryptBlock(words, offset);
	        }
	    });

	    return ECB;
	}());


	return CryptoJS.mode.ECB;

}));
},{"./cipher-core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/cipher-core.js","./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/mode-ofb.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./cipher-core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./cipher-core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	/**
	 * Output Feedback block mode.
	 */
	CryptoJS.mode.OFB = (function () {
	    var OFB = CryptoJS.lib.BlockCipherMode.extend();

	    var Encryptor = OFB.Encryptor = OFB.extend({
	        processBlock: function (words, offset) {
	            // Shortcuts
	            var cipher = this._cipher
	            var blockSize = cipher.blockSize;
	            var iv = this._iv;
	            var keystream = this._keystream;

	            // Generate keystream
	            if (iv) {
	                keystream = this._keystream = iv.slice(0);

	                // Remove IV for subsequent blocks
	                this._iv = undefined;
	            }
	            cipher.encryptBlock(keystream, 0);

	            // Encrypt
	            for (var i = 0; i &lt; blockSize; i++) {
	                words[offset + i] ^= keystream[i];
	            }
	        }
	    });

	    OFB.Decryptor = Encryptor;

	    return OFB;
	}());


	return CryptoJS.mode.OFB;

}));
},{"./cipher-core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/cipher-core.js","./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/pad-ansix923.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./cipher-core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./cipher-core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	/**
	 * ANSI X.923 padding strategy.
	 */
	CryptoJS.pad.AnsiX923 = {
	    pad: function (data, blockSize) {
	        // Shortcuts
	        var dataSigBytes = data.sigBytes;
	        var blockSizeBytes = blockSize * 4;

	        // Count padding bytes
	        var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;

	        // Compute last byte position
	        var lastBytePos = dataSigBytes + nPaddingBytes - 1;

	        // Pad
	        data.clamp();
	        data.words[lastBytePos &gt;&gt;&gt; 2] |= nPaddingBytes &lt;&lt; (24 - (lastBytePos % 4) * 8);
	        data.sigBytes += nPaddingBytes;
	    },

	    unpad: function (data) {
	        // Get number of padding bytes from last byte
	        var nPaddingBytes = data.words[(data.sigBytes - 1) &gt;&gt;&gt; 2] &amp; 0xff;

	        // Remove padding
	        data.sigBytes -= nPaddingBytes;
	    }
	};


	return CryptoJS.pad.Ansix923;

}));
},{"./cipher-core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/cipher-core.js","./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/pad-iso10126.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./cipher-core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./cipher-core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	/**
	 * ISO 10126 padding strategy.
	 */
	CryptoJS.pad.Iso10126 = {
	    pad: function (data, blockSize) {
	        // Shortcut
	        var blockSizeBytes = blockSize * 4;

	        // Count padding bytes
	        var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;

	        // Pad
	        data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).
	             concat(CryptoJS.lib.WordArray.create([nPaddingBytes &lt;&lt; 24], 1));
	    },

	    unpad: function (data) {
	        // Get number of padding bytes from last byte
	        var nPaddingBytes = data.words[(data.sigBytes - 1) &gt;&gt;&gt; 2] &amp; 0xff;

	        // Remove padding
	        data.sigBytes -= nPaddingBytes;
	    }
	};


	return CryptoJS.pad.Iso10126;

}));
},{"./cipher-core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/cipher-core.js","./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/pad-iso97971.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./cipher-core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./cipher-core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	/**
	 * ISO/IEC 9797-1 Padding Method 2.
	 */
	CryptoJS.pad.Iso97971 = {
	    pad: function (data, blockSize) {
	        // Add 0x80 byte
	        data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));

	        // Zero pad the rest
	        CryptoJS.pad.ZeroPadding.pad(data, blockSize);
	    },

	    unpad: function (data) {
	        // Remove zero padding
	        CryptoJS.pad.ZeroPadding.unpad(data);

	        // Remove one more byte -- the 0x80 byte
	        data.sigBytes--;
	    }
	};


	return CryptoJS.pad.Iso97971;

}));
},{"./cipher-core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/cipher-core.js","./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/pad-nopadding.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./cipher-core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./cipher-core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	/**
	 * A noop padding strategy.
	 */
	CryptoJS.pad.NoPadding = {
	    pad: function () {
	    },

	    unpad: function () {
	    }
	};


	return CryptoJS.pad.NoPadding;

}));
},{"./cipher-core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/cipher-core.js","./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/pad-zeropadding.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./cipher-core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./cipher-core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	/**
	 * Zero padding strategy.
	 */
	CryptoJS.pad.ZeroPadding = {
	    pad: function (data, blockSize) {
	        // Shortcut
	        var blockSizeBytes = blockSize * 4;

	        // Pad
	        data.clamp();
	        data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);
	    },

	    unpad: function (data) {
	        // Shortcut
	        var dataWords = data.words;

	        // Unpad
	        var i = data.sigBytes - 1;
	        while (!((dataWords[i &gt;&gt;&gt; 2] &gt;&gt;&gt; (24 - (i % 4) * 8)) &amp; 0xff)) {
	            i--;
	        }
	        data.sigBytes = i + 1;
	    }
	};


	return CryptoJS.pad.ZeroPadding;

}));
},{"./cipher-core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/cipher-core.js","./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/pbkdf2.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./sha1"), _dereq_("./hmac"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./sha1", "./hmac"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	(function () {
	    // Shortcuts
	    var C = CryptoJS;
	    var C_lib = C.lib;
	    var Base = C_lib.Base;
	    var WordArray = C_lib.WordArray;
	    var C_algo = C.algo;
	    var SHA1 = C_algo.SHA1;
	    var HMAC = C_algo.HMAC;

	    /**
	     * Password-Based Key Derivation Function 2 algorithm.
	     */
	    var PBKDF2 = C_algo.PBKDF2 = Base.extend({
	        /**
	         * Configuration options.
	         *
	         * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)
	         * @property {Hasher} hasher The hasher to use. Default: SHA1
	         * @property {number} iterations The number of iterations to perform. Default: 1
	         */
	        cfg: Base.extend({
	            keySize: 128/32,
	            hasher: SHA1,
	            iterations: 1
	        }),

	        /**
	         * Initializes a newly created key derivation function.
	         *
	         * @param {Object} cfg (Optional) The configuration options to use for the derivation.
	         *
	         * @example
	         *
	         *     var kdf = CryptoJS.algo.PBKDF2.create();
	         *     var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });
	         *     var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });
	         */
	        init: function (cfg) {
	            this.cfg = this.cfg.extend(cfg);
	        },

	        /**
	         * Computes the Password-Based Key Derivation Function 2.
	         *
	         * @param {WordArray|string} password The password.
	         * @param {WordArray|string} salt A salt.
	         *
	         * @return {WordArray} The derived key.
	         *
	         * @example
	         *
	         *     var key = kdf.compute(password, salt);
	         */
	        compute: function (password, salt) {
	            // Shortcut
	            var cfg = this.cfg;

	            // Init HMAC
	            var hmac = HMAC.create(cfg.hasher, password);

	            // Initial values
	            var derivedKey = WordArray.create();
	            var blockIndex = WordArray.create([0x00000001]);

	            // Shortcuts
	            var derivedKeyWords = derivedKey.words;
	            var blockIndexWords = blockIndex.words;
	            var keySize = cfg.keySize;
	            var iterations = cfg.iterations;

	            // Generate key
	            while (derivedKeyWords.length &lt; keySize) {
	                var block = hmac.update(salt).finalize(blockIndex);
	                hmac.reset();

	                // Shortcuts
	                var blockWords = block.words;
	                var blockWordsLength = blockWords.length;

	                // Iterations
	                var intermediate = block;
	                for (var i = 1; i &lt; iterations; i++) {
	                    intermediate = hmac.finalize(intermediate);
	                    hmac.reset();

	                    // Shortcut
	                    var intermediateWords = intermediate.words;

	                    // XOR intermediate with block
	                    for (var j = 0; j &lt; blockWordsLength; j++) {
	                        blockWords[j] ^= intermediateWords[j];
	                    }
	                }

	                derivedKey.concat(block);
	                blockIndexWords[0]++;
	            }
	            derivedKey.sigBytes = keySize * 4;

	            return derivedKey;
	        }
	    });

	    /**
	     * Computes the Password-Based Key Derivation Function 2.
	     *
	     * @param {WordArray|string} password The password.
	     * @param {WordArray|string} salt A salt.
	     * @param {Object} cfg (Optional) The configuration options to use for this computation.
	     *
	     * @return {WordArray} The derived key.
	     *
	     * @static
	     *
	     * @example
	     *
	     *     var key = CryptoJS.PBKDF2(password, salt);
	     *     var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });
	     *     var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });
	     */
	    C.PBKDF2 = function (password, salt, cfg) {
	        return PBKDF2.create(cfg).compute(password, salt);
	    };
	}());


	return CryptoJS.PBKDF2;

}));
},{"./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js","./hmac":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/hmac.js","./sha1":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/sha1.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/rabbit-legacy.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./enc-base64"), _dereq_("./md5"), _dereq_("./evpkdf"), _dereq_("./cipher-core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./enc-base64", "./md5", "./evpkdf", "./cipher-core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	(function () {
	    // Shortcuts
	    var C = CryptoJS;
	    var C_lib = C.lib;
	    var StreamCipher = C_lib.StreamCipher;
	    var C_algo = C.algo;

	    // Reusable objects
	    var S  = [];
	    var C_ = [];
	    var G  = [];

	    /**
	     * Rabbit stream cipher algorithm.
	     *
	     * This is a legacy version that neglected to convert the key to little-endian.
	     * This error doesn't affect the cipher's security,
	     * but it does affect its compatibility with other implementations.
	     */
	    var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({
	        _doReset: function () {
	            // Shortcuts
	            var K = this._key.words;
	            var iv = this.cfg.iv;

	            // Generate initial state values
	            var X = this._X = [
	                K[0], (K[3] &lt;&lt; 16) | (K[2] &gt;&gt;&gt; 16),
	                K[1], (K[0] &lt;&lt; 16) | (K[3] &gt;&gt;&gt; 16),
	                K[2], (K[1] &lt;&lt; 16) | (K[0] &gt;&gt;&gt; 16),
	                K[3], (K[2] &lt;&lt; 16) | (K[1] &gt;&gt;&gt; 16)
	            ];

	            // Generate initial counter values
	            var C = this._C = [
	                (K[2] &lt;&lt; 16) | (K[2] &gt;&gt;&gt; 16), (K[0] &amp; 0xffff0000) | (K[1] &amp; 0x0000ffff),
	                (K[3] &lt;&lt; 16) | (K[3] &gt;&gt;&gt; 16), (K[1] &amp; 0xffff0000) | (K[2] &amp; 0x0000ffff),
	                (K[0] &lt;&lt; 16) | (K[0] &gt;&gt;&gt; 16), (K[2] &amp; 0xffff0000) | (K[3] &amp; 0x0000ffff),
	                (K[1] &lt;&lt; 16) | (K[1] &gt;&gt;&gt; 16), (K[3] &amp; 0xffff0000) | (K[0] &amp; 0x0000ffff)
	            ];

	            // Carry bit
	            this._b = 0;

	            // Iterate the system four times
	            for (var i = 0; i &lt; 4; i++) {
	                nextState.call(this);
	            }

	            // Modify the counters
	            for (var i = 0; i &lt; 8; i++) {
	                C[i] ^= X[(i + 4) &amp; 7];
	            }

	            // IV setup
	            if (iv) {
	                // Shortcuts
	                var IV = iv.words;
	                var IV_0 = IV[0];
	                var IV_1 = IV[1];

	                // Generate four subvectors
	                var i0 = (((IV_0 &lt;&lt; 8) | (IV_0 &gt;&gt;&gt; 24)) &amp; 0x00ff00ff) | (((IV_0 &lt;&lt; 24) | (IV_0 &gt;&gt;&gt; 8)) &amp; 0xff00ff00);
	                var i2 = (((IV_1 &lt;&lt; 8) | (IV_1 &gt;&gt;&gt; 24)) &amp; 0x00ff00ff) | (((IV_1 &lt;&lt; 24) | (IV_1 &gt;&gt;&gt; 8)) &amp; 0xff00ff00);
	                var i1 = (i0 &gt;&gt;&gt; 16) | (i2 &amp; 0xffff0000);
	                var i3 = (i2 &lt;&lt; 16)  | (i0 &amp; 0x0000ffff);

	                // Modify counter values
	                C[0] ^= i0;
	                C[1] ^= i1;
	                C[2] ^= i2;
	                C[3] ^= i3;
	                C[4] ^= i0;
	                C[5] ^= i1;
	                C[6] ^= i2;
	                C[7] ^= i3;

	                // Iterate the system four times
	                for (var i = 0; i &lt; 4; i++) {
	                    nextState.call(this);
	                }
	            }
	        },

	        _doProcessBlock: function (M, offset) {
	            // Shortcut
	            var X = this._X;

	            // Iterate the system
	            nextState.call(this);

	            // Generate four keystream words
	            S[0] = X[0] ^ (X[5] &gt;&gt;&gt; 16) ^ (X[3] &lt;&lt; 16);
	            S[1] = X[2] ^ (X[7] &gt;&gt;&gt; 16) ^ (X[5] &lt;&lt; 16);
	            S[2] = X[4] ^ (X[1] &gt;&gt;&gt; 16) ^ (X[7] &lt;&lt; 16);
	            S[3] = X[6] ^ (X[3] &gt;&gt;&gt; 16) ^ (X[1] &lt;&lt; 16);

	            for (var i = 0; i &lt; 4; i++) {
	                // Swap endian
	                S[i] = (((S[i] &lt;&lt; 8)  | (S[i] &gt;&gt;&gt; 24)) &amp; 0x00ff00ff) |
	                       (((S[i] &lt;&lt; 24) | (S[i] &gt;&gt;&gt; 8))  &amp; 0xff00ff00);

	                // Encrypt
	                M[offset + i] ^= S[i];
	            }
	        },

	        blockSize: 128/32,

	        ivSize: 64/32
	    });

	    function nextState() {
	        // Shortcuts
	        var X = this._X;
	        var C = this._C;

	        // Save old counter values
	        for (var i = 0; i &lt; 8; i++) {
	            C_[i] = C[i];
	        }

	        // Calculate new counter values
	        C[0] = (C[0] + 0x4d34d34d + this._b) | 0;
	        C[1] = (C[1] + 0xd34d34d3 + ((C[0] &gt;&gt;&gt; 0) &lt; (C_[0] &gt;&gt;&gt; 0) ? 1 : 0)) | 0;
	        C[2] = (C[2] + 0x34d34d34 + ((C[1] &gt;&gt;&gt; 0) &lt; (C_[1] &gt;&gt;&gt; 0) ? 1 : 0)) | 0;
	        C[3] = (C[3] + 0x4d34d34d + ((C[2] &gt;&gt;&gt; 0) &lt; (C_[2] &gt;&gt;&gt; 0) ? 1 : 0)) | 0;
	        C[4] = (C[4] + 0xd34d34d3 + ((C[3] &gt;&gt;&gt; 0) &lt; (C_[3] &gt;&gt;&gt; 0) ? 1 : 0)) | 0;
	        C[5] = (C[5] + 0x34d34d34 + ((C[4] &gt;&gt;&gt; 0) &lt; (C_[4] &gt;&gt;&gt; 0) ? 1 : 0)) | 0;
	        C[6] = (C[6] + 0x4d34d34d + ((C[5] &gt;&gt;&gt; 0) &lt; (C_[5] &gt;&gt;&gt; 0) ? 1 : 0)) | 0;
	        C[7] = (C[7] + 0xd34d34d3 + ((C[6] &gt;&gt;&gt; 0) &lt; (C_[6] &gt;&gt;&gt; 0) ? 1 : 0)) | 0;
	        this._b = (C[7] &gt;&gt;&gt; 0) &lt; (C_[7] &gt;&gt;&gt; 0) ? 1 : 0;

	        // Calculate the g-values
	        for (var i = 0; i &lt; 8; i++) {
	            var gx = X[i] + C[i];

	            // Construct high and low argument for squaring
	            var ga = gx &amp; 0xffff;
	            var gb = gx &gt;&gt;&gt; 16;

	            // Calculate high and low result of squaring
	            var gh = ((((ga * ga) &gt;&gt;&gt; 17) + ga * gb) &gt;&gt;&gt; 15) + gb * gb;
	            var gl = (((gx &amp; 0xffff0000) * gx) | 0) + (((gx &amp; 0x0000ffff) * gx) | 0);

	            // High XOR low
	            G[i] = gh ^ gl;
	        }

	        // Calculate new state values
	        X[0] = (G[0] + ((G[7] &lt;&lt; 16) | (G[7] &gt;&gt;&gt; 16)) + ((G[6] &lt;&lt; 16) | (G[6] &gt;&gt;&gt; 16))) | 0;
	        X[1] = (G[1] + ((G[0] &lt;&lt; 8)  | (G[0] &gt;&gt;&gt; 24)) + G[7]) | 0;
	        X[2] = (G[2] + ((G[1] &lt;&lt; 16) | (G[1] &gt;&gt;&gt; 16)) + ((G[0] &lt;&lt; 16) | (G[0] &gt;&gt;&gt; 16))) | 0;
	        X[3] = (G[3] + ((G[2] &lt;&lt; 8)  | (G[2] &gt;&gt;&gt; 24)) + G[1]) | 0;
	        X[4] = (G[4] + ((G[3] &lt;&lt; 16) | (G[3] &gt;&gt;&gt; 16)) + ((G[2] &lt;&lt; 16) | (G[2] &gt;&gt;&gt; 16))) | 0;
	        X[5] = (G[5] + ((G[4] &lt;&lt; 8)  | (G[4] &gt;&gt;&gt; 24)) + G[3]) | 0;
	        X[6] = (G[6] + ((G[5] &lt;&lt; 16) | (G[5] &gt;&gt;&gt; 16)) + ((G[4] &lt;&lt; 16) | (G[4] &gt;&gt;&gt; 16))) | 0;
	        X[7] = (G[7] + ((G[6] &lt;&lt; 8)  | (G[6] &gt;&gt;&gt; 24)) + G[5]) | 0;
	    }

	    /**
	     * Shortcut functions to the cipher's object interface.
	     *
	     * @example
	     *
	     *     var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);
	     *     var plaintext  = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);
	     */
	    C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);
	}());


	return CryptoJS.RabbitLegacy;

}));
},{"./cipher-core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/cipher-core.js","./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js","./enc-base64":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/enc-base64.js","./evpkdf":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/evpkdf.js","./md5":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/md5.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/rabbit.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./enc-base64"), _dereq_("./md5"), _dereq_("./evpkdf"), _dereq_("./cipher-core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./enc-base64", "./md5", "./evpkdf", "./cipher-core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	(function () {
	    // Shortcuts
	    var C = CryptoJS;
	    var C_lib = C.lib;
	    var StreamCipher = C_lib.StreamCipher;
	    var C_algo = C.algo;

	    // Reusable objects
	    var S  = [];
	    var C_ = [];
	    var G  = [];

	    /**
	     * Rabbit stream cipher algorithm
	     */
	    var Rabbit = C_algo.Rabbit = StreamCipher.extend({
	        _doReset: function () {
	            // Shortcuts
	            var K = this._key.words;
	            var iv = this.cfg.iv;

	            // Swap endian
	            for (var i = 0; i &lt; 4; i++) {
	                K[i] = (((K[i] &lt;&lt; 8)  | (K[i] &gt;&gt;&gt; 24)) &amp; 0x00ff00ff) |
	                       (((K[i] &lt;&lt; 24) | (K[i] &gt;&gt;&gt; 8))  &amp; 0xff00ff00);
	            }

	            // Generate initial state values
	            var X = this._X = [
	                K[0], (K[3] &lt;&lt; 16) | (K[2] &gt;&gt;&gt; 16),
	                K[1], (K[0] &lt;&lt; 16) | (K[3] &gt;&gt;&gt; 16),
	                K[2], (K[1] &lt;&lt; 16) | (K[0] &gt;&gt;&gt; 16),
	                K[3], (K[2] &lt;&lt; 16) | (K[1] &gt;&gt;&gt; 16)
	            ];

	            // Generate initial counter values
	            var C = this._C = [
	                (K[2] &lt;&lt; 16) | (K[2] &gt;&gt;&gt; 16), (K[0] &amp; 0xffff0000) | (K[1] &amp; 0x0000ffff),
	                (K[3] &lt;&lt; 16) | (K[3] &gt;&gt;&gt; 16), (K[1] &amp; 0xffff0000) | (K[2] &amp; 0x0000ffff),
	                (K[0] &lt;&lt; 16) | (K[0] &gt;&gt;&gt; 16), (K[2] &amp; 0xffff0000) | (K[3] &amp; 0x0000ffff),
	                (K[1] &lt;&lt; 16) | (K[1] &gt;&gt;&gt; 16), (K[3] &amp; 0xffff0000) | (K[0] &amp; 0x0000ffff)
	            ];

	            // Carry bit
	            this._b = 0;

	            // Iterate the system four times
	            for (var i = 0; i &lt; 4; i++) {
	                nextState.call(this);
	            }

	            // Modify the counters
	            for (var i = 0; i &lt; 8; i++) {
	                C[i] ^= X[(i + 4) &amp; 7];
	            }

	            // IV setup
	            if (iv) {
	                // Shortcuts
	                var IV = iv.words;
	                var IV_0 = IV[0];
	                var IV_1 = IV[1];

	                // Generate four subvectors
	                var i0 = (((IV_0 &lt;&lt; 8) | (IV_0 &gt;&gt;&gt; 24)) &amp; 0x00ff00ff) | (((IV_0 &lt;&lt; 24) | (IV_0 &gt;&gt;&gt; 8)) &amp; 0xff00ff00);
	                var i2 = (((IV_1 &lt;&lt; 8) | (IV_1 &gt;&gt;&gt; 24)) &amp; 0x00ff00ff) | (((IV_1 &lt;&lt; 24) | (IV_1 &gt;&gt;&gt; 8)) &amp; 0xff00ff00);
	                var i1 = (i0 &gt;&gt;&gt; 16) | (i2 &amp; 0xffff0000);
	                var i3 = (i2 &lt;&lt; 16)  | (i0 &amp; 0x0000ffff);

	                // Modify counter values
	                C[0] ^= i0;
	                C[1] ^= i1;
	                C[2] ^= i2;
	                C[3] ^= i3;
	                C[4] ^= i0;
	                C[5] ^= i1;
	                C[6] ^= i2;
	                C[7] ^= i3;

	                // Iterate the system four times
	                for (var i = 0; i &lt; 4; i++) {
	                    nextState.call(this);
	                }
	            }
	        },

	        _doProcessBlock: function (M, offset) {
	            // Shortcut
	            var X = this._X;

	            // Iterate the system
	            nextState.call(this);

	            // Generate four keystream words
	            S[0] = X[0] ^ (X[5] &gt;&gt;&gt; 16) ^ (X[3] &lt;&lt; 16);
	            S[1] = X[2] ^ (X[7] &gt;&gt;&gt; 16) ^ (X[5] &lt;&lt; 16);
	            S[2] = X[4] ^ (X[1] &gt;&gt;&gt; 16) ^ (X[7] &lt;&lt; 16);
	            S[3] = X[6] ^ (X[3] &gt;&gt;&gt; 16) ^ (X[1] &lt;&lt; 16);

	            for (var i = 0; i &lt; 4; i++) {
	                // Swap endian
	                S[i] = (((S[i] &lt;&lt; 8)  | (S[i] &gt;&gt;&gt; 24)) &amp; 0x00ff00ff) |
	                       (((S[i] &lt;&lt; 24) | (S[i] &gt;&gt;&gt; 8))  &amp; 0xff00ff00);

	                // Encrypt
	                M[offset + i] ^= S[i];
	            }
	        },

	        blockSize: 128/32,

	        ivSize: 64/32
	    });

	    function nextState() {
	        // Shortcuts
	        var X = this._X;
	        var C = this._C;

	        // Save old counter values
	        for (var i = 0; i &lt; 8; i++) {
	            C_[i] = C[i];
	        }

	        // Calculate new counter values
	        C[0] = (C[0] + 0x4d34d34d + this._b) | 0;
	        C[1] = (C[1] + 0xd34d34d3 + ((C[0] &gt;&gt;&gt; 0) &lt; (C_[0] &gt;&gt;&gt; 0) ? 1 : 0)) | 0;
	        C[2] = (C[2] + 0x34d34d34 + ((C[1] &gt;&gt;&gt; 0) &lt; (C_[1] &gt;&gt;&gt; 0) ? 1 : 0)) | 0;
	        C[3] = (C[3] + 0x4d34d34d + ((C[2] &gt;&gt;&gt; 0) &lt; (C_[2] &gt;&gt;&gt; 0) ? 1 : 0)) | 0;
	        C[4] = (C[4] + 0xd34d34d3 + ((C[3] &gt;&gt;&gt; 0) &lt; (C_[3] &gt;&gt;&gt; 0) ? 1 : 0)) | 0;
	        C[5] = (C[5] + 0x34d34d34 + ((C[4] &gt;&gt;&gt; 0) &lt; (C_[4] &gt;&gt;&gt; 0) ? 1 : 0)) | 0;
	        C[6] = (C[6] + 0x4d34d34d + ((C[5] &gt;&gt;&gt; 0) &lt; (C_[5] &gt;&gt;&gt; 0) ? 1 : 0)) | 0;
	        C[7] = (C[7] + 0xd34d34d3 + ((C[6] &gt;&gt;&gt; 0) &lt; (C_[6] &gt;&gt;&gt; 0) ? 1 : 0)) | 0;
	        this._b = (C[7] &gt;&gt;&gt; 0) &lt; (C_[7] &gt;&gt;&gt; 0) ? 1 : 0;

	        // Calculate the g-values
	        for (var i = 0; i &lt; 8; i++) {
	            var gx = X[i] + C[i];

	            // Construct high and low argument for squaring
	            var ga = gx &amp; 0xffff;
	            var gb = gx &gt;&gt;&gt; 16;

	            // Calculate high and low result of squaring
	            var gh = ((((ga * ga) &gt;&gt;&gt; 17) + ga * gb) &gt;&gt;&gt; 15) + gb * gb;
	            var gl = (((gx &amp; 0xffff0000) * gx) | 0) + (((gx &amp; 0x0000ffff) * gx) | 0);

	            // High XOR low
	            G[i] = gh ^ gl;
	        }

	        // Calculate new state values
	        X[0] = (G[0] + ((G[7] &lt;&lt; 16) | (G[7] &gt;&gt;&gt; 16)) + ((G[6] &lt;&lt; 16) | (G[6] &gt;&gt;&gt; 16))) | 0;
	        X[1] = (G[1] + ((G[0] &lt;&lt; 8)  | (G[0] &gt;&gt;&gt; 24)) + G[7]) | 0;
	        X[2] = (G[2] + ((G[1] &lt;&lt; 16) | (G[1] &gt;&gt;&gt; 16)) + ((G[0] &lt;&lt; 16) | (G[0] &gt;&gt;&gt; 16))) | 0;
	        X[3] = (G[3] + ((G[2] &lt;&lt; 8)  | (G[2] &gt;&gt;&gt; 24)) + G[1]) | 0;
	        X[4] = (G[4] + ((G[3] &lt;&lt; 16) | (G[3] &gt;&gt;&gt; 16)) + ((G[2] &lt;&lt; 16) | (G[2] &gt;&gt;&gt; 16))) | 0;
	        X[5] = (G[5] + ((G[4] &lt;&lt; 8)  | (G[4] &gt;&gt;&gt; 24)) + G[3]) | 0;
	        X[6] = (G[6] + ((G[5] &lt;&lt; 16) | (G[5] &gt;&gt;&gt; 16)) + ((G[4] &lt;&lt; 16) | (G[4] &gt;&gt;&gt; 16))) | 0;
	        X[7] = (G[7] + ((G[6] &lt;&lt; 8)  | (G[6] &gt;&gt;&gt; 24)) + G[5]) | 0;
	    }

	    /**
	     * Shortcut functions to the cipher's object interface.
	     *
	     * @example
	     *
	     *     var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);
	     *     var plaintext  = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);
	     */
	    C.Rabbit = StreamCipher._createHelper(Rabbit);
	}());


	return CryptoJS.Rabbit;

}));
},{"./cipher-core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/cipher-core.js","./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js","./enc-base64":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/enc-base64.js","./evpkdf":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/evpkdf.js","./md5":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/md5.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/rc4.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./enc-base64"), _dereq_("./md5"), _dereq_("./evpkdf"), _dereq_("./cipher-core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./enc-base64", "./md5", "./evpkdf", "./cipher-core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	(function () {
	    // Shortcuts
	    var C = CryptoJS;
	    var C_lib = C.lib;
	    var StreamCipher = C_lib.StreamCipher;
	    var C_algo = C.algo;

	    /**
	     * RC4 stream cipher algorithm.
	     */
	    var RC4 = C_algo.RC4 = StreamCipher.extend({
	        _doReset: function () {
	            // Shortcuts
	            var key = this._key;
	            var keyWords = key.words;
	            var keySigBytes = key.sigBytes;

	            // Init sbox
	            var S = this._S = [];
	            for (var i = 0; i &lt; 256; i++) {
	                S[i] = i;
	            }

	            // Key setup
	            for (var i = 0, j = 0; i &lt; 256; i++) {
	                var keyByteIndex = i % keySigBytes;
	                var keyByte = (keyWords[keyByteIndex &gt;&gt;&gt; 2] &gt;&gt;&gt; (24 - (keyByteIndex % 4) * 8)) &amp; 0xff;

	                j = (j + S[i] + keyByte) % 256;

	                // Swap
	                var t = S[i];
	                S[i] = S[j];
	                S[j] = t;
	            }

	            // Counters
	            this._i = this._j = 0;
	        },

	        _doProcessBlock: function (M, offset) {
	            M[offset] ^= generateKeystreamWord.call(this);
	        },

	        keySize: 256/32,

	        ivSize: 0
	    });

	    function generateKeystreamWord() {
	        // Shortcuts
	        var S = this._S;
	        var i = this._i;
	        var j = this._j;

	        // Generate keystream word
	        var keystreamWord = 0;
	        for (var n = 0; n &lt; 4; n++) {
	            i = (i + 1) % 256;
	            j = (j + S[i]) % 256;

	            // Swap
	            var t = S[i];
	            S[i] = S[j];
	            S[j] = t;

	            keystreamWord |= S[(S[i] + S[j]) % 256] &lt;&lt; (24 - n * 8);
	        }

	        // Update counters
	        this._i = i;
	        this._j = j;

	        return keystreamWord;
	    }

	    /**
	     * Shortcut functions to the cipher's object interface.
	     *
	     * @example
	     *
	     *     var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);
	     *     var plaintext  = CryptoJS.RC4.decrypt(ciphertext, key, cfg);
	     */
	    C.RC4 = StreamCipher._createHelper(RC4);

	    /**
	     * Modified RC4 stream cipher algorithm.
	     */
	    var RC4Drop = C_algo.RC4Drop = RC4.extend({
	        /**
	         * Configuration options.
	         *
	         * @property {number} drop The number of keystream words to drop. Default 192
	         */
	        cfg: RC4.cfg.extend({
	            drop: 192
	        }),

	        _doReset: function () {
	            RC4._doReset.call(this);

	            // Drop
	            for (var i = this.cfg.drop; i &gt; 0; i--) {
	                generateKeystreamWord.call(this);
	            }
	        }
	    });

	    /**
	     * Shortcut functions to the cipher's object interface.
	     *
	     * @example
	     *
	     *     var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);
	     *     var plaintext  = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);
	     */
	    C.RC4Drop = StreamCipher._createHelper(RC4Drop);
	}());


	return CryptoJS.RC4;

}));
},{"./cipher-core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/cipher-core.js","./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js","./enc-base64":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/enc-base64.js","./evpkdf":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/evpkdf.js","./md5":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/md5.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/ripemd160.js":[function(_dereq_,module,exports){
;(function (root, factory) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	/** @preserve
	(c) 2012 by Cédric Mesnil. All rights reserved.

	Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

	    - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
	    - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
	*/

	(function (Math) {
	    // Shortcuts
	    var C = CryptoJS;
	    var C_lib = C.lib;
	    var WordArray = C_lib.WordArray;
	    var Hasher = C_lib.Hasher;
	    var C_algo = C.algo;

	    // Constants table
	    var _zl = WordArray.create([
	        0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
	        7,  4, 13,  1, 10,  6, 15,  3, 12,  0,  9,  5,  2, 14, 11,  8,
	        3, 10, 14,  4,  9, 15,  8,  1,  2,  7,  0,  6, 13, 11,  5, 12,
	        1,  9, 11, 10,  0,  8, 12,  4, 13,  3,  7, 15, 14,  5,  6,  2,
	        4,  0,  5,  9,  7, 12,  2, 10, 14,  1,  3,  8, 11,  6, 15, 13]);
	    var _zr = WordArray.create([
	        5, 14,  7,  0,  9,  2, 11,  4, 13,  6, 15,  8,  1, 10,  3, 12,
	        6, 11,  3,  7,  0, 13,  5, 10, 14, 15,  8, 12,  4,  9,  1,  2,
	        15,  5,  1,  3,  7, 14,  6,  9, 11,  8, 12,  2, 10,  0,  4, 13,
	        8,  6,  4,  1,  3, 11, 15,  0,  5, 12,  2, 13,  9,  7, 10, 14,
	        12, 15, 10,  4,  1,  5,  8,  7,  6,  2, 13, 14,  0,  3,  9, 11]);
	    var _sl = WordArray.create([
	         11, 14, 15, 12,  5,  8,  7,  9, 11, 13, 14, 15,  6,  7,  9,  8,
	        7, 6,   8, 13, 11,  9,  7, 15,  7, 12, 15,  9, 11,  7, 13, 12,
	        11, 13,  6,  7, 14,  9, 13, 15, 14,  8, 13,  6,  5, 12,  7,  5,
	          11, 12, 14, 15, 14, 15,  9,  8,  9, 14,  5,  6,  8,  6,  5, 12,
	        9, 15,  5, 11,  6,  8, 13, 12,  5, 12, 13, 14, 11,  8,  5,  6 ]);
	    var _sr = WordArray.create([
	        8,  9,  9, 11, 13, 15, 15,  5,  7,  7,  8, 11, 14, 14, 12,  6,
	        9, 13, 15,  7, 12,  8,  9, 11,  7,  7, 12,  7,  6, 15, 13, 11,
	        9,  7, 15, 11,  8,  6,  6, 14, 12, 13,  5, 14, 13, 13,  7,  5,
	        15,  5,  8, 11, 14, 14,  6, 14,  6,  9, 12,  9, 12,  5, 15,  8,
	        8,  5, 12,  9, 12,  5, 14,  6,  8, 13,  6,  5, 15, 13, 11, 11 ]);

	    var _hl =  WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);
	    var _hr =  WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);

	    /**
	     * RIPEMD160 hash algorithm.
	     */
	    var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({
	        _doReset: function () {
	            this._hash  = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);
	        },

	        _doProcessBlock: function (M, offset) {

	            // Swap endian
	            for (var i = 0; i &lt; 16; i++) {
	                // Shortcuts
	                var offset_i = offset + i;
	                var M_offset_i = M[offset_i];

	                // Swap
	                M[offset_i] = (
	                    (((M_offset_i &lt;&lt; 8)  | (M_offset_i &gt;&gt;&gt; 24)) &amp; 0x00ff00ff) |
	                    (((M_offset_i &lt;&lt; 24) | (M_offset_i &gt;&gt;&gt; 8))  &amp; 0xff00ff00)
	                );
	            }
	            // Shortcut
	            var H  = this._hash.words;
	            var hl = _hl.words;
	            var hr = _hr.words;
	            var zl = _zl.words;
	            var zr = _zr.words;
	            var sl = _sl.words;
	            var sr = _sr.words;

	            // Working variables
	            var al, bl, cl, dl, el;
	            var ar, br, cr, dr, er;

	            ar = al = H[0];
	            br = bl = H[1];
	            cr = cl = H[2];
	            dr = dl = H[3];
	            er = el = H[4];
	            // Computation
	            var t;
	            for (var i = 0; i &lt; 80; i += 1) {
	                t = (al +  M[offset+zl[i]])|0;
	                if (i&lt;16){
		            t +=  f1(bl,cl,dl) + hl[0];
	                } else if (i&lt;32) {
		            t +=  f2(bl,cl,dl) + hl[1];
	                } else if (i&lt;48) {
		            t +=  f3(bl,cl,dl) + hl[2];
	                } else if (i&lt;64) {
		            t +=  f4(bl,cl,dl) + hl[3];
	                } else {// if (i&lt;80) {
		            t +=  f5(bl,cl,dl) + hl[4];
	                }
	                t = t|0;
	                t =  rotl(t,sl[i]);
	                t = (t+el)|0;
	                al = el;
	                el = dl;
	                dl = rotl(cl, 10);
	                cl = bl;
	                bl = t;

	                t = (ar + M[offset+zr[i]])|0;
	                if (i&lt;16){
		            t +=  f5(br,cr,dr) + hr[0];
	                } else if (i&lt;32) {
		            t +=  f4(br,cr,dr) + hr[1];
	                } else if (i&lt;48) {
		            t +=  f3(br,cr,dr) + hr[2];
	                } else if (i&lt;64) {
		            t +=  f2(br,cr,dr) + hr[3];
	                } else {// if (i&lt;80) {
		            t +=  f1(br,cr,dr) + hr[4];
	                }
	                t = t|0;
	                t =  rotl(t,sr[i]) ;
	                t = (t+er)|0;
	                ar = er;
	                er = dr;
	                dr = rotl(cr, 10);
	                cr = br;
	                br = t;
	            }
	            // Intermediate hash value
	            t    = (H[1] + cl + dr)|0;
	            H[1] = (H[2] + dl + er)|0;
	            H[2] = (H[3] + el + ar)|0;
	            H[3] = (H[4] + al + br)|0;
	            H[4] = (H[0] + bl + cr)|0;
	            H[0] =  t;
	        },

	        _doFinalize: function () {
	            // Shortcuts
	            var data = this._data;
	            var dataWords = data.words;

	            var nBitsTotal = this._nDataBytes * 8;
	            var nBitsLeft = data.sigBytes * 8;

	            // Add padding
	            dataWords[nBitsLeft &gt;&gt;&gt; 5] |= 0x80 &lt;&lt; (24 - nBitsLeft % 32);
	            dataWords[(((nBitsLeft + 64) &gt;&gt;&gt; 9) &lt;&lt; 4) + 14] = (
	                (((nBitsTotal &lt;&lt; 8)  | (nBitsTotal &gt;&gt;&gt; 24)) &amp; 0x00ff00ff) |
	                (((nBitsTotal &lt;&lt; 24) | (nBitsTotal &gt;&gt;&gt; 8))  &amp; 0xff00ff00)
	            );
	            data.sigBytes = (dataWords.length + 1) * 4;

	            // Hash final blocks
	            this._process();

	            // Shortcuts
	            var hash = this._hash;
	            var H = hash.words;

	            // Swap endian
	            for (var i = 0; i &lt; 5; i++) {
	                // Shortcut
	                var H_i = H[i];

	                // Swap
	                H[i] = (((H_i &lt;&lt; 8)  | (H_i &gt;&gt;&gt; 24)) &amp; 0x00ff00ff) |
	                       (((H_i &lt;&lt; 24) | (H_i &gt;&gt;&gt; 8))  &amp; 0xff00ff00);
	            }

	            // Return final computed hash
	            return hash;
	        },

	        clone: function () {
	            var clone = Hasher.clone.call(this);
	            clone._hash = this._hash.clone();

	            return clone;
	        }
	    });


	    function f1(x, y, z) {
	        return ((x) ^ (y) ^ (z));

	    }

	    function f2(x, y, z) {
	        return (((x)&amp;(y)) | ((~x)&amp;(z)));
	    }

	    function f3(x, y, z) {
	        return (((x) | (~(y))) ^ (z));
	    }

	    function f4(x, y, z) {
	        return (((x) &amp; (z)) | ((y)&amp;(~(z))));
	    }

	    function f5(x, y, z) {
	        return ((x) ^ ((y) |(~(z))));

	    }

	    function rotl(x,n) {
	        return (x&lt;&lt;n) | (x&gt;&gt;&gt;(32-n));
	    }


	    /**
	     * Shortcut function to the hasher's object interface.
	     *
	     * @param {WordArray|string} message The message to hash.
	     *
	     * @return {WordArray} The hash.
	     *
	     * @static
	     *
	     * @example
	     *
	     *     var hash = CryptoJS.RIPEMD160('message');
	     *     var hash = CryptoJS.RIPEMD160(wordArray);
	     */
	    C.RIPEMD160 = Hasher._createHelper(RIPEMD160);

	    /**
	     * Shortcut function to the HMAC's object interface.
	     *
	     * @param {WordArray|string} message The message to hash.
	     * @param {WordArray|string} key The secret key.
	     *
	     * @return {WordArray} The HMAC.
	     *
	     * @static
	     *
	     * @example
	     *
	     *     var hmac = CryptoJS.HmacRIPEMD160(message, key);
	     */
	    C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);
	}(Math));


	return CryptoJS.RIPEMD160;

}));
},{"./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/sha1.js":[function(_dereq_,module,exports){
;(function (root, factory) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	(function () {
	    // Shortcuts
	    var C = CryptoJS;
	    var C_lib = C.lib;
	    var WordArray = C_lib.WordArray;
	    var Hasher = C_lib.Hasher;
	    var C_algo = C.algo;

	    // Reusable object
	    var W = [];

	    /**
	     * SHA-1 hash algorithm.
	     */
	    var SHA1 = C_algo.SHA1 = Hasher.extend({
	        _doReset: function () {
	            this._hash = new WordArray.init([
	                0x67452301, 0xefcdab89,
	                0x98badcfe, 0x10325476,
	                0xc3d2e1f0
	            ]);
	        },

	        _doProcessBlock: function (M, offset) {
	            // Shortcut
	            var H = this._hash.words;

	            // Working variables
	            var a = H[0];
	            var b = H[1];
	            var c = H[2];
	            var d = H[3];
	            var e = H[4];

	            // Computation
	            for (var i = 0; i &lt; 80; i++) {
	                if (i &lt; 16) {
	                    W[i] = M[offset + i] | 0;
	                } else {
	                    var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];
	                    W[i] = (n &lt;&lt; 1) | (n &gt;&gt;&gt; 31);
	                }

	                var t = ((a &lt;&lt; 5) | (a &gt;&gt;&gt; 27)) + e + W[i];
	                if (i &lt; 20) {
	                    t += ((b &amp; c) | (~b &amp; d)) + 0x5a827999;
	                } else if (i &lt; 40) {
	                    t += (b ^ c ^ d) + 0x6ed9eba1;
	                } else if (i &lt; 60) {
	                    t += ((b &amp; c) | (b &amp; d) | (c &amp; d)) - 0x70e44324;
	                } else /* if (i &lt; 80) */ {
	                    t += (b ^ c ^ d) - 0x359d3e2a;
	                }

	                e = d;
	                d = c;
	                c = (b &lt;&lt; 30) | (b &gt;&gt;&gt; 2);
	                b = a;
	                a = t;
	            }

	            // Intermediate hash value
	            H[0] = (H[0] + a) | 0;
	            H[1] = (H[1] + b) | 0;
	            H[2] = (H[2] + c) | 0;
	            H[3] = (H[3] + d) | 0;
	            H[4] = (H[4] + e) | 0;
	        },

	        _doFinalize: function () {
	            // Shortcuts
	            var data = this._data;
	            var dataWords = data.words;

	            var nBitsTotal = this._nDataBytes * 8;
	            var nBitsLeft = data.sigBytes * 8;

	            // Add padding
	            dataWords[nBitsLeft &gt;&gt;&gt; 5] |= 0x80 &lt;&lt; (24 - nBitsLeft % 32);
	            dataWords[(((nBitsLeft + 64) &gt;&gt;&gt; 9) &lt;&lt; 4) + 14] = Math.floor(nBitsTotal / 0x100000000);
	            dataWords[(((nBitsLeft + 64) &gt;&gt;&gt; 9) &lt;&lt; 4) + 15] = nBitsTotal;
	            data.sigBytes = dataWords.length * 4;

	            // Hash final blocks
	            this._process();

	            // Return final computed hash
	            return this._hash;
	        },

	        clone: function () {
	            var clone = Hasher.clone.call(this);
	            clone._hash = this._hash.clone();

	            return clone;
	        }
	    });

	    /**
	     * Shortcut function to the hasher's object interface.
	     *
	     * @param {WordArray|string} message The message to hash.
	     *
	     * @return {WordArray} The hash.
	     *
	     * @static
	     *
	     * @example
	     *
	     *     var hash = CryptoJS.SHA1('message');
	     *     var hash = CryptoJS.SHA1(wordArray);
	     */
	    C.SHA1 = Hasher._createHelper(SHA1);

	    /**
	     * Shortcut function to the HMAC's object interface.
	     *
	     * @param {WordArray|string} message The message to hash.
	     * @param {WordArray|string} key The secret key.
	     *
	     * @return {WordArray} The HMAC.
	     *
	     * @static
	     *
	     * @example
	     *
	     *     var hmac = CryptoJS.HmacSHA1(message, key);
	     */
	    C.HmacSHA1 = Hasher._createHmacHelper(SHA1);
	}());


	return CryptoJS.SHA1;

}));
},{"./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/sha224.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./sha256"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./sha256"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	(function () {
	    // Shortcuts
	    var C = CryptoJS;
	    var C_lib = C.lib;
	    var WordArray = C_lib.WordArray;
	    var C_algo = C.algo;
	    var SHA256 = C_algo.SHA256;

	    /**
	     * SHA-224 hash algorithm.
	     */
	    var SHA224 = C_algo.SHA224 = SHA256.extend({
	        _doReset: function () {
	            this._hash = new WordArray.init([
	                0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
	                0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4
	            ]);
	        },

	        _doFinalize: function () {
	            var hash = SHA256._doFinalize.call(this);

	            hash.sigBytes -= 4;

	            return hash;
	        }
	    });

	    /**
	     * Shortcut function to the hasher's object interface.
	     *
	     * @param {WordArray|string} message The message to hash.
	     *
	     * @return {WordArray} The hash.
	     *
	     * @static
	     *
	     * @example
	     *
	     *     var hash = CryptoJS.SHA224('message');
	     *     var hash = CryptoJS.SHA224(wordArray);
	     */
	    C.SHA224 = SHA256._createHelper(SHA224);

	    /**
	     * Shortcut function to the HMAC's object interface.
	     *
	     * @param {WordArray|string} message The message to hash.
	     * @param {WordArray|string} key The secret key.
	     *
	     * @return {WordArray} The HMAC.
	     *
	     * @static
	     *
	     * @example
	     *
	     *     var hmac = CryptoJS.HmacSHA224(message, key);
	     */
	    C.HmacSHA224 = SHA256._createHmacHelper(SHA224);
	}());


	return CryptoJS.SHA224;

}));
},{"./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js","./sha256":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/sha256.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/sha256.js":[function(_dereq_,module,exports){
;(function (root, factory) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	(function (Math) {
	    // Shortcuts
	    var C = CryptoJS;
	    var C_lib = C.lib;
	    var WordArray = C_lib.WordArray;
	    var Hasher = C_lib.Hasher;
	    var C_algo = C.algo;

	    // Initialization and round constants tables
	    var H = [];
	    var K = [];

	    // Compute constants
	    (function () {
	        function isPrime(n) {
	            var sqrtN = Math.sqrt(n);
	            for (var factor = 2; factor &lt;= sqrtN; factor++) {
	                if (!(n % factor)) {
	                    return false;
	                }
	            }

	            return true;
	        }

	        function getFractionalBits(n) {
	            return ((n - (n | 0)) * 0x100000000) | 0;
	        }

	        var n = 2;
	        var nPrime = 0;
	        while (nPrime &lt; 64) {
	            if (isPrime(n)) {
	                if (nPrime &lt; 8) {
	                    H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));
	                }
	                K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));

	                nPrime++;
	            }

	            n++;
	        }
	    }());

	    // Reusable object
	    var W = [];

	    /**
	     * SHA-256 hash algorithm.
	     */
	    var SHA256 = C_algo.SHA256 = Hasher.extend({
	        _doReset: function () {
	            this._hash = new WordArray.init(H.slice(0));
	        },

	        _doProcessBlock: function (M, offset) {
	            // Shortcut
	            var H = this._hash.words;

	            // Working variables
	            var a = H[0];
	            var b = H[1];
	            var c = H[2];
	            var d = H[3];
	            var e = H[4];
	            var f = H[5];
	            var g = H[6];
	            var h = H[7];

	            // Computation
	            for (var i = 0; i &lt; 64; i++) {
	                if (i &lt; 16) {
	                    W[i] = M[offset + i] | 0;
	                } else {
	                    var gamma0x = W[i - 15];
	                    var gamma0  = ((gamma0x &lt;&lt; 25) | (gamma0x &gt;&gt;&gt; 7))  ^
	                                  ((gamma0x &lt;&lt; 14) | (gamma0x &gt;&gt;&gt; 18)) ^
	                                   (gamma0x &gt;&gt;&gt; 3);

	                    var gamma1x = W[i - 2];
	                    var gamma1  = ((gamma1x &lt;&lt; 15) | (gamma1x &gt;&gt;&gt; 17)) ^
	                                  ((gamma1x &lt;&lt; 13) | (gamma1x &gt;&gt;&gt; 19)) ^
	                                   (gamma1x &gt;&gt;&gt; 10);

	                    W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];
	                }

	                var ch  = (e &amp; f) ^ (~e &amp; g);
	                var maj = (a &amp; b) ^ (a &amp; c) ^ (b &amp; c);

	                var sigma0 = ((a &lt;&lt; 30) | (a &gt;&gt;&gt; 2)) ^ ((a &lt;&lt; 19) | (a &gt;&gt;&gt; 13)) ^ ((a &lt;&lt; 10) | (a &gt;&gt;&gt; 22));
	                var sigma1 = ((e &lt;&lt; 26) | (e &gt;&gt;&gt; 6)) ^ ((e &lt;&lt; 21) | (e &gt;&gt;&gt; 11)) ^ ((e &lt;&lt; 7)  | (e &gt;&gt;&gt; 25));

	                var t1 = h + sigma1 + ch + K[i] + W[i];
	                var t2 = sigma0 + maj;

	                h = g;
	                g = f;
	                f = e;
	                e = (d + t1) | 0;
	                d = c;
	                c = b;
	                b = a;
	                a = (t1 + t2) | 0;
	            }

	            // Intermediate hash value
	            H[0] = (H[0] + a) | 0;
	            H[1] = (H[1] + b) | 0;
	            H[2] = (H[2] + c) | 0;
	            H[3] = (H[3] + d) | 0;
	            H[4] = (H[4] + e) | 0;
	            H[5] = (H[5] + f) | 0;
	            H[6] = (H[6] + g) | 0;
	            H[7] = (H[7] + h) | 0;
	        },

	        _doFinalize: function () {
	            // Shortcuts
	            var data = this._data;
	            var dataWords = data.words;

	            var nBitsTotal = this._nDataBytes * 8;
	            var nBitsLeft = data.sigBytes * 8;

	            // Add padding
	            dataWords[nBitsLeft &gt;&gt;&gt; 5] |= 0x80 &lt;&lt; (24 - nBitsLeft % 32);
	            dataWords[(((nBitsLeft + 64) &gt;&gt;&gt; 9) &lt;&lt; 4) + 14] = Math.floor(nBitsTotal / 0x100000000);
	            dataWords[(((nBitsLeft + 64) &gt;&gt;&gt; 9) &lt;&lt; 4) + 15] = nBitsTotal;
	            data.sigBytes = dataWords.length * 4;

	            // Hash final blocks
	            this._process();

	            // Return final computed hash
	            return this._hash;
	        },

	        clone: function () {
	            var clone = Hasher.clone.call(this);
	            clone._hash = this._hash.clone();

	            return clone;
	        }
	    });

	    /**
	     * Shortcut function to the hasher's object interface.
	     *
	     * @param {WordArray|string} message The message to hash.
	     *
	     * @return {WordArray} The hash.
	     *
	     * @static
	     *
	     * @example
	     *
	     *     var hash = CryptoJS.SHA256('message');
	     *     var hash = CryptoJS.SHA256(wordArray);
	     */
	    C.SHA256 = Hasher._createHelper(SHA256);

	    /**
	     * Shortcut function to the HMAC's object interface.
	     *
	     * @param {WordArray|string} message The message to hash.
	     * @param {WordArray|string} key The secret key.
	     *
	     * @return {WordArray} The HMAC.
	     *
	     * @static
	     *
	     * @example
	     *
	     *     var hmac = CryptoJS.HmacSHA256(message, key);
	     */
	    C.HmacSHA256 = Hasher._createHmacHelper(SHA256);
	}(Math));


	return CryptoJS.SHA256;

}));
},{"./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/sha3.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./x64-core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./x64-core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	(function (Math) {
	    // Shortcuts
	    var C = CryptoJS;
	    var C_lib = C.lib;
	    var WordArray = C_lib.WordArray;
	    var Hasher = C_lib.Hasher;
	    var C_x64 = C.x64;
	    var X64Word = C_x64.Word;
	    var C_algo = C.algo;

	    // Constants tables
	    var RHO_OFFSETS = [];
	    var PI_INDEXES  = [];
	    var ROUND_CONSTANTS = [];

	    // Compute Constants
	    (function () {
	        // Compute rho offset constants
	        var x = 1, y = 0;
	        for (var t = 0; t &lt; 24; t++) {
	            RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;

	            var newX = y % 5;
	            var newY = (2 * x + 3 * y) % 5;
	            x = newX;
	            y = newY;
	        }

	        // Compute pi index constants
	        for (var x = 0; x &lt; 5; x++) {
	            for (var y = 0; y &lt; 5; y++) {
	                PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;
	            }
	        }

	        // Compute round constants
	        var LFSR = 0x01;
	        for (var i = 0; i &lt; 24; i++) {
	            var roundConstantMsw = 0;
	            var roundConstantLsw = 0;

	            for (var j = 0; j &lt; 7; j++) {
	                if (LFSR &amp; 0x01) {
	                    var bitPosition = (1 &lt;&lt; j) - 1;
	                    if (bitPosition &lt; 32) {
	                        roundConstantLsw ^= 1 &lt;&lt; bitPosition;
	                    } else /* if (bitPosition &gt;= 32) */ {
	                        roundConstantMsw ^= 1 &lt;&lt; (bitPosition - 32);
	                    }
	                }

	                // Compute next LFSR
	                if (LFSR &amp; 0x80) {
	                    // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1
	                    LFSR = (LFSR &lt;&lt; 1) ^ 0x71;
	                } else {
	                    LFSR &lt;&lt;= 1;
	                }
	            }

	            ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);
	        }
	    }());

	    // Reusable objects for temporary values
	    var T = [];
	    (function () {
	        for (var i = 0; i &lt; 25; i++) {
	            T[i] = X64Word.create();
	        }
	    }());

	    /**
	     * SHA-3 hash algorithm.
	     */
	    var SHA3 = C_algo.SHA3 = Hasher.extend({
	        /**
	         * Configuration options.
	         *
	         * @property {number} outputLength
	         *   The desired number of bits in the output hash.
	         *   Only values permitted are: 224, 256, 384, 512.
	         *   Default: 512
	         */
	        cfg: Hasher.cfg.extend({
	            outputLength: 512
	        }),

	        _doReset: function () {
	            var state = this._state = []
	            for (var i = 0; i &lt; 25; i++) {
	                state[i] = new X64Word.init();
	            }

	            this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;
	        },

	        _doProcessBlock: function (M, offset) {
	            // Shortcuts
	            var state = this._state;
	            var nBlockSizeLanes = this.blockSize / 2;

	            // Absorb
	            for (var i = 0; i &lt; nBlockSizeLanes; i++) {
	                // Shortcuts
	                var M2i  = M[offset + 2 * i];
	                var M2i1 = M[offset + 2 * i + 1];

	                // Swap endian
	                M2i = (
	                    (((M2i &lt;&lt; 8)  | (M2i &gt;&gt;&gt; 24)) &amp; 0x00ff00ff) |
	                    (((M2i &lt;&lt; 24) | (M2i &gt;&gt;&gt; 8))  &amp; 0xff00ff00)
	                );
	                M2i1 = (
	                    (((M2i1 &lt;&lt; 8)  | (M2i1 &gt;&gt;&gt; 24)) &amp; 0x00ff00ff) |
	                    (((M2i1 &lt;&lt; 24) | (M2i1 &gt;&gt;&gt; 8))  &amp; 0xff00ff00)
	                );

	                // Absorb message into state
	                var lane = state[i];
	                lane.high ^= M2i1;
	                lane.low  ^= M2i;
	            }

	            // Rounds
	            for (var round = 0; round &lt; 24; round++) {
	                // Theta
	                for (var x = 0; x &lt; 5; x++) {
	                    // Mix column lanes
	                    var tMsw = 0, tLsw = 0;
	                    for (var y = 0; y &lt; 5; y++) {
	                        var lane = state[x + 5 * y];
	                        tMsw ^= lane.high;
	                        tLsw ^= lane.low;
	                    }

	                    // Temporary values
	                    var Tx = T[x];
	                    Tx.high = tMsw;
	                    Tx.low  = tLsw;
	                }
	                for (var x = 0; x &lt; 5; x++) {
	                    // Shortcuts
	                    var Tx4 = T[(x + 4) % 5];
	                    var Tx1 = T[(x + 1) % 5];
	                    var Tx1Msw = Tx1.high;
	                    var Tx1Lsw = Tx1.low;

	                    // Mix surrounding columns
	                    var tMsw = Tx4.high ^ ((Tx1Msw &lt;&lt; 1) | (Tx1Lsw &gt;&gt;&gt; 31));
	                    var tLsw = Tx4.low  ^ ((Tx1Lsw &lt;&lt; 1) | (Tx1Msw &gt;&gt;&gt; 31));
	                    for (var y = 0; y &lt; 5; y++) {
	                        var lane = state[x + 5 * y];
	                        lane.high ^= tMsw;
	                        lane.low  ^= tLsw;
	                    }
	                }

	                // Rho Pi
	                for (var laneIndex = 1; laneIndex &lt; 25; laneIndex++) {
	                    // Shortcuts
	                    var lane = state[laneIndex];
	                    var laneMsw = lane.high;
	                    var laneLsw = lane.low;
	                    var rhoOffset = RHO_OFFSETS[laneIndex];

	                    // Rotate lanes
	                    if (rhoOffset &lt; 32) {
	                        var tMsw = (laneMsw &lt;&lt; rhoOffset) | (laneLsw &gt;&gt;&gt; (32 - rhoOffset));
	                        var tLsw = (laneLsw &lt;&lt; rhoOffset) | (laneMsw &gt;&gt;&gt; (32 - rhoOffset));
	                    } else /* if (rhoOffset &gt;= 32) */ {
	                        var tMsw = (laneLsw &lt;&lt; (rhoOffset - 32)) | (laneMsw &gt;&gt;&gt; (64 - rhoOffset));
	                        var tLsw = (laneMsw &lt;&lt; (rhoOffset - 32)) | (laneLsw &gt;&gt;&gt; (64 - rhoOffset));
	                    }

	                    // Transpose lanes
	                    var TPiLane = T[PI_INDEXES[laneIndex]];
	                    TPiLane.high = tMsw;
	                    TPiLane.low  = tLsw;
	                }

	                // Rho pi at x = y = 0
	                var T0 = T[0];
	                var state0 = state[0];
	                T0.high = state0.high;
	                T0.low  = state0.low;

	                // Chi
	                for (var x = 0; x &lt; 5; x++) {
	                    for (var y = 0; y &lt; 5; y++) {
	                        // Shortcuts
	                        var laneIndex = x + 5 * y;
	                        var lane = state[laneIndex];
	                        var TLane = T[laneIndex];
	                        var Tx1Lane = T[((x + 1) % 5) + 5 * y];
	                        var Tx2Lane = T[((x + 2) % 5) + 5 * y];

	                        // Mix rows
	                        lane.high = TLane.high ^ (~Tx1Lane.high &amp; Tx2Lane.high);
	                        lane.low  = TLane.low  ^ (~Tx1Lane.low  &amp; Tx2Lane.low);
	                    }
	                }

	                // Iota
	                var lane = state[0];
	                var roundConstant = ROUND_CONSTANTS[round];
	                lane.high ^= roundConstant.high;
	                lane.low  ^= roundConstant.low;;
	            }
	        },

	        _doFinalize: function () {
	            // Shortcuts
	            var data = this._data;
	            var dataWords = data.words;
	            var nBitsTotal = this._nDataBytes * 8;
	            var nBitsLeft = data.sigBytes * 8;
	            var blockSizeBits = this.blockSize * 32;

	            // Add padding
	            dataWords[nBitsLeft &gt;&gt;&gt; 5] |= 0x1 &lt;&lt; (24 - nBitsLeft % 32);
	            dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) &gt;&gt;&gt; 5) - 1] |= 0x80;
	            data.sigBytes = dataWords.length * 4;

	            // Hash final blocks
	            this._process();

	            // Shortcuts
	            var state = this._state;
	            var outputLengthBytes = this.cfg.outputLength / 8;
	            var outputLengthLanes = outputLengthBytes / 8;

	            // Squeeze
	            var hashWords = [];
	            for (var i = 0; i &lt; outputLengthLanes; i++) {
	                // Shortcuts
	                var lane = state[i];
	                var laneMsw = lane.high;
	                var laneLsw = lane.low;

	                // Swap endian
	                laneMsw = (
	                    (((laneMsw &lt;&lt; 8)  | (laneMsw &gt;&gt;&gt; 24)) &amp; 0x00ff00ff) |
	                    (((laneMsw &lt;&lt; 24) | (laneMsw &gt;&gt;&gt; 8))  &amp; 0xff00ff00)
	                );
	                laneLsw = (
	                    (((laneLsw &lt;&lt; 8)  | (laneLsw &gt;&gt;&gt; 24)) &amp; 0x00ff00ff) |
	                    (((laneLsw &lt;&lt; 24) | (laneLsw &gt;&gt;&gt; 8))  &amp; 0xff00ff00)
	                );

	                // Squeeze state to retrieve hash
	                hashWords.push(laneLsw);
	                hashWords.push(laneMsw);
	            }

	            // Return final computed hash
	            return new WordArray.init(hashWords, outputLengthBytes);
	        },

	        clone: function () {
	            var clone = Hasher.clone.call(this);

	            var state = clone._state = this._state.slice(0);
	            for (var i = 0; i &lt; 25; i++) {
	                state[i] = state[i].clone();
	            }

	            return clone;
	        }
	    });

	    /**
	     * Shortcut function to the hasher's object interface.
	     *
	     * @param {WordArray|string} message The message to hash.
	     *
	     * @return {WordArray} The hash.
	     *
	     * @static
	     *
	     * @example
	     *
	     *     var hash = CryptoJS.SHA3('message');
	     *     var hash = CryptoJS.SHA3(wordArray);
	     */
	    C.SHA3 = Hasher._createHelper(SHA3);

	    /**
	     * Shortcut function to the HMAC's object interface.
	     *
	     * @param {WordArray|string} message The message to hash.
	     * @param {WordArray|string} key The secret key.
	     *
	     * @return {WordArray} The HMAC.
	     *
	     * @static
	     *
	     * @example
	     *
	     *     var hmac = CryptoJS.HmacSHA3(message, key);
	     */
	    C.HmacSHA3 = Hasher._createHmacHelper(SHA3);
	}(Math));


	return CryptoJS.SHA3;

}));
},{"./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js","./x64-core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/x64-core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/sha384.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./x64-core"), _dereq_("./sha512"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./x64-core", "./sha512"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	(function () {
	    // Shortcuts
	    var C = CryptoJS;
	    var C_x64 = C.x64;
	    var X64Word = C_x64.Word;
	    var X64WordArray = C_x64.WordArray;
	    var C_algo = C.algo;
	    var SHA512 = C_algo.SHA512;

	    /**
	     * SHA-384 hash algorithm.
	     */
	    var SHA384 = C_algo.SHA384 = SHA512.extend({
	        _doReset: function () {
	            this._hash = new X64WordArray.init([
	                new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),
	                new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),
	                new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),
	                new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)
	            ]);
	        },

	        _doFinalize: function () {
	            var hash = SHA512._doFinalize.call(this);

	            hash.sigBytes -= 16;

	            return hash;
	        }
	    });

	    /**
	     * Shortcut function to the hasher's object interface.
	     *
	     * @param {WordArray|string} message The message to hash.
	     *
	     * @return {WordArray} The hash.
	     *
	     * @static
	     *
	     * @example
	     *
	     *     var hash = CryptoJS.SHA384('message');
	     *     var hash = CryptoJS.SHA384(wordArray);
	     */
	    C.SHA384 = SHA512._createHelper(SHA384);

	    /**
	     * Shortcut function to the HMAC's object interface.
	     *
	     * @param {WordArray|string} message The message to hash.
	     * @param {WordArray|string} key The secret key.
	     *
	     * @return {WordArray} The HMAC.
	     *
	     * @static
	     *
	     * @example
	     *
	     *     var hmac = CryptoJS.HmacSHA384(message, key);
	     */
	    C.HmacSHA384 = SHA512._createHmacHelper(SHA384);
	}());


	return CryptoJS.SHA384;

}));
},{"./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js","./sha512":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/sha512.js","./x64-core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/x64-core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/sha512.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./x64-core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./x64-core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	(function () {
	    // Shortcuts
	    var C = CryptoJS;
	    var C_lib = C.lib;
	    var Hasher = C_lib.Hasher;
	    var C_x64 = C.x64;
	    var X64Word = C_x64.Word;
	    var X64WordArray = C_x64.WordArray;
	    var C_algo = C.algo;

	    function X64Word_create() {
	        return X64Word.create.apply(X64Word, arguments);
	    }

	    // Constants
	    var K = [
	        X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),
	        X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),
	        X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),
	        X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),
	        X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),
	        X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),
	        X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),
	        X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),
	        X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),
	        X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),
	        X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),
	        X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),
	        X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),
	        X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),
	        X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),
	        X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),
	        X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),
	        X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),
	        X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),
	        X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),
	        X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),
	        X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),
	        X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),
	        X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),
	        X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),
	        X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),
	        X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),
	        X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),
	        X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),
	        X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),
	        X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),
	        X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),
	        X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),
	        X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),
	        X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),
	        X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),
	        X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),
	        X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),
	        X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),
	        X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)
	    ];

	    // Reusable objects
	    var W = [];
	    (function () {
	        for (var i = 0; i &lt; 80; i++) {
	            W[i] = X64Word_create();
	        }
	    }());

	    /**
	     * SHA-512 hash algorithm.
	     */
	    var SHA512 = C_algo.SHA512 = Hasher.extend({
	        _doReset: function () {
	            this._hash = new X64WordArray.init([
	                new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),
	                new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),
	                new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),
	                new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)
	            ]);
	        },

	        _doProcessBlock: function (M, offset) {
	            // Shortcuts
	            var H = this._hash.words;

	            var H0 = H[0];
	            var H1 = H[1];
	            var H2 = H[2];
	            var H3 = H[3];
	            var H4 = H[4];
	            var H5 = H[5];
	            var H6 = H[6];
	            var H7 = H[7];

	            var H0h = H0.high;
	            var H0l = H0.low;
	            var H1h = H1.high;
	            var H1l = H1.low;
	            var H2h = H2.high;
	            var H2l = H2.low;
	            var H3h = H3.high;
	            var H3l = H3.low;
	            var H4h = H4.high;
	            var H4l = H4.low;
	            var H5h = H5.high;
	            var H5l = H5.low;
	            var H6h = H6.high;
	            var H6l = H6.low;
	            var H7h = H7.high;
	            var H7l = H7.low;

	            // Working variables
	            var ah = H0h;
	            var al = H0l;
	            var bh = H1h;
	            var bl = H1l;
	            var ch = H2h;
	            var cl = H2l;
	            var dh = H3h;
	            var dl = H3l;
	            var eh = H4h;
	            var el = H4l;
	            var fh = H5h;
	            var fl = H5l;
	            var gh = H6h;
	            var gl = H6l;
	            var hh = H7h;
	            var hl = H7l;

	            // Rounds
	            for (var i = 0; i &lt; 80; i++) {
	                // Shortcut
	                var Wi = W[i];

	                // Extend message
	                if (i &lt; 16) {
	                    var Wih = Wi.high = M[offset + i * 2]     | 0;
	                    var Wil = Wi.low  = M[offset + i * 2 + 1] | 0;
	                } else {
	                    // Gamma0
	                    var gamma0x  = W[i - 15];
	                    var gamma0xh = gamma0x.high;
	                    var gamma0xl = gamma0x.low;
	                    var gamma0h  = ((gamma0xh &gt;&gt;&gt; 1) | (gamma0xl &lt;&lt; 31)) ^ ((gamma0xh &gt;&gt;&gt; 8) | (gamma0xl &lt;&lt; 24)) ^ (gamma0xh &gt;&gt;&gt; 7);
	                    var gamma0l  = ((gamma0xl &gt;&gt;&gt; 1) | (gamma0xh &lt;&lt; 31)) ^ ((gamma0xl &gt;&gt;&gt; 8) | (gamma0xh &lt;&lt; 24)) ^ ((gamma0xl &gt;&gt;&gt; 7) | (gamma0xh &lt;&lt; 25));

	                    // Gamma1
	                    var gamma1x  = W[i - 2];
	                    var gamma1xh = gamma1x.high;
	                    var gamma1xl = gamma1x.low;
	                    var gamma1h  = ((gamma1xh &gt;&gt;&gt; 19) | (gamma1xl &lt;&lt; 13)) ^ ((gamma1xh &lt;&lt; 3) | (gamma1xl &gt;&gt;&gt; 29)) ^ (gamma1xh &gt;&gt;&gt; 6);
	                    var gamma1l  = ((gamma1xl &gt;&gt;&gt; 19) | (gamma1xh &lt;&lt; 13)) ^ ((gamma1xl &lt;&lt; 3) | (gamma1xh &gt;&gt;&gt; 29)) ^ ((gamma1xl &gt;&gt;&gt; 6) | (gamma1xh &lt;&lt; 26));

	                    // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
	                    var Wi7  = W[i - 7];
	                    var Wi7h = Wi7.high;
	                    var Wi7l = Wi7.low;

	                    var Wi16  = W[i - 16];
	                    var Wi16h = Wi16.high;
	                    var Wi16l = Wi16.low;

	                    var Wil = gamma0l + Wi7l;
	                    var Wih = gamma0h + Wi7h + ((Wil &gt;&gt;&gt; 0) &lt; (gamma0l &gt;&gt;&gt; 0) ? 1 : 0);
	                    var Wil = Wil + gamma1l;
	                    var Wih = Wih + gamma1h + ((Wil &gt;&gt;&gt; 0) &lt; (gamma1l &gt;&gt;&gt; 0) ? 1 : 0);
	                    var Wil = Wil + Wi16l;
	                    var Wih = Wih + Wi16h + ((Wil &gt;&gt;&gt; 0) &lt; (Wi16l &gt;&gt;&gt; 0) ? 1 : 0);

	                    Wi.high = Wih;
	                    Wi.low  = Wil;
	                }

	                var chh  = (eh &amp; fh) ^ (~eh &amp; gh);
	                var chl  = (el &amp; fl) ^ (~el &amp; gl);
	                var majh = (ah &amp; bh) ^ (ah &amp; ch) ^ (bh &amp; ch);
	                var majl = (al &amp; bl) ^ (al &amp; cl) ^ (bl &amp; cl);

	                var sigma0h = ((ah &gt;&gt;&gt; 28) | (al &lt;&lt; 4))  ^ ((ah &lt;&lt; 30)  | (al &gt;&gt;&gt; 2)) ^ ((ah &lt;&lt; 25) | (al &gt;&gt;&gt; 7));
	                var sigma0l = ((al &gt;&gt;&gt; 28) | (ah &lt;&lt; 4))  ^ ((al &lt;&lt; 30)  | (ah &gt;&gt;&gt; 2)) ^ ((al &lt;&lt; 25) | (ah &gt;&gt;&gt; 7));
	                var sigma1h = ((eh &gt;&gt;&gt; 14) | (el &lt;&lt; 18)) ^ ((eh &gt;&gt;&gt; 18) | (el &lt;&lt; 14)) ^ ((eh &lt;&lt; 23) | (el &gt;&gt;&gt; 9));
	                var sigma1l = ((el &gt;&gt;&gt; 14) | (eh &lt;&lt; 18)) ^ ((el &gt;&gt;&gt; 18) | (eh &lt;&lt; 14)) ^ ((el &lt;&lt; 23) | (eh &gt;&gt;&gt; 9));

	                // t1 = h + sigma1 + ch + K[i] + W[i]
	                var Ki  = K[i];
	                var Kih = Ki.high;
	                var Kil = Ki.low;

	                var t1l = hl + sigma1l;
	                var t1h = hh + sigma1h + ((t1l &gt;&gt;&gt; 0) &lt; (hl &gt;&gt;&gt; 0) ? 1 : 0);
	                var t1l = t1l + chl;
	                var t1h = t1h + chh + ((t1l &gt;&gt;&gt; 0) &lt; (chl &gt;&gt;&gt; 0) ? 1 : 0);
	                var t1l = t1l + Kil;
	                var t1h = t1h + Kih + ((t1l &gt;&gt;&gt; 0) &lt; (Kil &gt;&gt;&gt; 0) ? 1 : 0);
	                var t1l = t1l + Wil;
	                var t1h = t1h + Wih + ((t1l &gt;&gt;&gt; 0) &lt; (Wil &gt;&gt;&gt; 0) ? 1 : 0);

	                // t2 = sigma0 + maj
	                var t2l = sigma0l + majl;
	                var t2h = sigma0h + majh + ((t2l &gt;&gt;&gt; 0) &lt; (sigma0l &gt;&gt;&gt; 0) ? 1 : 0);

	                // Update working variables
	                hh = gh;
	                hl = gl;
	                gh = fh;
	                gl = fl;
	                fh = eh;
	                fl = el;
	                el = (dl + t1l) | 0;
	                eh = (dh + t1h + ((el &gt;&gt;&gt; 0) &lt; (dl &gt;&gt;&gt; 0) ? 1 : 0)) | 0;
	                dh = ch;
	                dl = cl;
	                ch = bh;
	                cl = bl;
	                bh = ah;
	                bl = al;
	                al = (t1l + t2l) | 0;
	                ah = (t1h + t2h + ((al &gt;&gt;&gt; 0) &lt; (t1l &gt;&gt;&gt; 0) ? 1 : 0)) | 0;
	            }

	            // Intermediate hash value
	            H0l = H0.low  = (H0l + al);
	            H0.high = (H0h + ah + ((H0l &gt;&gt;&gt; 0) &lt; (al &gt;&gt;&gt; 0) ? 1 : 0));
	            H1l = H1.low  = (H1l + bl);
	            H1.high = (H1h + bh + ((H1l &gt;&gt;&gt; 0) &lt; (bl &gt;&gt;&gt; 0) ? 1 : 0));
	            H2l = H2.low  = (H2l + cl);
	            H2.high = (H2h + ch + ((H2l &gt;&gt;&gt; 0) &lt; (cl &gt;&gt;&gt; 0) ? 1 : 0));
	            H3l = H3.low  = (H3l + dl);
	            H3.high = (H3h + dh + ((H3l &gt;&gt;&gt; 0) &lt; (dl &gt;&gt;&gt; 0) ? 1 : 0));
	            H4l = H4.low  = (H4l + el);
	            H4.high = (H4h + eh + ((H4l &gt;&gt;&gt; 0) &lt; (el &gt;&gt;&gt; 0) ? 1 : 0));
	            H5l = H5.low  = (H5l + fl);
	            H5.high = (H5h + fh + ((H5l &gt;&gt;&gt; 0) &lt; (fl &gt;&gt;&gt; 0) ? 1 : 0));
	            H6l = H6.low  = (H6l + gl);
	            H6.high = (H6h + gh + ((H6l &gt;&gt;&gt; 0) &lt; (gl &gt;&gt;&gt; 0) ? 1 : 0));
	            H7l = H7.low  = (H7l + hl);
	            H7.high = (H7h + hh + ((H7l &gt;&gt;&gt; 0) &lt; (hl &gt;&gt;&gt; 0) ? 1 : 0));
	        },

	        _doFinalize: function () {
	            // Shortcuts
	            var data = this._data;
	            var dataWords = data.words;

	            var nBitsTotal = this._nDataBytes * 8;
	            var nBitsLeft = data.sigBytes * 8;

	            // Add padding
	            dataWords[nBitsLeft &gt;&gt;&gt; 5] |= 0x80 &lt;&lt; (24 - nBitsLeft % 32);
	            dataWords[(((nBitsLeft + 128) &gt;&gt;&gt; 10) &lt;&lt; 5) + 30] = Math.floor(nBitsTotal / 0x100000000);
	            dataWords[(((nBitsLeft + 128) &gt;&gt;&gt; 10) &lt;&lt; 5) + 31] = nBitsTotal;
	            data.sigBytes = dataWords.length * 4;

	            // Hash final blocks
	            this._process();

	            // Convert hash to 32-bit word array before returning
	            var hash = this._hash.toX32();

	            // Return final computed hash
	            return hash;
	        },

	        clone: function () {
	            var clone = Hasher.clone.call(this);
	            clone._hash = this._hash.clone();

	            return clone;
	        },

	        blockSize: 1024/32
	    });

	    /**
	     * Shortcut function to the hasher's object interface.
	     *
	     * @param {WordArray|string} message The message to hash.
	     *
	     * @return {WordArray} The hash.
	     *
	     * @static
	     *
	     * @example
	     *
	     *     var hash = CryptoJS.SHA512('message');
	     *     var hash = CryptoJS.SHA512(wordArray);
	     */
	    C.SHA512 = Hasher._createHelper(SHA512);

	    /**
	     * Shortcut function to the HMAC's object interface.
	     *
	     * @param {WordArray|string} message The message to hash.
	     * @param {WordArray|string} key The secret key.
	     *
	     * @return {WordArray} The HMAC.
	     *
	     * @static
	     *
	     * @example
	     *
	     *     var hmac = CryptoJS.HmacSHA512(message, key);
	     */
	    C.HmacSHA512 = Hasher._createHmacHelper(SHA512);
	}());


	return CryptoJS.SHA512;

}));
},{"./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js","./x64-core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/x64-core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/tripledes.js":[function(_dereq_,module,exports){
;(function (root, factory, undef) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"), _dereq_("./enc-base64"), _dereq_("./md5"), _dereq_("./evpkdf"), _dereq_("./cipher-core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core", "./enc-base64", "./md5", "./evpkdf", "./cipher-core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	(function () {
	    // Shortcuts
	    var C = CryptoJS;
	    var C_lib = C.lib;
	    var WordArray = C_lib.WordArray;
	    var BlockCipher = C_lib.BlockCipher;
	    var C_algo = C.algo;

	    // Permuted Choice 1 constants
	    var PC1 = [
	        57, 49, 41, 33, 25, 17, 9,  1,
	        58, 50, 42, 34, 26, 18, 10, 2,
	        59, 51, 43, 35, 27, 19, 11, 3,
	        60, 52, 44, 36, 63, 55, 47, 39,
	        31, 23, 15, 7,  62, 54, 46, 38,
	        30, 22, 14, 6,  61, 53, 45, 37,
	        29, 21, 13, 5,  28, 20, 12, 4
	    ];

	    // Permuted Choice 2 constants
	    var PC2 = [
	        14, 17, 11, 24, 1,  5,
	        3,  28, 15, 6,  21, 10,
	        23, 19, 12, 4,  26, 8,
	        16, 7,  27, 20, 13, 2,
	        41, 52, 31, 37, 47, 55,
	        30, 40, 51, 45, 33, 48,
	        44, 49, 39, 56, 34, 53,
	        46, 42, 50, 36, 29, 32
	    ];

	    // Cumulative bit shift constants
	    var BIT_SHIFTS = [1,  2,  4,  6,  8,  10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];

	    // SBOXes and round permutation constants
	    var SBOX_P = [
	        {
	            0x0: 0x808200,
	            0x10000000: 0x8000,
	            0x20000000: 0x808002,
	            0x30000000: 0x2,
	            0x40000000: 0x200,
	            0x50000000: 0x808202,
	            0x60000000: 0x800202,
	            0x70000000: 0x800000,
	            0x80000000: 0x202,
	            0x90000000: 0x800200,
	            0xa0000000: 0x8200,
	            0xb0000000: 0x808000,
	            0xc0000000: 0x8002,
	            0xd0000000: 0x800002,
	            0xe0000000: 0x0,
	            0xf0000000: 0x8202,
	            0x8000000: 0x0,
	            0x18000000: 0x808202,
	            0x28000000: 0x8202,
	            0x38000000: 0x8000,
	            0x48000000: 0x808200,
	            0x58000000: 0x200,
	            0x68000000: 0x808002,
	            0x78000000: 0x2,
	            0x88000000: 0x800200,
	            0x98000000: 0x8200,
	            0xa8000000: 0x808000,
	            0xb8000000: 0x800202,
	            0xc8000000: 0x800002,
	            0xd8000000: 0x8002,
	            0xe8000000: 0x202,
	            0xf8000000: 0x800000,
	            0x1: 0x8000,
	            0x10000001: 0x2,
	            0x20000001: 0x808200,
	            0x30000001: 0x800000,
	            0x40000001: 0x808002,
	            0x50000001: 0x8200,
	            0x60000001: 0x200,
	            0x70000001: 0x800202,
	            0x80000001: 0x808202,
	            0x90000001: 0x808000,
	            0xa0000001: 0x800002,
	            0xb0000001: 0x8202,
	            0xc0000001: 0x202,
	            0xd0000001: 0x800200,
	            0xe0000001: 0x8002,
	            0xf0000001: 0x0,
	            0x8000001: 0x808202,
	            0x18000001: 0x808000,
	            0x28000001: 0x800000,
	            0x38000001: 0x200,
	            0x48000001: 0x8000,
	            0x58000001: 0x800002,
	            0x68000001: 0x2,
	            0x78000001: 0x8202,
	            0x88000001: 0x8002,
	            0x98000001: 0x800202,
	            0xa8000001: 0x202,
	            0xb8000001: 0x808200,
	            0xc8000001: 0x800200,
	            0xd8000001: 0x0,
	            0xe8000001: 0x8200,
	            0xf8000001: 0x808002
	        },
	        {
	            0x0: 0x40084010,
	            0x1000000: 0x4000,
	            0x2000000: 0x80000,
	            0x3000000: 0x40080010,
	            0x4000000: 0x40000010,
	            0x5000000: 0x40084000,
	            0x6000000: 0x40004000,
	            0x7000000: 0x10,
	            0x8000000: 0x84000,
	            0x9000000: 0x40004010,
	            0xa000000: 0x40000000,
	            0xb000000: 0x84010,
	            0xc000000: 0x80010,
	            0xd000000: 0x0,
	            0xe000000: 0x4010,
	            0xf000000: 0x40080000,
	            0x800000: 0x40004000,
	            0x1800000: 0x84010,
	            0x2800000: 0x10,
	            0x3800000: 0x40004010,
	            0x4800000: 0x40084010,
	            0x5800000: 0x40000000,
	            0x6800000: 0x80000,
	            0x7800000: 0x40080010,
	            0x8800000: 0x80010,
	            0x9800000: 0x0,
	            0xa800000: 0x4000,
	            0xb800000: 0x40080000,
	            0xc800000: 0x40000010,
	            0xd800000: 0x84000,
	            0xe800000: 0x40084000,
	            0xf800000: 0x4010,
	            0x10000000: 0x0,
	            0x11000000: 0x40080010,
	            0x12000000: 0x40004010,
	            0x13000000: 0x40084000,
	            0x14000000: 0x40080000,
	            0x15000000: 0x10,
	            0x16000000: 0x84010,
	            0x17000000: 0x4000,
	            0x18000000: 0x4010,
	            0x19000000: 0x80000,
	            0x1a000000: 0x80010,
	            0x1b000000: 0x40000010,
	            0x1c000000: 0x84000,
	            0x1d000000: 0x40004000,
	            0x1e000000: 0x40000000,
	            0x1f000000: 0x40084010,
	            0x10800000: 0x84010,
	            0x11800000: 0x80000,
	            0x12800000: 0x40080000,
	            0x13800000: 0x4000,
	            0x14800000: 0x40004000,
	            0x15800000: 0x40084010,
	            0x16800000: 0x10,
	            0x17800000: 0x40000000,
	            0x18800000: 0x40084000,
	            0x19800000: 0x40000010,
	            0x1a800000: 0x40004010,
	            0x1b800000: 0x80010,
	            0x1c800000: 0x0,
	            0x1d800000: 0x4010,
	            0x1e800000: 0x40080010,
	            0x1f800000: 0x84000
	        },
	        {
	            0x0: 0x104,
	            0x100000: 0x0,
	            0x200000: 0x4000100,
	            0x300000: 0x10104,
	            0x400000: 0x10004,
	            0x500000: 0x4000004,
	            0x600000: 0x4010104,
	            0x700000: 0x4010000,
	            0x800000: 0x4000000,
	            0x900000: 0x4010100,
	            0xa00000: 0x10100,
	            0xb00000: 0x4010004,
	            0xc00000: 0x4000104,
	            0xd00000: 0x10000,
	            0xe00000: 0x4,
	            0xf00000: 0x100,
	            0x80000: 0x4010100,
	            0x180000: 0x4010004,
	            0x280000: 0x0,
	            0x380000: 0x4000100,
	            0x480000: 0x4000004,
	            0x580000: 0x10000,
	            0x680000: 0x10004,
	            0x780000: 0x104,
	            0x880000: 0x4,
	            0x980000: 0x100,
	            0xa80000: 0x4010000,
	            0xb80000: 0x10104,
	            0xc80000: 0x10100,
	            0xd80000: 0x4000104,
	            0xe80000: 0x4010104,
	            0xf80000: 0x4000000,
	            0x1000000: 0x4010100,
	            0x1100000: 0x10004,
	            0x1200000: 0x10000,
	            0x1300000: 0x4000100,
	            0x1400000: 0x100,
	            0x1500000: 0x4010104,
	            0x1600000: 0x4000004,
	            0x1700000: 0x0,
	            0x1800000: 0x4000104,
	            0x1900000: 0x4000000,
	            0x1a00000: 0x4,
	            0x1b00000: 0x10100,
	            0x1c00000: 0x4010000,
	            0x1d00000: 0x104,
	            0x1e00000: 0x10104,
	            0x1f00000: 0x4010004,
	            0x1080000: 0x4000000,
	            0x1180000: 0x104,
	            0x1280000: 0x4010100,
	            0x1380000: 0x0,
	            0x1480000: 0x10004,
	            0x1580000: 0x4000100,
	            0x1680000: 0x100,
	            0x1780000: 0x4010004,
	            0x1880000: 0x10000,
	            0x1980000: 0x4010104,
	            0x1a80000: 0x10104,
	            0x1b80000: 0x4000004,
	            0x1c80000: 0x4000104,
	            0x1d80000: 0x4010000,
	            0x1e80000: 0x4,
	            0x1f80000: 0x10100
	        },
	        {
	            0x0: 0x80401000,
	            0x10000: 0x80001040,
	            0x20000: 0x401040,
	            0x30000: 0x80400000,
	            0x40000: 0x0,
	            0x50000: 0x401000,
	            0x60000: 0x80000040,
	            0x70000: 0x400040,
	            0x80000: 0x80000000,
	            0x90000: 0x400000,
	            0xa0000: 0x40,
	            0xb0000: 0x80001000,
	            0xc0000: 0x80400040,
	            0xd0000: 0x1040,
	            0xe0000: 0x1000,
	            0xf0000: 0x80401040,
	            0x8000: 0x80001040,
	            0x18000: 0x40,
	            0x28000: 0x80400040,
	            0x38000: 0x80001000,
	            0x48000: 0x401000,
	            0x58000: 0x80401040,
	            0x68000: 0x0,
	            0x78000: 0x80400000,
	            0x88000: 0x1000,
	            0x98000: 0x80401000,
	            0xa8000: 0x400000,
	            0xb8000: 0x1040,
	            0xc8000: 0x80000000,
	            0xd8000: 0x400040,
	            0xe8000: 0x401040,
	            0xf8000: 0x80000040,
	            0x100000: 0x400040,
	            0x110000: 0x401000,
	            0x120000: 0x80000040,
	            0x130000: 0x0,
	            0x140000: 0x1040,
	            0x150000: 0x80400040,
	            0x160000: 0x80401000,
	            0x170000: 0x80001040,
	            0x180000: 0x80401040,
	            0x190000: 0x80000000,
	            0x1a0000: 0x80400000,
	            0x1b0000: 0x401040,
	            0x1c0000: 0x80001000,
	            0x1d0000: 0x400000,
	            0x1e0000: 0x40,
	            0x1f0000: 0x1000,
	            0x108000: 0x80400000,
	            0x118000: 0x80401040,
	            0x128000: 0x0,
	            0x138000: 0x401000,
	            0x148000: 0x400040,
	            0x158000: 0x80000000,
	            0x168000: 0x80001040,
	            0x178000: 0x40,
	            0x188000: 0x80000040,
	            0x198000: 0x1000,
	            0x1a8000: 0x80001000,
	            0x1b8000: 0x80400040,
	            0x1c8000: 0x1040,
	            0x1d8000: 0x80401000,
	            0x1e8000: 0x400000,
	            0x1f8000: 0x401040
	        },
	        {
	            0x0: 0x80,
	            0x1000: 0x1040000,
	            0x2000: 0x40000,
	            0x3000: 0x20000000,
	            0x4000: 0x20040080,
	            0x5000: 0x1000080,
	            0x6000: 0x21000080,
	            0x7000: 0x40080,
	            0x8000: 0x1000000,
	            0x9000: 0x20040000,
	            0xa000: 0x20000080,
	            0xb000: 0x21040080,
	            0xc000: 0x21040000,
	            0xd000: 0x0,
	            0xe000: 0x1040080,
	            0xf000: 0x21000000,
	            0x800: 0x1040080,
	            0x1800: 0x21000080,
	            0x2800: 0x80,
	            0x3800: 0x1040000,
	            0x4800: 0x40000,
	            0x5800: 0x20040080,
	            0x6800: 0x21040000,
	            0x7800: 0x20000000,
	            0x8800: 0x20040000,
	            0x9800: 0x0,
	            0xa800: 0x21040080,
	            0xb800: 0x1000080,
	            0xc800: 0x20000080,
	            0xd800: 0x21000000,
	            0xe800: 0x1000000,
	            0xf800: 0x40080,
	            0x10000: 0x40000,
	            0x11000: 0x80,
	            0x12000: 0x20000000,
	            0x13000: 0x21000080,
	            0x14000: 0x1000080,
	            0x15000: 0x21040000,
	            0x16000: 0x20040080,
	            0x17000: 0x1000000,
	            0x18000: 0x21040080,
	            0x19000: 0x21000000,
	            0x1a000: 0x1040000,
	            0x1b000: 0x20040000,
	            0x1c000: 0x40080,
	            0x1d000: 0x20000080,
	            0x1e000: 0x0,
	            0x1f000: 0x1040080,
	            0x10800: 0x21000080,
	            0x11800: 0x1000000,
	            0x12800: 0x1040000,
	            0x13800: 0x20040080,
	            0x14800: 0x20000000,
	            0x15800: 0x1040080,
	            0x16800: 0x80,
	            0x17800: 0x21040000,
	            0x18800: 0x40080,
	            0x19800: 0x21040080,
	            0x1a800: 0x0,
	            0x1b800: 0x21000000,
	            0x1c800: 0x1000080,
	            0x1d800: 0x40000,
	            0x1e800: 0x20040000,
	            0x1f800: 0x20000080
	        },
	        {
	            0x0: 0x10000008,
	            0x100: 0x2000,
	            0x200: 0x10200000,
	            0x300: 0x10202008,
	            0x400: 0x10002000,
	            0x500: 0x200000,
	            0x600: 0x200008,
	            0x700: 0x10000000,
	            0x800: 0x0,
	            0x900: 0x10002008,
	            0xa00: 0x202000,
	            0xb00: 0x8,
	            0xc00: 0x10200008,
	            0xd00: 0x202008,
	            0xe00: 0x2008,
	            0xf00: 0x10202000,
	            0x80: 0x10200000,
	            0x180: 0x10202008,
	            0x280: 0x8,
	            0x380: 0x200000,
	            0x480: 0x202008,
	            0x580: 0x10000008,
	            0x680: 0x10002000,
	            0x780: 0x2008,
	            0x880: 0x200008,
	            0x980: 0x2000,
	            0xa80: 0x10002008,
	            0xb80: 0x10200008,
	            0xc80: 0x0,
	            0xd80: 0x10202000,
	            0xe80: 0x202000,
	            0xf80: 0x10000000,
	            0x1000: 0x10002000,
	            0x1100: 0x10200008,
	            0x1200: 0x10202008,
	            0x1300: 0x2008,
	            0x1400: 0x200000,
	            0x1500: 0x10000000,
	            0x1600: 0x10000008,
	            0x1700: 0x202000,
	            0x1800: 0x202008,
	            0x1900: 0x0,
	            0x1a00: 0x8,
	            0x1b00: 0x10200000,
	            0x1c00: 0x2000,
	            0x1d00: 0x10002008,
	            0x1e00: 0x10202000,
	            0x1f00: 0x200008,
	            0x1080: 0x8,
	            0x1180: 0x202000,
	            0x1280: 0x200000,
	            0x1380: 0x10000008,
	            0x1480: 0x10002000,
	            0x1580: 0x2008,
	            0x1680: 0x10202008,
	            0x1780: 0x10200000,
	            0x1880: 0x10202000,
	            0x1980: 0x10200008,
	            0x1a80: 0x2000,
	            0x1b80: 0x202008,
	            0x1c80: 0x200008,
	            0x1d80: 0x0,
	            0x1e80: 0x10000000,
	            0x1f80: 0x10002008
	        },
	        {
	            0x0: 0x100000,
	            0x10: 0x2000401,
	            0x20: 0x400,
	            0x30: 0x100401,
	            0x40: 0x2100401,
	            0x50: 0x0,
	            0x60: 0x1,
	            0x70: 0x2100001,
	            0x80: 0x2000400,
	            0x90: 0x100001,
	            0xa0: 0x2000001,
	            0xb0: 0x2100400,
	            0xc0: 0x2100000,
	            0xd0: 0x401,
	            0xe0: 0x100400,
	            0xf0: 0x2000000,
	            0x8: 0x2100001,
	            0x18: 0x0,
	            0x28: 0x2000401,
	            0x38: 0x2100400,
	            0x48: 0x100000,
	            0x58: 0x2000001,
	            0x68: 0x2000000,
	            0x78: 0x401,
	            0x88: 0x100401,
	            0x98: 0x2000400,
	            0xa8: 0x2100000,
	            0xb8: 0x100001,
	            0xc8: 0x400,
	            0xd8: 0x2100401,
	            0xe8: 0x1,
	            0xf8: 0x100400,
	            0x100: 0x2000000,
	            0x110: 0x100000,
	            0x120: 0x2000401,
	            0x130: 0x2100001,
	            0x140: 0x100001,
	            0x150: 0x2000400,
	            0x160: 0x2100400,
	            0x170: 0x100401,
	            0x180: 0x401,
	            0x190: 0x2100401,
	            0x1a0: 0x100400,
	            0x1b0: 0x1,
	            0x1c0: 0x0,
	            0x1d0: 0x2100000,
	            0x1e0: 0x2000001,
	            0x1f0: 0x400,
	            0x108: 0x100400,
	            0x118: 0x2000401,
	            0x128: 0x2100001,
	            0x138: 0x1,
	            0x148: 0x2000000,
	            0x158: 0x100000,
	            0x168: 0x401,
	            0x178: 0x2100400,
	            0x188: 0x2000001,
	            0x198: 0x2100000,
	            0x1a8: 0x0,
	            0x1b8: 0x2100401,
	            0x1c8: 0x100401,
	            0x1d8: 0x400,
	            0x1e8: 0x2000400,
	            0x1f8: 0x100001
	        },
	        {
	            0x0: 0x8000820,
	            0x1: 0x20000,
	            0x2: 0x8000000,
	            0x3: 0x20,
	            0x4: 0x20020,
	            0x5: 0x8020820,
	            0x6: 0x8020800,
	            0x7: 0x800,
	            0x8: 0x8020000,
	            0x9: 0x8000800,
	            0xa: 0x20800,
	            0xb: 0x8020020,
	            0xc: 0x820,
	            0xd: 0x0,
	            0xe: 0x8000020,
	            0xf: 0x20820,
	            0x80000000: 0x800,
	            0x80000001: 0x8020820,
	            0x80000002: 0x8000820,
	            0x80000003: 0x8000000,
	            0x80000004: 0x8020000,
	            0x80000005: 0x20800,
	            0x80000006: 0x20820,
	            0x80000007: 0x20,
	            0x80000008: 0x8000020,
	            0x80000009: 0x820,
	            0x8000000a: 0x20020,
	            0x8000000b: 0x8020800,
	            0x8000000c: 0x0,
	            0x8000000d: 0x8020020,
	            0x8000000e: 0x8000800,
	            0x8000000f: 0x20000,
	            0x10: 0x20820,
	            0x11: 0x8020800,
	            0x12: 0x20,
	            0x13: 0x800,
	            0x14: 0x8000800,
	            0x15: 0x8000020,
	            0x16: 0x8020020,
	            0x17: 0x20000,
	            0x18: 0x0,
	            0x19: 0x20020,
	            0x1a: 0x8020000,
	            0x1b: 0x8000820,
	            0x1c: 0x8020820,
	            0x1d: 0x20800,
	            0x1e: 0x820,
	            0x1f: 0x8000000,
	            0x80000010: 0x20000,
	            0x80000011: 0x800,
	            0x80000012: 0x8020020,
	            0x80000013: 0x20820,
	            0x80000014: 0x20,
	            0x80000015: 0x8020000,
	            0x80000016: 0x8000000,
	            0x80000017: 0x8000820,
	            0x80000018: 0x8020820,
	            0x80000019: 0x8000020,
	            0x8000001a: 0x8000800,
	            0x8000001b: 0x0,
	            0x8000001c: 0x20800,
	            0x8000001d: 0x820,
	            0x8000001e: 0x20020,
	            0x8000001f: 0x8020800
	        }
	    ];

	    // Masks that select the SBOX input
	    var SBOX_MASK = [
	        0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,
	        0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f
	    ];

	    /**
	     * DES block cipher algorithm.
	     */
	    var DES = C_algo.DES = BlockCipher.extend({
	        _doReset: function () {
	            // Shortcuts
	            var key = this._key;
	            var keyWords = key.words;

	            // Select 56 bits according to PC1
	            var keyBits = [];
	            for (var i = 0; i &lt; 56; i++) {
	                var keyBitPos = PC1[i] - 1;
	                keyBits[i] = (keyWords[keyBitPos &gt;&gt;&gt; 5] &gt;&gt;&gt; (31 - keyBitPos % 32)) &amp; 1;
	            }

	            // Assemble 16 subkeys
	            var subKeys = this._subKeys = [];
	            for (var nSubKey = 0; nSubKey &lt; 16; nSubKey++) {
	                // Create subkey
	                var subKey = subKeys[nSubKey] = [];

	                // Shortcut
	                var bitShift = BIT_SHIFTS[nSubKey];

	                // Select 48 bits according to PC2
	                for (var i = 0; i &lt; 24; i++) {
	                    // Select from the left 28 key bits
	                    subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] &lt;&lt; (31 - i % 6);

	                    // Select from the right 28 key bits
	                    subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] &lt;&lt; (31 - i % 6);
	                }

	                // Since each subkey is applied to an expanded 32-bit input,
	                // the subkey can be broken into 8 values scaled to 32-bits,
	                // which allows the key to be used without expansion
	                subKey[0] = (subKey[0] &lt;&lt; 1) | (subKey[0] &gt;&gt;&gt; 31);
	                for (var i = 1; i &lt; 7; i++) {
	                    subKey[i] = subKey[i] &gt;&gt;&gt; ((i - 1) * 4 + 3);
	                }
	                subKey[7] = (subKey[7] &lt;&lt; 5) | (subKey[7] &gt;&gt;&gt; 27);
	            }

	            // Compute inverse subkeys
	            var invSubKeys = this._invSubKeys = [];
	            for (var i = 0; i &lt; 16; i++) {
	                invSubKeys[i] = subKeys[15 - i];
	            }
	        },

	        encryptBlock: function (M, offset) {
	            this._doCryptBlock(M, offset, this._subKeys);
	        },

	        decryptBlock: function (M, offset) {
	            this._doCryptBlock(M, offset, this._invSubKeys);
	        },

	        _doCryptBlock: function (M, offset, subKeys) {
	            // Get input
	            this._lBlock = M[offset];
	            this._rBlock = M[offset + 1];

	            // Initial permutation
	            exchangeLR.call(this, 4,  0x0f0f0f0f);
	            exchangeLR.call(this, 16, 0x0000ffff);
	            exchangeRL.call(this, 2,  0x33333333);
	            exchangeRL.call(this, 8,  0x00ff00ff);
	            exchangeLR.call(this, 1,  0x55555555);

	            // Rounds
	            for (var round = 0; round &lt; 16; round++) {
	                // Shortcuts
	                var subKey = subKeys[round];
	                var lBlock = this._lBlock;
	                var rBlock = this._rBlock;

	                // Feistel function
	                var f = 0;
	                for (var i = 0; i &lt; 8; i++) {
	                    f |= SBOX_P[i][((rBlock ^ subKey[i]) &amp; SBOX_MASK[i]) &gt;&gt;&gt; 0];
	                }
	                this._lBlock = rBlock;
	                this._rBlock = lBlock ^ f;
	            }

	            // Undo swap from last round
	            var t = this._lBlock;
	            this._lBlock = this._rBlock;
	            this._rBlock = t;

	            // Final permutation
	            exchangeLR.call(this, 1,  0x55555555);
	            exchangeRL.call(this, 8,  0x00ff00ff);
	            exchangeRL.call(this, 2,  0x33333333);
	            exchangeLR.call(this, 16, 0x0000ffff);
	            exchangeLR.call(this, 4,  0x0f0f0f0f);

	            // Set output
	            M[offset] = this._lBlock;
	            M[offset + 1] = this._rBlock;
	        },

	        keySize: 64/32,

	        ivSize: 64/32,

	        blockSize: 64/32
	    });

	    // Swap bits across the left and right words
	    function exchangeLR(offset, mask) {
	        var t = ((this._lBlock &gt;&gt;&gt; offset) ^ this._rBlock) &amp; mask;
	        this._rBlock ^= t;
	        this._lBlock ^= t &lt;&lt; offset;
	    }

	    function exchangeRL(offset, mask) {
	        var t = ((this._rBlock &gt;&gt;&gt; offset) ^ this._lBlock) &amp; mask;
	        this._lBlock ^= t;
	        this._rBlock ^= t &lt;&lt; offset;
	    }

	    /**
	     * Shortcut functions to the cipher's object interface.
	     *
	     * @example
	     *
	     *     var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);
	     *     var plaintext  = CryptoJS.DES.decrypt(ciphertext, key, cfg);
	     */
	    C.DES = BlockCipher._createHelper(DES);

	    /**
	     * Triple-DES block cipher algorithm.
	     */
	    var TripleDES = C_algo.TripleDES = BlockCipher.extend({
	        _doReset: function () {
	            // Shortcuts
	            var key = this._key;
	            var keyWords = key.words;

	            // Create DES instances
	            this._des1 = DES.createEncryptor(WordArray.create(keyWords.slice(0, 2)));
	            this._des2 = DES.createEncryptor(WordArray.create(keyWords.slice(2, 4)));
	            this._des3 = DES.createEncryptor(WordArray.create(keyWords.slice(4, 6)));
	        },

	        encryptBlock: function (M, offset) {
	            this._des1.encryptBlock(M, offset);
	            this._des2.decryptBlock(M, offset);
	            this._des3.encryptBlock(M, offset);
	        },

	        decryptBlock: function (M, offset) {
	            this._des3.decryptBlock(M, offset);
	            this._des2.encryptBlock(M, offset);
	            this._des1.decryptBlock(M, offset);
	        },

	        keySize: 192/32,

	        ivSize: 64/32,

	        blockSize: 64/32
	    });

	    /**
	     * Shortcut functions to the cipher's object interface.
	     *
	     * @example
	     *
	     *     var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);
	     *     var plaintext  = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);
	     */
	    C.TripleDES = BlockCipher._createHelper(TripleDES);
	}());


	return CryptoJS.TripleDES;

}));
},{"./cipher-core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/cipher-core.js","./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js","./enc-base64":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/enc-base64.js","./evpkdf":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/evpkdf.js","./md5":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/md5.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/x64-core.js":[function(_dereq_,module,exports){
;(function (root, factory) {
	if (typeof exports === "object") {
		// CommonJS
		module.exports = exports = factory(_dereq_("./core"));
	}
	else if (typeof define === "function" &amp;&amp; define.amd) {
		// AMD
		define(["./core"], factory);
	}
	else {
		// Global (browser)
		factory(root.CryptoJS);
	}
}(this, function (CryptoJS) {

	(function (undefined) {
	    // Shortcuts
	    var C = CryptoJS;
	    var C_lib = C.lib;
	    var Base = C_lib.Base;
	    var X32WordArray = C_lib.WordArray;

	    /**
	     * x64 namespace.
	     */
	    var C_x64 = C.x64 = {};

	    /**
	     * A 64-bit word.
	     */
	    var X64Word = C_x64.Word = Base.extend({
	        /**
	         * Initializes a newly created 64-bit word.
	         *
	         * @param {number} high The high 32 bits.
	         * @param {number} low The low 32 bits.
	         *
	         * @example
	         *
	         *     var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);
	         */
	        init: function (high, low) {
	            this.high = high;
	            this.low = low;
	        }

	        /**
	         * Bitwise NOTs this word.
	         *
	         * @return {X64Word} A new x64-Word object after negating.
	         *
	         * @example
	         *
	         *     var negated = x64Word.not();
	         */
	        // not: function () {
	            // var high = ~this.high;
	            // var low = ~this.low;

	            // return X64Word.create(high, low);
	        // },

	        /**
	         * Bitwise ANDs this word with the passed word.
	         *
	         * @param {X64Word} word The x64-Word to AND with this word.
	         *
	         * @return {X64Word} A new x64-Word object after ANDing.
	         *
	         * @example
	         *
	         *     var anded = x64Word.and(anotherX64Word);
	         */
	        // and: function (word) {
	            // var high = this.high &amp; word.high;
	            // var low = this.low &amp; word.low;

	            // return X64Word.create(high, low);
	        // },

	        /**
	         * Bitwise ORs this word with the passed word.
	         *
	         * @param {X64Word} word The x64-Word to OR with this word.
	         *
	         * @return {X64Word} A new x64-Word object after ORing.
	         *
	         * @example
	         *
	         *     var ored = x64Word.or(anotherX64Word);
	         */
	        // or: function (word) {
	            // var high = this.high | word.high;
	            // var low = this.low | word.low;

	            // return X64Word.create(high, low);
	        // },

	        /**
	         * Bitwise XORs this word with the passed word.
	         *
	         * @param {X64Word} word The x64-Word to XOR with this word.
	         *
	         * @return {X64Word} A new x64-Word object after XORing.
	         *
	         * @example
	         *
	         *     var xored = x64Word.xor(anotherX64Word);
	         */
	        // xor: function (word) {
	            // var high = this.high ^ word.high;
	            // var low = this.low ^ word.low;

	            // return X64Word.create(high, low);
	        // },

	        /**
	         * Shifts this word n bits to the left.
	         *
	         * @param {number} n The number of bits to shift.
	         *
	         * @return {X64Word} A new x64-Word object after shifting.
	         *
	         * @example
	         *
	         *     var shifted = x64Word.shiftL(25);
	         */
	        // shiftL: function (n) {
	            // if (n &lt; 32) {
	                // var high = (this.high &lt;&lt; n) | (this.low &gt;&gt;&gt; (32 - n));
	                // var low = this.low &lt;&lt; n;
	            // } else {
	                // var high = this.low &lt;&lt; (n - 32);
	                // var low = 0;
	            // }

	            // return X64Word.create(high, low);
	        // },

	        /**
	         * Shifts this word n bits to the right.
	         *
	         * @param {number} n The number of bits to shift.
	         *
	         * @return {X64Word} A new x64-Word object after shifting.
	         *
	         * @example
	         *
	         *     var shifted = x64Word.shiftR(7);
	         */
	        // shiftR: function (n) {
	            // if (n &lt; 32) {
	                // var low = (this.low &gt;&gt;&gt; n) | (this.high &lt;&lt; (32 - n));
	                // var high = this.high &gt;&gt;&gt; n;
	            // } else {
	                // var low = this.high &gt;&gt;&gt; (n - 32);
	                // var high = 0;
	            // }

	            // return X64Word.create(high, low);
	        // },

	        /**
	         * Rotates this word n bits to the left.
	         *
	         * @param {number} n The number of bits to rotate.
	         *
	         * @return {X64Word} A new x64-Word object after rotating.
	         *
	         * @example
	         *
	         *     var rotated = x64Word.rotL(25);
	         */
	        // rotL: function (n) {
	            // return this.shiftL(n).or(this.shiftR(64 - n));
	        // },

	        /**
	         * Rotates this word n bits to the right.
	         *
	         * @param {number} n The number of bits to rotate.
	         *
	         * @return {X64Word} A new x64-Word object after rotating.
	         *
	         * @example
	         *
	         *     var rotated = x64Word.rotR(7);
	         */
	        // rotR: function (n) {
	            // return this.shiftR(n).or(this.shiftL(64 - n));
	        // },

	        /**
	         * Adds this word with the passed word.
	         *
	         * @param {X64Word} word The x64-Word to add with this word.
	         *
	         * @return {X64Word} A new x64-Word object after adding.
	         *
	         * @example
	         *
	         *     var added = x64Word.add(anotherX64Word);
	         */
	        // add: function (word) {
	            // var low = (this.low + word.low) | 0;
	            // var carry = (low &gt;&gt;&gt; 0) &lt; (this.low &gt;&gt;&gt; 0) ? 1 : 0;
	            // var high = (this.high + word.high + carry) | 0;

	            // return X64Word.create(high, low);
	        // }
	    });

	    /**
	     * An array of 64-bit words.
	     *
	     * @property {Array} words The array of CryptoJS.x64.Word objects.
	     * @property {number} sigBytes The number of significant bytes in this word array.
	     */
	    var X64WordArray = C_x64.WordArray = Base.extend({
	        /**
	         * Initializes a newly created word array.
	         *
	         * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.
	         * @param {number} sigBytes (Optional) The number of significant bytes in the words.
	         *
	         * @example
	         *
	         *     var wordArray = CryptoJS.x64.WordArray.create();
	         *
	         *     var wordArray = CryptoJS.x64.WordArray.create([
	         *         CryptoJS.x64.Word.create(0x00010203, 0x04050607),
	         *         CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)
	         *     ]);
	         *
	         *     var wordArray = CryptoJS.x64.WordArray.create([
	         *         CryptoJS.x64.Word.create(0x00010203, 0x04050607),
	         *         CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)
	         *     ], 10);
	         */
	        init: function (words, sigBytes) {
	            words = this.words = words || [];

	            if (sigBytes != undefined) {
	                this.sigBytes = sigBytes;
	            } else {
	                this.sigBytes = words.length * 8;
	            }
	        },

	        /**
	         * Converts this 64-bit word array to a 32-bit word array.
	         *
	         * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.
	         *
	         * @example
	         *
	         *     var x32WordArray = x64WordArray.toX32();
	         */
	        toX32: function () {
	            // Shortcuts
	            var x64Words = this.words;
	            var x64WordsLength = x64Words.length;

	            // Convert
	            var x32Words = [];
	            for (var i = 0; i &lt; x64WordsLength; i++) {
	                var x64Word = x64Words[i];
	                x32Words.push(x64Word.high);
	                x32Words.push(x64Word.low);
	            }

	            return X32WordArray.create(x32Words, this.sigBytes);
	        },

	        /**
	         * Creates a copy of this word array.
	         *
	         * @return {X64WordArray} The clone.
	         *
	         * @example
	         *
	         *     var clone = x64WordArray.clone();
	         */
	        clone: function () {
	            var clone = Base.clone.call(this);

	            // Clone "words" array
	            var words = clone.words = this.words.slice(0);

	            // Clone each X64Word object
	            var wordsLength = words.length;
	            for (var i = 0; i &lt; wordsLength; i++) {
	                words[i] = words[i].clone();
	            }

	            return clone;
	        }
	    });
	}());


	return CryptoJS;

}));
},{"./core":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/core.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/lodash.isequal/index.js":[function(_dereq_,module,exports){
/**
 * Lodash (Custom Build) &lt;https://lodash.com/&gt;
 * Build: `lodash modularize exports="npm" -o ./`
 * Copyright JS Foundation and other contributors &lt;https://js.foundation/&gt;
 * Released under MIT license &lt;https://lodash.com/license&gt;
 * Based on Underscore.js 1.8.3 &lt;http://underscorejs.org/LICENSE&gt;
 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters &amp; Editors
 */

/** Used as the size to enable large array optimizations. */
var LARGE_ARRAY_SIZE = 200;

/** Used to stand-in for `undefined` hash values. */
var HASH_UNDEFINED = '__lodash_hash_undefined__';

/** Used to compose bitmasks for value comparisons. */
var COMPARE_PARTIAL_FLAG = 1,
    COMPARE_UNORDERED_FLAG = 2;

/** Used as references for various `Number` constants. */
var MAX_SAFE_INTEGER = 9007199254740991;

/** `Object#toString` result references. */
var argsTag = '[object Arguments]',
    arrayTag = '[object Array]',
    asyncTag = '[object AsyncFunction]',
    boolTag = '[object Boolean]',
    dateTag = '[object Date]',
    errorTag = '[object Error]',
    funcTag = '[object Function]',
    genTag = '[object GeneratorFunction]',
    mapTag = '[object Map]',
    numberTag = '[object Number]',
    nullTag = '[object Null]',
    objectTag = '[object Object]',
    promiseTag = '[object Promise]',
    proxyTag = '[object Proxy]',
    regexpTag = '[object RegExp]',
    setTag = '[object Set]',
    stringTag = '[object String]',
    symbolTag = '[object Symbol]',
    undefinedTag = '[object Undefined]',
    weakMapTag = '[object WeakMap]';

var arrayBufferTag = '[object ArrayBuffer]',
    dataViewTag = '[object DataView]',
    float32Tag = '[object Float32Array]',
    float64Tag = '[object Float64Array]',
    int8Tag = '[object Int8Array]',
    int16Tag = '[object Int16Array]',
    int32Tag = '[object Int32Array]',
    uint8Tag = '[object Uint8Array]',
    uint8ClampedTag = '[object Uint8ClampedArray]',
    uint16Tag = '[object Uint16Array]',
    uint32Tag = '[object Uint32Array]';

/**
 * Used to match `RegExp`
 * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
 */
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;

/** Used to detect host constructors (Safari). */
var reIsHostCtor = /^\[object .+?Constructor\]$/;

/** Used to detect unsigned integer values. */
var reIsUint = /^(?:0|[1-9]\d*)$/;

/** Used to identify `toStringTag` values of typed arrays. */
var typedArrayTags = {};
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
typedArrayTags[uint32Tag] = true;
typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
typedArrayTags[errorTag] = typedArrayTags[funcTag] =
typedArrayTags[mapTag] = typedArrayTags[numberTag] =
typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
typedArrayTags[setTag] = typedArrayTags[stringTag] =
typedArrayTags[weakMapTag] = false;

/** Detect free variable `global` from Node.js. */
var freeGlobal = typeof global == 'object' &amp;&amp; global &amp;&amp; global.Object === Object &amp;&amp; global;

/** Detect free variable `self`. */
var freeSelf = typeof self == 'object' &amp;&amp; self &amp;&amp; self.Object === Object &amp;&amp; self;

/** Used as a reference to the global object. */
var root = freeGlobal || freeSelf || Function('return this')();

/** Detect free variable `exports`. */
var freeExports = typeof exports == 'object' &amp;&amp; exports &amp;&amp; !exports.nodeType &amp;&amp; exports;

/** Detect free variable `module`. */
var freeModule = freeExports &amp;&amp; typeof module == 'object' &amp;&amp; module &amp;&amp; !module.nodeType &amp;&amp; module;

/** Detect the popular CommonJS extension `module.exports`. */
var moduleExports = freeModule &amp;&amp; freeModule.exports === freeExports;

/** Detect free variable `process` from Node.js. */
var freeProcess = moduleExports &amp;&amp; freeGlobal.process;

/** Used to access faster Node.js helpers. */
var nodeUtil = (function() {
  try {
    return freeProcess &amp;&amp; freeProcess.binding &amp;&amp; freeProcess.binding('util');
  } catch (e) {}
}());

/* Node.js helper references. */
var nodeIsTypedArray = nodeUtil &amp;&amp; nodeUtil.isTypedArray;

/**
 * A specialized version of `_.filter` for arrays without support for
 * iteratee shorthands.
 *
 * @private
 * @param {Array} [array] The array to iterate over.
 * @param {Function} predicate The function invoked per iteration.
 * @returns {Array} Returns the new filtered array.
 */
function arrayFilter(array, predicate) {
  var index = -1,
      length = array == null ? 0 : array.length,
      resIndex = 0,
      result = [];

  while (++index &lt; length) {
    var value = array[index];
    if (predicate(value, index, array)) {
      result[resIndex++] = value;
    }
  }
  return result;
}

/**
 * Appends the elements of `values` to `array`.
 *
 * @private
 * @param {Array} array The array to modify.
 * @param {Array} values The values to append.
 * @returns {Array} Returns `array`.
 */
function arrayPush(array, values) {
  var index = -1,
      length = values.length,
      offset = array.length;

  while (++index &lt; length) {
    array[offset + index] = values[index];
  }
  return array;
}

/**
 * A specialized version of `_.some` for arrays without support for iteratee
 * shorthands.
 *
 * @private
 * @param {Array} [array] The array to iterate over.
 * @param {Function} predicate The function invoked per iteration.
 * @returns {boolean} Returns `true` if any element passes the predicate check,
 *  else `false`.
 */
function arraySome(array, predicate) {
  var index = -1,
      length = array == null ? 0 : array.length;

  while (++index &lt; length) {
    if (predicate(array[index], index, array)) {
      return true;
    }
  }
  return false;
}

/**
 * The base implementation of `_.times` without support for iteratee shorthands
 * or max array length checks.
 *
 * @private
 * @param {number} n The number of times to invoke `iteratee`.
 * @param {Function} iteratee The function invoked per iteration.
 * @returns {Array} Returns the array of results.
 */
function baseTimes(n, iteratee) {
  var index = -1,
      result = Array(n);

  while (++index &lt; n) {
    result[index] = iteratee(index);
  }
  return result;
}

/**
 * The base implementation of `_.unary` without support for storing metadata.
 *
 * @private
 * @param {Function} func The function to cap arguments for.
 * @returns {Function} Returns the new capped function.
 */
function baseUnary(func) {
  return function(value) {
    return func(value);
  };
}

/**
 * Checks if a `cache` value for `key` exists.
 *
 * @private
 * @param {Object} cache The cache to query.
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */
function cacheHas(cache, key) {
  return cache.has(key);
}

/**
 * Gets the value at `key` of `object`.
 *
 * @private
 * @param {Object} [object] The object to query.
 * @param {string} key The key of the property to get.
 * @returns {*} Returns the property value.
 */
function getValue(object, key) {
  return object == null ? undefined : object[key];
}

/**
 * Converts `map` to its key-value pairs.
 *
 * @private
 * @param {Object} map The map to convert.
 * @returns {Array} Returns the key-value pairs.
 */
function mapToArray(map) {
  var index = -1,
      result = Array(map.size);

  map.forEach(function(value, key) {
    result[++index] = [key, value];
  });
  return result;
}

/**
 * Creates a unary function that invokes `func` with its argument transformed.
 *
 * @private
 * @param {Function} func The function to wrap.
 * @param {Function} transform The argument transform.
 * @returns {Function} Returns the new function.
 */
function overArg(func, transform) {
  return function(arg) {
    return func(transform(arg));
  };
}

/**
 * Converts `set` to an array of its values.
 *
 * @private
 * @param {Object} set The set to convert.
 * @returns {Array} Returns the values.
 */
function setToArray(set) {
  var index = -1,
      result = Array(set.size);

  set.forEach(function(value) {
    result[++index] = value;
  });
  return result;
}

/** Used for built-in method references. */
var arrayProto = Array.prototype,
    funcProto = Function.prototype,
    objectProto = Object.prototype;

/** Used to detect overreaching core-js shims. */
var coreJsData = root['__core-js_shared__'];

/** Used to resolve the decompiled source of functions. */
var funcToString = funcProto.toString;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/** Used to detect methods masquerading as native. */
var maskSrcKey = (function() {
  var uid = /[^.]+$/.exec(coreJsData &amp;&amp; coreJsData.keys &amp;&amp; coreJsData.keys.IE_PROTO || '');
  return uid ? ('Symbol(src)_1.' + uid) : '';
}());

/**
 * Used to resolve the
 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
 * of values.
 */
var nativeObjectToString = objectProto.toString;

/** Used to detect if a method is native. */
var reIsNative = RegExp('^' +
  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&amp;')
  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
);

/** Built-in value references. */
var Buffer = moduleExports ? root.Buffer : undefined,
    Symbol = root.Symbol,
    Uint8Array = root.Uint8Array,
    propertyIsEnumerable = objectProto.propertyIsEnumerable,
    splice = arrayProto.splice,
    symToStringTag = Symbol ? Symbol.toStringTag : undefined;

/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeGetSymbols = Object.getOwnPropertySymbols,
    nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
    nativeKeys = overArg(Object.keys, Object);

/* Built-in method references that are verified to be native. */
var DataView = getNative(root, 'DataView'),
    Map = getNative(root, 'Map'),
    Promise = getNative(root, 'Promise'),
    Set = getNative(root, 'Set'),
    WeakMap = getNative(root, 'WeakMap'),
    nativeCreate = getNative(Object, 'create');

/** Used to detect maps, sets, and weakmaps. */
var dataViewCtorString = toSource(DataView),
    mapCtorString = toSource(Map),
    promiseCtorString = toSource(Promise),
    setCtorString = toSource(Set),
    weakMapCtorString = toSource(WeakMap);

/** Used to convert symbols to primitives and strings. */
var symbolProto = Symbol ? Symbol.prototype : undefined,
    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;

/**
 * Creates a hash object.
 *
 * @private
 * @constructor
 * @param {Array} [entries] The key-value pairs to cache.
 */
function Hash(entries) {
  var index = -1,
      length = entries == null ? 0 : entries.length;

  this.clear();
  while (++index &lt; length) {
    var entry = entries[index];
    this.set(entry[0], entry[1]);
  }
}

/**
 * Removes all key-value entries from the hash.
 *
 * @private
 * @name clear
 * @memberOf Hash
 */
function hashClear() {
  this.__data__ = nativeCreate ? nativeCreate(null) : {};
  this.size = 0;
}

/**
 * Removes `key` and its value from the hash.
 *
 * @private
 * @name delete
 * @memberOf Hash
 * @param {Object} hash The hash to modify.
 * @param {string} key The key of the value to remove.
 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
 */
function hashDelete(key) {
  var result = this.has(key) &amp;&amp; delete this.__data__[key];
  this.size -= result ? 1 : 0;
  return result;
}

/**
 * Gets the hash value for `key`.
 *
 * @private
 * @name get
 * @memberOf Hash
 * @param {string} key The key of the value to get.
 * @returns {*} Returns the entry value.
 */
function hashGet(key) {
  var data = this.__data__;
  if (nativeCreate) {
    var result = data[key];
    return result === HASH_UNDEFINED ? undefined : result;
  }
  return hasOwnProperty.call(data, key) ? data[key] : undefined;
}

/**
 * Checks if a hash value for `key` exists.
 *
 * @private
 * @name has
 * @memberOf Hash
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */
function hashHas(key) {
  var data = this.__data__;
  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
}

/**
 * Sets the hash `key` to `value`.
 *
 * @private
 * @name set
 * @memberOf Hash
 * @param {string} key The key of the value to set.
 * @param {*} value The value to set.
 * @returns {Object} Returns the hash instance.
 */
function hashSet(key, value) {
  var data = this.__data__;
  this.size += this.has(key) ? 0 : 1;
  data[key] = (nativeCreate &amp;&amp; value === undefined) ? HASH_UNDEFINED : value;
  return this;
}

// Add methods to `Hash`.
Hash.prototype.clear = hashClear;
Hash.prototype['delete'] = hashDelete;
Hash.prototype.get = hashGet;
Hash.prototype.has = hashHas;
Hash.prototype.set = hashSet;

/**
 * Creates an list cache object.
 *
 * @private
 * @constructor
 * @param {Array} [entries] The key-value pairs to cache.
 */
function ListCache(entries) {
  var index = -1,
      length = entries == null ? 0 : entries.length;

  this.clear();
  while (++index &lt; length) {
    var entry = entries[index];
    this.set(entry[0], entry[1]);
  }
}

/**
 * Removes all key-value entries from the list cache.
 *
 * @private
 * @name clear
 * @memberOf ListCache
 */
function listCacheClear() {
  this.__data__ = [];
  this.size = 0;
}

/**
 * Removes `key` and its value from the list cache.
 *
 * @private
 * @name delete
 * @memberOf ListCache
 * @param {string} key The key of the value to remove.
 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
 */
function listCacheDelete(key) {
  var data = this.__data__,
      index = assocIndexOf(data, key);

  if (index &lt; 0) {
    return false;
  }
  var lastIndex = data.length - 1;
  if (index == lastIndex) {
    data.pop();
  } else {
    splice.call(data, index, 1);
  }
  --this.size;
  return true;
}

/**
 * Gets the list cache value for `key`.
 *
 * @private
 * @name get
 * @memberOf ListCache
 * @param {string} key The key of the value to get.
 * @returns {*} Returns the entry value.
 */
function listCacheGet(key) {
  var data = this.__data__,
      index = assocIndexOf(data, key);

  return index &lt; 0 ? undefined : data[index][1];
}

/**
 * Checks if a list cache value for `key` exists.
 *
 * @private
 * @name has
 * @memberOf ListCache
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */
function listCacheHas(key) {
  return assocIndexOf(this.__data__, key) &gt; -1;
}

/**
 * Sets the list cache `key` to `value`.
 *
 * @private
 * @name set
 * @memberOf ListCache
 * @param {string} key The key of the value to set.
 * @param {*} value The value to set.
 * @returns {Object} Returns the list cache instance.
 */
function listCacheSet(key, value) {
  var data = this.__data__,
      index = assocIndexOf(data, key);

  if (index &lt; 0) {
    ++this.size;
    data.push([key, value]);
  } else {
    data[index][1] = value;
  }
  return this;
}

// Add methods to `ListCache`.
ListCache.prototype.clear = listCacheClear;
ListCache.prototype['delete'] = listCacheDelete;
ListCache.prototype.get = listCacheGet;
ListCache.prototype.has = listCacheHas;
ListCache.prototype.set = listCacheSet;

/**
 * Creates a map cache object to store key-value pairs.
 *
 * @private
 * @constructor
 * @param {Array} [entries] The key-value pairs to cache.
 */
function MapCache(entries) {
  var index = -1,
      length = entries == null ? 0 : entries.length;

  this.clear();
  while (++index &lt; length) {
    var entry = entries[index];
    this.set(entry[0], entry[1]);
  }
}

/**
 * Removes all key-value entries from the map.
 *
 * @private
 * @name clear
 * @memberOf MapCache
 */
function mapCacheClear() {
  this.size = 0;
  this.__data__ = {
    'hash': new Hash,
    'map': new (Map || ListCache),
    'string': new Hash
  };
}

/**
 * Removes `key` and its value from the map.
 *
 * @private
 * @name delete
 * @memberOf MapCache
 * @param {string} key The key of the value to remove.
 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
 */
function mapCacheDelete(key) {
  var result = getMapData(this, key)['delete'](key);
  this.size -= result ? 1 : 0;
  return result;
}

/**
 * Gets the map value for `key`.
 *
 * @private
 * @name get
 * @memberOf MapCache
 * @param {string} key The key of the value to get.
 * @returns {*} Returns the entry value.
 */
function mapCacheGet(key) {
  return getMapData(this, key).get(key);
}

/**
 * Checks if a map value for `key` exists.
 *
 * @private
 * @name has
 * @memberOf MapCache
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */
function mapCacheHas(key) {
  return getMapData(this, key).has(key);
}

/**
 * Sets the map `key` to `value`.
 *
 * @private
 * @name set
 * @memberOf MapCache
 * @param {string} key The key of the value to set.
 * @param {*} value The value to set.
 * @returns {Object} Returns the map cache instance.
 */
function mapCacheSet(key, value) {
  var data = getMapData(this, key),
      size = data.size;

  data.set(key, value);
  this.size += data.size == size ? 0 : 1;
  return this;
}

// Add methods to `MapCache`.
MapCache.prototype.clear = mapCacheClear;
MapCache.prototype['delete'] = mapCacheDelete;
MapCache.prototype.get = mapCacheGet;
MapCache.prototype.has = mapCacheHas;
MapCache.prototype.set = mapCacheSet;

/**
 *
 * Creates an array cache object to store unique values.
 *
 * @private
 * @constructor
 * @param {Array} [values] The values to cache.
 */
function SetCache(values) {
  var index = -1,
      length = values == null ? 0 : values.length;

  this.__data__ = new MapCache;
  while (++index &lt; length) {
    this.add(values[index]);
  }
}

/**
 * Adds `value` to the array cache.
 *
 * @private
 * @name add
 * @memberOf SetCache
 * @alias push
 * @param {*} value The value to cache.
 * @returns {Object} Returns the cache instance.
 */
function setCacheAdd(value) {
  this.__data__.set(value, HASH_UNDEFINED);
  return this;
}

/**
 * Checks if `value` is in the array cache.
 *
 * @private
 * @name has
 * @memberOf SetCache
 * @param {*} value The value to search for.
 * @returns {number} Returns `true` if `value` is found, else `false`.
 */
function setCacheHas(value) {
  return this.__data__.has(value);
}

// Add methods to `SetCache`.
SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
SetCache.prototype.has = setCacheHas;

/**
 * Creates a stack cache object to store key-value pairs.
 *
 * @private
 * @constructor
 * @param {Array} [entries] The key-value pairs to cache.
 */
function Stack(entries) {
  var data = this.__data__ = new ListCache(entries);
  this.size = data.size;
}

/**
 * Removes all key-value entries from the stack.
 *
 * @private
 * @name clear
 * @memberOf Stack
 */
function stackClear() {
  this.__data__ = new ListCache;
  this.size = 0;
}

/**
 * Removes `key` and its value from the stack.
 *
 * @private
 * @name delete
 * @memberOf Stack
 * @param {string} key The key of the value to remove.
 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
 */
function stackDelete(key) {
  var data = this.__data__,
      result = data['delete'](key);

  this.size = data.size;
  return result;
}

/**
 * Gets the stack value for `key`.
 *
 * @private
 * @name get
 * @memberOf Stack
 * @param {string} key The key of the value to get.
 * @returns {*} Returns the entry value.
 */
function stackGet(key) {
  return this.__data__.get(key);
}

/**
 * Checks if a stack value for `key` exists.
 *
 * @private
 * @name has
 * @memberOf Stack
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */
function stackHas(key) {
  return this.__data__.has(key);
}

/**
 * Sets the stack `key` to `value`.
 *
 * @private
 * @name set
 * @memberOf Stack
 * @param {string} key The key of the value to set.
 * @param {*} value The value to set.
 * @returns {Object} Returns the stack cache instance.
 */
function stackSet(key, value) {
  var data = this.__data__;
  if (data instanceof ListCache) {
    var pairs = data.__data__;
    if (!Map || (pairs.length &lt; LARGE_ARRAY_SIZE - 1)) {
      pairs.push([key, value]);
      this.size = ++data.size;
      return this;
    }
    data = this.__data__ = new MapCache(pairs);
  }
  data.set(key, value);
  this.size = data.size;
  return this;
}

// Add methods to `Stack`.
Stack.prototype.clear = stackClear;
Stack.prototype['delete'] = stackDelete;
Stack.prototype.get = stackGet;
Stack.prototype.has = stackHas;
Stack.prototype.set = stackSet;

/**
 * Creates an array of the enumerable property names of the array-like `value`.
 *
 * @private
 * @param {*} value The value to query.
 * @param {boolean} inherited Specify returning inherited property names.
 * @returns {Array} Returns the array of property names.
 */
function arrayLikeKeys(value, inherited) {
  var isArr = isArray(value),
      isArg = !isArr &amp;&amp; isArguments(value),
      isBuff = !isArr &amp;&amp; !isArg &amp;&amp; isBuffer(value),
      isType = !isArr &amp;&amp; !isArg &amp;&amp; !isBuff &amp;&amp; isTypedArray(value),
      skipIndexes = isArr || isArg || isBuff || isType,
      result = skipIndexes ? baseTimes(value.length, String) : [],
      length = result.length;

  for (var key in value) {
    if ((inherited || hasOwnProperty.call(value, key)) &amp;&amp;
        !(skipIndexes &amp;&amp; (
           // Safari 9 has enumerable `arguments.length` in strict mode.
           key == 'length' ||
           // Node.js 0.10 has enumerable non-index properties on buffers.
           (isBuff &amp;&amp; (key == 'offset' || key == 'parent')) ||
           // PhantomJS 2 has enumerable non-index properties on typed arrays.
           (isType &amp;&amp; (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
           // Skip index properties.
           isIndex(key, length)
        ))) {
      result.push(key);
    }
  }
  return result;
}

/**
 * Gets the index at which the `key` is found in `array` of key-value pairs.
 *
 * @private
 * @param {Array} array The array to inspect.
 * @param {*} key The key to search for.
 * @returns {number} Returns the index of the matched value, else `-1`.
 */
function assocIndexOf(array, key) {
  var length = array.length;
  while (length--) {
    if (eq(array[length][0], key)) {
      return length;
    }
  }
  return -1;
}

/**
 * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
 * `keysFunc` and `symbolsFunc` to get the enumerable property names and
 * symbols of `object`.
 *
 * @private
 * @param {Object} object The object to query.
 * @param {Function} keysFunc The function to get the keys of `object`.
 * @param {Function} symbolsFunc The function to get the symbols of `object`.
 * @returns {Array} Returns the array of property names and symbols.
 */
function baseGetAllKeys(object, keysFunc, symbolsFunc) {
  var result = keysFunc(object);
  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
}

/**
 * The base implementation of `getTag` without fallbacks for buggy environments.
 *
 * @private
 * @param {*} value The value to query.
 * @returns {string} Returns the `toStringTag`.
 */
function baseGetTag(value) {
  if (value == null) {
    return value === undefined ? undefinedTag : nullTag;
  }
  return (symToStringTag &amp;&amp; symToStringTag in Object(value))
    ? getRawTag(value)
    : objectToString(value);
}

/**
 * The base implementation of `_.isArguments`.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
 */
function baseIsArguments(value) {
  return isObjectLike(value) &amp;&amp; baseGetTag(value) == argsTag;
}

/**
 * The base implementation of `_.isEqual` which supports partial comparisons
 * and tracks traversed objects.
 *
 * @private
 * @param {*} value The value to compare.
 * @param {*} other The other value to compare.
 * @param {boolean} bitmask The bitmask flags.
 *  1 - Unordered comparison
 *  2 - Partial comparison
 * @param {Function} [customizer] The function to customize comparisons.
 * @param {Object} [stack] Tracks traversed `value` and `other` objects.
 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
 */
function baseIsEqual(value, other, bitmask, customizer, stack) {
  if (value === other) {
    return true;
  }
  if (value == null || other == null || (!isObjectLike(value) &amp;&amp; !isObjectLike(other))) {
    return value !== value &amp;&amp; other !== other;
  }
  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
}

/**
 * A specialized version of `baseIsEqual` for arrays and objects which performs
 * deep comparisons and tracks traversed objects enabling objects with circular
 * references to be compared.
 *
 * @private
 * @param {Object} object The object to compare.
 * @param {Object} other The other object to compare.
 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 * @param {Function} customizer The function to customize comparisons.
 * @param {Function} equalFunc The function to determine equivalents of values.
 * @param {Object} [stack] Tracks traversed `object` and `other` objects.
 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
 */
function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
  var objIsArr = isArray(object),
      othIsArr = isArray(other),
      objTag = objIsArr ? arrayTag : getTag(object),
      othTag = othIsArr ? arrayTag : getTag(other);

  objTag = objTag == argsTag ? objectTag : objTag;
  othTag = othTag == argsTag ? objectTag : othTag;

  var objIsObj = objTag == objectTag,
      othIsObj = othTag == objectTag,
      isSameTag = objTag == othTag;

  if (isSameTag &amp;&amp; isBuffer(object)) {
    if (!isBuffer(other)) {
      return false;
    }
    objIsArr = true;
    objIsObj = false;
  }
  if (isSameTag &amp;&amp; !objIsObj) {
    stack || (stack = new Stack);
    return (objIsArr || isTypedArray(object))
      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
  }
  if (!(bitmask &amp; COMPARE_PARTIAL_FLAG)) {
    var objIsWrapped = objIsObj &amp;&amp; hasOwnProperty.call(object, '__wrapped__'),
        othIsWrapped = othIsObj &amp;&amp; hasOwnProperty.call(other, '__wrapped__');

    if (objIsWrapped || othIsWrapped) {
      var objUnwrapped = objIsWrapped ? object.value() : object,
          othUnwrapped = othIsWrapped ? other.value() : other;

      stack || (stack = new Stack);
      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
    }
  }
  if (!isSameTag) {
    return false;
  }
  stack || (stack = new Stack);
  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
}

/**
 * The base implementation of `_.isNative` without bad shim checks.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a native function,
 *  else `false`.
 */
function baseIsNative(value) {
  if (!isObject(value) || isMasked(value)) {
    return false;
  }
  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
  return pattern.test(toSource(value));
}

/**
 * The base implementation of `_.isTypedArray` without Node.js optimizations.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
 */
function baseIsTypedArray(value) {
  return isObjectLike(value) &amp;&amp;
    isLength(value.length) &amp;&amp; !!typedArrayTags[baseGetTag(value)];
}

/**
 * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
 *
 * @private
 * @param {Object} object The object to query.
 * @returns {Array} Returns the array of property names.
 */
function baseKeys(object) {
  if (!isPrototype(object)) {
    return nativeKeys(object);
  }
  var result = [];
  for (var key in Object(object)) {
    if (hasOwnProperty.call(object, key) &amp;&amp; key != 'constructor') {
      result.push(key);
    }
  }
  return result;
}

/**
 * A specialized version of `baseIsEqualDeep` for arrays with support for
 * partial deep comparisons.
 *
 * @private
 * @param {Array} array The array to compare.
 * @param {Array} other The other array to compare.
 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 * @param {Function} customizer The function to customize comparisons.
 * @param {Function} equalFunc The function to determine equivalents of values.
 * @param {Object} stack Tracks traversed `array` and `other` objects.
 * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
 */
function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
  var isPartial = bitmask &amp; COMPARE_PARTIAL_FLAG,
      arrLength = array.length,
      othLength = other.length;

  if (arrLength != othLength &amp;&amp; !(isPartial &amp;&amp; othLength &gt; arrLength)) {
    return false;
  }
  // Assume cyclic values are equal.
  var stacked = stack.get(array);
  if (stacked &amp;&amp; stack.get(other)) {
    return stacked == other;
  }
  var index = -1,
      result = true,
      seen = (bitmask &amp; COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;

  stack.set(array, other);
  stack.set(other, array);

  // Ignore non-index properties.
  while (++index &lt; arrLength) {
    var arrValue = array[index],
        othValue = other[index];

    if (customizer) {
      var compared = isPartial
        ? customizer(othValue, arrValue, index, other, array, stack)
        : customizer(arrValue, othValue, index, array, other, stack);
    }
    if (compared !== undefined) {
      if (compared) {
        continue;
      }
      result = false;
      break;
    }
    // Recursively compare arrays (susceptible to call stack limits).
    if (seen) {
      if (!arraySome(other, function(othValue, othIndex) {
            if (!cacheHas(seen, othIndex) &amp;&amp;
                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
              return seen.push(othIndex);
            }
          })) {
        result = false;
        break;
      }
    } else if (!(
          arrValue === othValue ||
            equalFunc(arrValue, othValue, bitmask, customizer, stack)
        )) {
      result = false;
      break;
    }
  }
  stack['delete'](array);
  stack['delete'](other);
  return result;
}

/**
 * A specialized version of `baseIsEqualDeep` for comparing objects of
 * the same `toStringTag`.
 *
 * **Note:** This function only supports comparing values with tags of
 * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
 *
 * @private
 * @param {Object} object The object to compare.
 * @param {Object} other The other object to compare.
 * @param {string} tag The `toStringTag` of the objects to compare.
 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 * @param {Function} customizer The function to customize comparisons.
 * @param {Function} equalFunc The function to determine equivalents of values.
 * @param {Object} stack Tracks traversed `object` and `other` objects.
 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
 */
function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
  switch (tag) {
    case dataViewTag:
      if ((object.byteLength != other.byteLength) ||
          (object.byteOffset != other.byteOffset)) {
        return false;
      }
      object = object.buffer;
      other = other.buffer;

    case arrayBufferTag:
      if ((object.byteLength != other.byteLength) ||
          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
        return false;
      }
      return true;

    case boolTag:
    case dateTag:
    case numberTag:
      // Coerce booleans to `1` or `0` and dates to milliseconds.
      // Invalid dates are coerced to `NaN`.
      return eq(+object, +other);

    case errorTag:
      return object.name == other.name &amp;&amp; object.message == other.message;

    case regexpTag:
    case stringTag:
      // Coerce regexes to strings and treat strings, primitives and objects,
      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
      // for more details.
      return object == (other + '');

    case mapTag:
      var convert = mapToArray;

    case setTag:
      var isPartial = bitmask &amp; COMPARE_PARTIAL_FLAG;
      convert || (convert = setToArray);

      if (object.size != other.size &amp;&amp; !isPartial) {
        return false;
      }
      // Assume cyclic values are equal.
      var stacked = stack.get(object);
      if (stacked) {
        return stacked == other;
      }
      bitmask |= COMPARE_UNORDERED_FLAG;

      // Recursively compare objects (susceptible to call stack limits).
      stack.set(object, other);
      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
      stack['delete'](object);
      return result;

    case symbolTag:
      if (symbolValueOf) {
        return symbolValueOf.call(object) == symbolValueOf.call(other);
      }
  }
  return false;
}

/**
 * A specialized version of `baseIsEqualDeep` for objects with support for
 * partial deep comparisons.
 *
 * @private
 * @param {Object} object The object to compare.
 * @param {Object} other The other object to compare.
 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 * @param {Function} customizer The function to customize comparisons.
 * @param {Function} equalFunc The function to determine equivalents of values.
 * @param {Object} stack Tracks traversed `object` and `other` objects.
 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
 */
function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
  var isPartial = bitmask &amp; COMPARE_PARTIAL_FLAG,
      objProps = getAllKeys(object),
      objLength = objProps.length,
      othProps = getAllKeys(other),
      othLength = othProps.length;

  if (objLength != othLength &amp;&amp; !isPartial) {
    return false;
  }
  var index = objLength;
  while (index--) {
    var key = objProps[index];
    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
      return false;
    }
  }
  // Assume cyclic values are equal.
  var stacked = stack.get(object);
  if (stacked &amp;&amp; stack.get(other)) {
    return stacked == other;
  }
  var result = true;
  stack.set(object, other);
  stack.set(other, object);

  var skipCtor = isPartial;
  while (++index &lt; objLength) {
    key = objProps[index];
    var objValue = object[key],
        othValue = other[key];

    if (customizer) {
      var compared = isPartial
        ? customizer(othValue, objValue, key, other, object, stack)
        : customizer(objValue, othValue, key, object, other, stack);
    }
    // Recursively compare objects (susceptible to call stack limits).
    if (!(compared === undefined
          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
          : compared
        )) {
      result = false;
      break;
    }
    skipCtor || (skipCtor = key == 'constructor');
  }
  if (result &amp;&amp; !skipCtor) {
    var objCtor = object.constructor,
        othCtor = other.constructor;

    // Non `Object` object instances with different constructors are not equal.
    if (objCtor != othCtor &amp;&amp;
        ('constructor' in object &amp;&amp; 'constructor' in other) &amp;&amp;
        !(typeof objCtor == 'function' &amp;&amp; objCtor instanceof objCtor &amp;&amp;
          typeof othCtor == 'function' &amp;&amp; othCtor instanceof othCtor)) {
      result = false;
    }
  }
  stack['delete'](object);
  stack['delete'](other);
  return result;
}

/**
 * Creates an array of own enumerable property names and symbols of `object`.
 *
 * @private
 * @param {Object} object The object to query.
 * @returns {Array} Returns the array of property names and symbols.
 */
function getAllKeys(object) {
  return baseGetAllKeys(object, keys, getSymbols);
}

/**
 * Gets the data for `map`.
 *
 * @private
 * @param {Object} map The map to query.
 * @param {string} key The reference key.
 * @returns {*} Returns the map data.
 */
function getMapData(map, key) {
  var data = map.__data__;
  return isKeyable(key)
    ? data[typeof key == 'string' ? 'string' : 'hash']
    : data.map;
}

/**
 * Gets the native function at `key` of `object`.
 *
 * @private
 * @param {Object} object The object to query.
 * @param {string} key The key of the method to get.
 * @returns {*} Returns the function if it's native, else `undefined`.
 */
function getNative(object, key) {
  var value = getValue(object, key);
  return baseIsNative(value) ? value : undefined;
}

/**
 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
 *
 * @private
 * @param {*} value The value to query.
 * @returns {string} Returns the raw `toStringTag`.
 */
function getRawTag(value) {
  var isOwn = hasOwnProperty.call(value, symToStringTag),
      tag = value[symToStringTag];

  try {
    value[symToStringTag] = undefined;
    var unmasked = true;
  } catch (e) {}

  var result = nativeObjectToString.call(value);
  if (unmasked) {
    if (isOwn) {
      value[symToStringTag] = tag;
    } else {
      delete value[symToStringTag];
    }
  }
  return result;
}

/**
 * Creates an array of the own enumerable symbols of `object`.
 *
 * @private
 * @param {Object} object The object to query.
 * @returns {Array} Returns the array of symbols.
 */
var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
  if (object == null) {
    return [];
  }
  object = Object(object);
  return arrayFilter(nativeGetSymbols(object), function(symbol) {
    return propertyIsEnumerable.call(object, symbol);
  });
};

/**
 * Gets the `toStringTag` of `value`.
 *
 * @private
 * @param {*} value The value to query.
 * @returns {string} Returns the `toStringTag`.
 */
var getTag = baseGetTag;

// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js &lt; 6.
if ((DataView &amp;&amp; getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
    (Map &amp;&amp; getTag(new Map) != mapTag) ||
    (Promise &amp;&amp; getTag(Promise.resolve()) != promiseTag) ||
    (Set &amp;&amp; getTag(new Set) != setTag) ||
    (WeakMap &amp;&amp; getTag(new WeakMap) != weakMapTag)) {
  getTag = function(value) {
    var result = baseGetTag(value),
        Ctor = result == objectTag ? value.constructor : undefined,
        ctorString = Ctor ? toSource(Ctor) : '';

    if (ctorString) {
      switch (ctorString) {
        case dataViewCtorString: return dataViewTag;
        case mapCtorString: return mapTag;
        case promiseCtorString: return promiseTag;
        case setCtorString: return setTag;
        case weakMapCtorString: return weakMapTag;
      }
    }
    return result;
  };
}

/**
 * Checks if `value` is a valid array-like index.
 *
 * @private
 * @param {*} value The value to check.
 * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
 * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
 */
function isIndex(value, length) {
  length = length == null ? MAX_SAFE_INTEGER : length;
  return !!length &amp;&amp;
    (typeof value == 'number' || reIsUint.test(value)) &amp;&amp;
    (value &gt; -1 &amp;&amp; value % 1 == 0 &amp;&amp; value &lt; length);
}

/**
 * Checks if `value` is suitable for use as unique object key.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
 */
function isKeyable(value) {
  var type = typeof value;
  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
    ? (value !== '__proto__')
    : (value === null);
}

/**
 * Checks if `func` has its source masked.
 *
 * @private
 * @param {Function} func The function to check.
 * @returns {boolean} Returns `true` if `func` is masked, else `false`.
 */
function isMasked(func) {
  return !!maskSrcKey &amp;&amp; (maskSrcKey in func);
}

/**
 * Checks if `value` is likely a prototype object.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
 */
function isPrototype(value) {
  var Ctor = value &amp;&amp; value.constructor,
      proto = (typeof Ctor == 'function' &amp;&amp; Ctor.prototype) || objectProto;

  return value === proto;
}

/**
 * Converts `value` to a string using `Object.prototype.toString`.
 *
 * @private
 * @param {*} value The value to convert.
 * @returns {string} Returns the converted string.
 */
function objectToString(value) {
  return nativeObjectToString.call(value);
}

/**
 * Converts `func` to its source code.
 *
 * @private
 * @param {Function} func The function to convert.
 * @returns {string} Returns the source code.
 */
function toSource(func) {
  if (func != null) {
    try {
      return funcToString.call(func);
    } catch (e) {}
    try {
      return (func + '');
    } catch (e) {}
  }
  return '';
}

/**
 * Performs a
 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
 * comparison between two values to determine if they are equivalent.
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to compare.
 * @param {*} other The other value to compare.
 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
 * @example
 *
 * var object = { 'a': 1 };
 * var other = { 'a': 1 };
 *
 * _.eq(object, object);
 * // =&gt; true
 *
 * _.eq(object, other);
 * // =&gt; false
 *
 * _.eq('a', 'a');
 * // =&gt; true
 *
 * _.eq('a', Object('a'));
 * // =&gt; false
 *
 * _.eq(NaN, NaN);
 * // =&gt; true
 */
function eq(value, other) {
  return value === other || (value !== value &amp;&amp; other !== other);
}

/**
 * Checks if `value` is likely an `arguments` object.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
 *  else `false`.
 * @example
 *
 * _.isArguments(function() { return arguments; }());
 * // =&gt; true
 *
 * _.isArguments([1, 2, 3]);
 * // =&gt; false
 */
var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
  return isObjectLike(value) &amp;&amp; hasOwnProperty.call(value, 'callee') &amp;&amp;
    !propertyIsEnumerable.call(value, 'callee');
};

/**
 * Checks if `value` is classified as an `Array` object.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is an array, else `false`.
 * @example
 *
 * _.isArray([1, 2, 3]);
 * // =&gt; true
 *
 * _.isArray(document.body.children);
 * // =&gt; false
 *
 * _.isArray('abc');
 * // =&gt; false
 *
 * _.isArray(_.noop);
 * // =&gt; false
 */
var isArray = Array.isArray;

/**
 * Checks if `value` is array-like. A value is considered array-like if it's
 * not a function and has a `value.length` that's an integer greater than or
 * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
 * @example
 *
 * _.isArrayLike([1, 2, 3]);
 * // =&gt; true
 *
 * _.isArrayLike(document.body.children);
 * // =&gt; true
 *
 * _.isArrayLike('abc');
 * // =&gt; true
 *
 * _.isArrayLike(_.noop);
 * // =&gt; false
 */
function isArrayLike(value) {
  return value != null &amp;&amp; isLength(value.length) &amp;&amp; !isFunction(value);
}

/**
 * Checks if `value` is a buffer.
 *
 * @static
 * @memberOf _
 * @since 4.3.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
 * @example
 *
 * _.isBuffer(new Buffer(2));
 * // =&gt; true
 *
 * _.isBuffer(new Uint8Array(2));
 * // =&gt; false
 */
var isBuffer = nativeIsBuffer || stubFalse;

/**
 * Performs a deep comparison between two values to determine if they are
 * equivalent.
 *
 * **Note:** This method supports comparing arrays, array buffers, booleans,
 * date objects, error objects, maps, numbers, `Object` objects, regexes,
 * sets, strings, symbols, and typed arrays. `Object` objects are compared
 * by their own, not inherited, enumerable properties. Functions and DOM
 * nodes are compared by strict equality, i.e. `===`.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to compare.
 * @param {*} other The other value to compare.
 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
 * @example
 *
 * var object = { 'a': 1 };
 * var other = { 'a': 1 };
 *
 * _.isEqual(object, other);
 * // =&gt; true
 *
 * object === other;
 * // =&gt; false
 */
function isEqual(value, other) {
  return baseIsEqual(value, other);
}

/**
 * Checks if `value` is classified as a `Function` object.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a function, else `false`.
 * @example
 *
 * _.isFunction(_);
 * // =&gt; true
 *
 * _.isFunction(/abc/);
 * // =&gt; false
 */
function isFunction(value) {
  if (!isObject(value)) {
    return false;
  }
  // The use of `Object#toString` avoids issues with the `typeof` operator
  // in Safari 9 which returns 'object' for typed arrays and other constructors.
  var tag = baseGetTag(value);
  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
}

/**
 * Checks if `value` is a valid array-like length.
 *
 * **Note:** This method is loosely based on
 * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
 * @example
 *
 * _.isLength(3);
 * // =&gt; true
 *
 * _.isLength(Number.MIN_VALUE);
 * // =&gt; false
 *
 * _.isLength(Infinity);
 * // =&gt; false
 *
 * _.isLength('3');
 * // =&gt; false
 */
function isLength(value) {
  return typeof value == 'number' &amp;&amp;
    value &gt; -1 &amp;&amp; value % 1 == 0 &amp;&amp; value &lt;= MAX_SAFE_INTEGER;
}

/**
 * Checks if `value` is the
 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is an object, else `false`.
 * @example
 *
 * _.isObject({});
 * // =&gt; true
 *
 * _.isObject([1, 2, 3]);
 * // =&gt; true
 *
 * _.isObject(_.noop);
 * // =&gt; true
 *
 * _.isObject(null);
 * // =&gt; false
 */
function isObject(value) {
  var type = typeof value;
  return value != null &amp;&amp; (type == 'object' || type == 'function');
}

/**
 * Checks if `value` is object-like. A value is object-like if it's not `null`
 * and has a `typeof` result of "object".
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
 * @example
 *
 * _.isObjectLike({});
 * // =&gt; true
 *
 * _.isObjectLike([1, 2, 3]);
 * // =&gt; true
 *
 * _.isObjectLike(_.noop);
 * // =&gt; false
 *
 * _.isObjectLike(null);
 * // =&gt; false
 */
function isObjectLike(value) {
  return value != null &amp;&amp; typeof value == 'object';
}

/**
 * Checks if `value` is classified as a typed array.
 *
 * @static
 * @memberOf _
 * @since 3.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
 * @example
 *
 * _.isTypedArray(new Uint8Array);
 * // =&gt; true
 *
 * _.isTypedArray([]);
 * // =&gt; false
 */
var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;

/**
 * Creates an array of the own enumerable property names of `object`.
 *
 * **Note:** Non-object values are coerced to objects. See the
 * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
 * for more details.
 *
 * @static
 * @since 0.1.0
 * @memberOf _
 * @category Object
 * @param {Object} object The object to query.
 * @returns {Array} Returns the array of property names.
 * @example
 *
 * function Foo() {
 *   this.a = 1;
 *   this.b = 2;
 * }
 *
 * Foo.prototype.c = 3;
 *
 * _.keys(new Foo);
 * // =&gt; ['a', 'b'] (iteration order is not guaranteed)
 *
 * _.keys('hi');
 * // =&gt; ['0', '1']
 */
function keys(object) {
  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
}

/**
 * This method returns a new empty array.
 *
 * @static
 * @memberOf _
 * @since 4.13.0
 * @category Util
 * @returns {Array} Returns the new empty array.
 * @example
 *
 * var arrays = _.times(2, _.stubArray);
 *
 * console.log(arrays);
 * // =&gt; [[], []]
 *
 * console.log(arrays[0] === arrays[1]);
 * // =&gt; false
 */
function stubArray() {
  return [];
}

/**
 * This method returns `false`.
 *
 * @static
 * @memberOf _
 * @since 4.13.0
 * @category Util
 * @returns {boolean} Returns `false`.
 * @example
 *
 * _.times(2, _.stubFalse);
 * // =&gt; [false, false]
 */
function stubFalse() {
  return false;
}

module.exports = isEqual;

},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/storage-factory/lib/index.js":[function(_dereq_,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.storageFactory = void 0;
function storageFactory(getStorage) {
    var inMemoryStorage = {};
    function isSupported() {
        try {
            var testKey = "__some_random_key_you_are_not_going_to_use__";
            getStorage().setItem(testKey, testKey);
            getStorage().removeItem(testKey);
            return true;
        }
        catch (e) {
            return false;
        }
    }
    function clear() {
        if (isSupported()) {
            getStorage().clear();
        }
        else {
            inMemoryStorage = {};
        }
    }
    function getItem(name) {
        if (isSupported()) {
            return getStorage().getItem(name);
        }
        if (inMemoryStorage.hasOwnProperty(name)) {
            return inMemoryStorage[name];
        }
        return null;
    }
    function key(index) {
        if (isSupported()) {
            return getStorage().key(index);
        }
        else {
            return Object.keys(inMemoryStorage)[index] || null;
        }
    }
    function removeItem(name) {
        if (isSupported()) {
            getStorage().removeItem(name);
        }
        else {
            delete inMemoryStorage[name];
        }
    }
    function setItem(name, value) {
        if (isSupported()) {
            getStorage().setItem(name, value);
        }
        else {
            inMemoryStorage[name] = String(value);
        }
    }
    function length() {
        if (isSupported()) {
            return getStorage().length;
        }
        else {
            return Object.keys(inMemoryStorage).length;
        }
    }
    return {
        getItem: getItem,
        setItem: setItem,
        removeItem: removeItem,
        clear: clear,
        key: key,
        get length() {
            return length();
        },
    };
}
exports.storageFactory = storageFactory;

},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/webstorage-polyfill/index.js":[function(_dereq_,module,exports){
(function() {
  'use strict';
  try {
    // Test webstorage existence.
    if (!window.localStorage || !window.sessionStorage) throw "exception";
    // Test webstorage accessibility - Needed for Safari private browsing.
    window.localStorage.setItem('storage_test', 1);
    window.localStorage.removeItem('storage_test');
  } catch (e) {
    (function() {
      function createCookie(name, value, days) {
        var expires;
        if (days) {
          var date = new Date();
          date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
          expires = "; expires=" + date.toGMTString();
        } else {
          expires = "";
        }
        document.cookie = encodeURIComponent(name) + "=" + encodeURIComponent(value) + expires + "; path=/";
      }

      function readCookie(name) {
        var results = document.cookie.match('(^|;) ?'+encodeURIComponent(name)+'=([^;]*)(;|$)');
        return results ? decodeURIComponent(results[2]) : null;
      }

      function Storage(type) {
        function setData(data) {
          data = JSON.stringify(data);
          if (type === 'session') {
            createCookie(getSessionName(), data);
          } else {
            createCookie('localStorage', data, 365);
          }
        }

        function clearData() {
          if (type === 'session') {
            createCookie(getSessionName(), '');
          } else {
            createCookie('localStorage', '', 365);
          }
        }

        function getData() {
          var data = readCookie(type === 'session' ? getSessionName() : 'localStorage');
          return data ? JSON.parse(data) : {};
        }

        function getSessionName() {
          if (!window.name) {
            window.name = Math.random()+'-'+(new Date().getTime());
          }
          return 'sessionStorage-' + window.name;
        }

        // Initialize if there's already data.
        var data = getData();

        var obj = {
          POLYFILLED: true,
          length: 0,
          clear: function() {
            data = {};
            this.length = 0;
            clearData();
          },
          getItem: function(key) {
            return Object.prototype.hasOwnProperty.call(data, key) ? data[key] : null;
          },
          key: function(i) {
            var ctr = 0;
            for (var k in data) {
              if (ctr++ == i)
                return k;
            }
            return null;
          },
          removeItem: function(key) {
            if (Object.prototype.hasOwnProperty.call(data, key)) {
              delete data[key];
              this.length--;
              setData(data);
            }
          },
          setItem: function(key, value) {
            if (!Object.prototype.hasOwnProperty.call(data, key)) {
              this.length++;
            }
            data[key] = ''+value;
            setData(data);
          }
        };
        return obj;
      }

      var localStorage = new Storage('local');
      var sessionStorage = new Storage('session');
      try {
        window.localStorage = localStorage;
        window.sessionStorage = sessionStorage;
      } catch(e) {}
      try {
        // For Safari private browsing need to also set the proto value.
        window.localStorage.__proto__ = localStorage;
        window.sessionStorage.__proto__ = sessionStorage;
      } catch(e) {}
    })();
  }
})();

},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/analytics-events.js":[function(_dereq_,module,exports){
const Util = _dereq_('./utilities.js');
const storage = _dereq_('./storage.js');
const client = Util.memoize(() =&gt; {
  return _dereq_('./sdk/sentry-client.js');
});
const Config = _dereq_('./config.js');

const facebookPixelId = '2434689970104116';
const googleAnalyticsId = 'UA-124656779-3';
const googleAdsId = 'AW-711284525';

const initializeEventListener = function () {
  const batchEventsToPear = true;
  let events = [];

  const getEventsBody = () =&gt; {
    return btoa(JSON.stringify(events));
  };

  if (batchEventsToPear) {
    window.addEventListener('beforeunload', (event) =&gt; {
      // https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon
      if (!navigator.sendBeacon || events.length == 0) return;

      const url = Config.API_URL + '/v1/e';
      const data = getEventsBody();

      // Send the beacon
      navigator.sendBeacon(url, data);
    });

    setInterval(() =&gt; {
      if (events.length &gt; 0) {
        Util.postJson(Config.API_URL + '/v1/e', getEventsBody());
        events = [];
      }
    }, 5000);
  }
  try {
    window.addEventListener('message', function (event) {
      if ('pear-event' == event.data.action) {
        const name = event.data.name;
        const params = event.data.params ? event.data.params : {};
        if (params.pearSession) {
          Util.addPearSession(params.pearSession);
        } else {
          params.pearSession = Util.getPearSession();
        }
        if (!params.href) {
          params.href = window.location.href;
        }
        if (Config.env != 'production') {
          console.log('Recording event: ' + name + ': ' + (params ? JSON.stringify(params) : null));
        }
        if (window.fbq) {
          if (params.fbDefault) {
            window.fbq('trackSingle', facebookPixelId, name, params);
          } else {
            window.fbq('trackSingleCustom', facebookPixelId, name, params);
          }
        }
        if (window.gtag &amp;&amp; !params.fbOnly) {
          window.gtag('event', name, Object.assign({
            send_to: [googleAnalyticsId, googleAdsId],
          }, params));
        }
        if (window.pearFS &amp;&amp; !params.fbOnly) {
          window.pearFS.event(name, params);
        }
        if (!params.fbOnly) {
          const e = {
            name: name,
            value: params,
            epoch: Date.now(),
          };
          if (!batchEventsToPear) {
            Util.postJson(Config.API_URL + '/v1/event', e);
          } else {
            events.push(e);
          }
        }
      }
    }, false);
  } catch (e) {
    client().captureException(e);
  }
};

const sendEvent = module.exports.sendEvent = function (name, params) {
  try {
    if (!params) {
      params = {};
    }
    if (Util.inIframe()) {
      if (!params.iframeHref) {
        params.iframeHref = window.location.href;
      }
    } else {
      if (!params.href) {
        params.href = window.location.href;
      }
    }

    if (!params.pearSession &amp;&amp; Util.getPearSession()) {
      params.pearSession = Util.getPearSession();
    }

    const target = Util.inIframe() ? window.parent : window;
    target.postMessage({
      action: 'pear-event',
      name: name,
      params: params,
    }, '*');
  } catch (e) {
    client().captureException(e);
  }
};

module.exports.identifyConsumer = function (id, name, email) {
  try {
    const extraData = {};
    if (name) {
      extraData.displayName = name;
    }
    if (email) {
      extraData.email = email;
    }

    if (window.pearFS) {
      window.pearFS.identify(id + '', extraData);
    }
    if (window.fbq) {
      window.fbq('init', facebookPixelId, {
        uid: id + '',
      });
      window.fbq('setUserProperties', facebookPixelId, extraData);
    }
    if (window.gtag) {
      window.gtag('config', googleAnalyticsId, {
        'user_id': id + '',
      });
    }
  } catch (e) {
    client().captureException(e);
  }
};

module.exports.sendPearOfferUnavailable = function () {
  try {
    sendEvent('PearOfferUnavailable', {});
  } catch (e) {
    client().captureException(e);
  }
};

module.exports.sendPearLoginEvent = function (userId, name, email, offerId) {
  try {
    const params = {};
    if (userId) {
      params.userId = userId;
    }
    if (name) {
      params.name = name;
    }
    if (email) {
      params.email = email;
    }
    if (offerId) {
      params.offerId = offerId;
    }
    sendEvent('PearLogin', params);
  } catch (e) {
    client().captureException(e);
  }
};

module.exports.sendPearRegisterEvent = function (userId, name, email, offerId) {
  try {
    const params = {};
    if (userId) {
      params.userId = userId;
    }
    if (name) {
      params.name = name;
    }
    if (email) {
      params.email = email;
    }
    if (offerId) {
      params.offerId = offerId;
    }
    sendEvent('PearRegister', params);
  } catch (e) {
    client().captureException(e);
  }
};

module.exports.sendPearAddToCartEvent = function (userId, name, email, offerId) {
  try {
    const params = {};
    if (userId) {
      params.userId = userId;
    }
    if (name) {
      params.name = name;
    }
    if (email) {
      params.email = email;
    }
    if (offerId) {
      params.offerId = offerId;
    }
    sendEvent('PearAddToCart', params);
  } catch (e) {
    client().captureException(e);
  }
};

module.exports.sendRegisterEvent = function (userId, name, email, offerId) {
  try {
    const params = { fbDefault: true };
    if (userId) {
      params.userId = userId;
    }
    if (name) {
      params.name = name;
    }
    if (email) {
      params.email = email;
    }
    if (offerId) {
      params.offerId = offerId;
    }
    sendEvent('CompleteRegistration', params);
  } catch (e) {
    client().captureException(e);
  }
};

module.exports.sendLoginEvent = function (userId, name, email, offerId) {
  try {
    const params = {};
    if (userId) {
      params.userId = userId;
    }
    if (name) {
      params.name = name;
    }
    if (email) {
      params.email = email;
    }
    if (offerId) {
      params.offerId = offerId;
    }
    sendEvent('Login', params);
  } catch (e) {
    client().captureException(e);
  }
};

module.exports.sendDirectPurchaseEvent = function (amount, offerId) {
  try {
    const params = {};
    if (offerId) {
      params.offerId = offerId;
    }
    if (amount) {
      params.currency = 'USD';
      params.value = amount;
    }
    sendEvent('PearDirectPurchase', params);
  } catch (e) {
    client().captureException(e);
  }
};

module.exports.sendBrandPurchaseEvent = function (brand, amount) {
  try {
    if (brand == 'PostConsumerBrands') {
      brand = '';
    }
    const params = {};
    if (amount) {
      params.currency = 'USD';
      params.value = amount;
    }
    sendEvent(brand + 'PearPurchase', params);
  } catch (e) {
    client().captureException(e);
  }
};

module.exports.sendLeadEvent = function (email, phone) {
  try {
    const params = {};
    if (email) {
      params.email = email;
    }
    if (phone) {
      params.phone = phone;
    }
    sendEvent('PearLead', params);
  } catch (e) {
    client().captureException(e);
  }
};

module.exports.sendModalOpenEvent = function () {
  try {
    sendEvent('PearModalOpen');
  } catch (e) {
    client().captureException(e);
  }
};

module.exports.sendPageviewEvent = function () {
  try {
    sendEvent('PearPageView');
  } catch (e) {
    client().captureException(e);
  }
};

module.exports.sendModalCancelledEvent = function () {
  try {
    sendEvent('PearModalCancelled');
  } catch (e) {
    client().captureException(e);
  }
};

module.exports.sendCheckoutEvent = function () {
  try {
    sendEvent('PearCheckout');
  } catch (e) {
    client().captureException(e);
  }
};


module.exports.sendPushDisplayed = function (message) {
  try {
    sendEvent('PearPushDisplayed', { message: message });
  } catch (e) {
    client().captureException(e);
  }
};

module.exports.sendPushClicked = function (message) {
  try {
    sendEvent('PearPushClicked', { message: message });
  } catch (e) {
    client().captureException(e);
  }
};

module.exports.sendStepClicked = function (message) {
  try {
    sendEvent('PearStepClicked', { message: message });
  } catch (e) {
    client().captureException(e);
  }
};

module.exports.sendHelpClosedEvent = function () {
  try {
    sendEvent('PearHelpClosed');
  } catch (e) {
    client().captureException(e);
  }
};

module.exports.sendPushClosedEvent = function () {
  try {
    sendEvent('PearPushClosed');
  } catch (e) {
    client().captureException(e);
  }
};

module.exports.sendPushOpenedEvent = function () {
  try {
    sendEvent('PearPushOpened');
  } catch (e) {
    client().captureException(e);
  }
};

module.exports.sendHelpOpenedEvent = function () {
  try {
    sendEvent('PearHelpOpened');
  } catch (e) {
    client().captureException(e);
  }
};

// eslint-disable-next-line no-unused-vars
module.exports.sendPearSessionStartEvent = function () {
  try {
    if (storage.session.getItem('pearSessionStartEventSent') != 'true') {
      sendEvent('PearSessionStart');
      storage.session.setItem('pearSessionStartEventSent', 'true');
    }
  } catch (e) {
    client().captureException(e);
  }
};

const installFS = function () {/* eslint-disable */
  window['_fs_debug'] = false;
  window['_fs_is_outer_script'] = true;
  window['_fs_host'] = 'fullstory.com';
  window['_fs_org'] = 'J4CH7';
  window['_fs_namespace'] = 'pearFS';
  (function (m, n, e, t, l, o, g, y) {
    if (e in m) {
      if (m.console &amp;&amp; m.console.log) {
        m.console.log('FullStory namespace conflict. Please set window["_fs_namespace"].');
      }
      return;
    }
    g = m[e] = function (a, b, s) {
      g.q ? g.q.push([a, b, s]) : g._api(a, b, s);
    };
    g.q = [];
    o = n.createElement(t);
    o.async = 1;
    o.src = 'https://' + _fs_host + '/s/fs.js';
    y = n.getElementsByTagName(t)[0];
    y.parentNode.insertBefore(o, y);
    g.identify = function (i, v, s) {
      g(l, {
        uid: i
      }, s);
      if (v)
        g(l, v, s);
    };
    g.setUserVars = function (v, s) {
      g(l, v, s);
    };
    g.event = function (i, v, s) {
      g('event', {
        n: i,
        p: v
      }, s);
    };
    g.shutdown = function () {
      g('rec', !1);
    };
    g.restart = function () {
      g('rec', !0);
    };
    g.consent = function (a) {
      g('consent', !arguments.length || a);
    };
    g.identifyAccount = function (i, v) {
      o = 'account';
      v = v || {};
      v.acctId = i;
      g(o, v);
    };
    g.clearUserCookie = function () {
    };
  })(window, document, window['_fs_namespace'], 'script', 'user');
};

const installGtag = function () {
  var element = document.querySelector("script[src^='https://www.googletagmanager.com/gtag/js']");
  if (!element) {
    var newScript = document.createElement("script");
    newScript.type = "text/javascript";
    newScript.setAttribute("async", "true");
    newScript.setAttribute("src", "https://www.googletagmanager.com/gtag/js?id=UA-124656779-3");
    document.documentElement.firstChild.appendChild(newScript);

    window.dataLayer = window.dataLayer || [];
    window.gtag = function () {
      window.dataLayer.push(arguments);
    }
    gtag('js', new Date());
  }
}
const installGA = function () {
  window.gtag('config', googleAnalyticsId);
}

const installAds = function () {
  window.gtag('config', googleAdsId);
}

const installFacbookPixel = module.exports.installFacbookPixel = function () {
  !function (f, b, e, v, n, t, s) {/* eslint-disable */
    if (f.fbq)
      return;
    n = f.fbq = function () {
      n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments);
    };
    if (!f._fbq)
      f._fbq = n;
    n.push = n;
    n.loaded = !0;
    n.version = '2.0';
    n.queue = [];
    t = b.createElement(e);
    t.async = !0;
    t.src = v;
    s = b.getElementsByTagName(e)[0];
    s.parentNode.insertBefore(t, s);
  }(window, document, 'script', 'https://connect.facebook.net/en_US/fbevents.js');

  window.fbq('init', facebookPixelId);
  window.fbq('trackSingle', facebookPixelId, 'PageView');
}

module.exports.initialize = function (shouldInstallFS) {
  try {
    if (shouldInstallFS &amp;&amp; Config.INSTALL_FS) {
      installFS();
    }

    installGtag();
    installGA();
    installAds();
    installFacbookPixel();
    initializeEventListener();
  } catch (e) {
    client().captureException(e);
  }
}
},{"./config.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/config.js","./sdk/sentry-client.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/sdk/sentry-client.js","./storage.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/storage.js","./utilities.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/utilities.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/base64.js":[function(_dereq_,module,exports){
const CryptoJS = _dereq_('crypto-js');

// eslint-disable-next-line  no-unused-vars
const base64Decode = (module.exports.base64Decode = function (base64String) {
  try {
    const parsedWordArray = CryptoJS.enc.Base64.parse(base64String);
    const parsedStr = CryptoJS.enc.Utf8.stringify(parsedWordArray);
    const thing = JSON.parse(parsedStr);
    return thing;
  } catch (e) {
    return null;
  }
});

const base64Encode = (module.exports.base64Encode = function (thing) {
  try {
    const parsedStr = JSON.stringify(thing);
    const parsedWordArray = CryptoJS.enc.Utf8.parse(parsedStr); // WordArray object
    const base64String = CryptoJS.enc.Base64.stringify(parsedWordArray); // string: 'SGVsbG8gd29ybGQ='
    return base64String;
  } catch (e) {
    return null;
  }
});


},{"crypto-js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/crypto-js/index.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/config.js":[function(_dereq_,module,exports){
// Made this its own module to reduce the amount of unresolve variable warnings.  This gets injected by gulp.
module.exports = {"API_URL":"https://api.pearcommerce.com","OFFERS_URL":"https://offers.pearcommerce.com","bucket":"offers.pearcommerce.com","cloudfronts":["EIHBZL08C67V4"],"productionResources":true,"production":true,"env":"production","apiTarget":"production","revisionShort":"cb1dc4d","revision":"cb1dc4da42"};

},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/debounce.js":[function(_dereq_,module,exports){

// Returns a function, that, as long as it continues to be invoked, will not
// be triggered. The function will be called after N milliseconds. If `immediate`
// is passed, trigger the function on the leading edge, instead of the trailing.
// eslint-disable-next-line  no-unused-vars
const debounce = (module.exports = (func, wait, immediate) =&gt; {
    let timeout;

    return function executedFunction(...args) {
        const context = this;

        const later = function () {
            timeout = null;
            if (!immediate) func.apply(context, args);
        };

        const callNow = immediate &amp;&amp; !timeout;

        if (!timeout) {
            timeout = setTimeout(later, wait);
        }

        if (callNow) func.apply(context, args);
    };
});
},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/parseuri.js":[function(_dereq_,module,exports){
// parseUri 1.2.2
// (c) Steven Levithan &lt;stevenlevithan.com&gt;
// MIT License

const parseUri = function (str) {
  const o = parseUri.options;
  const m = o.parser[o.strictMode ? 'strict' : 'loose'].exec(str);
  const uri = {};
  let i = 14;

  while (i--) uri[o.key[i]] = m[i] || '';

  uri[o.q.name] = {};
  uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
    if ($1) uri[o.q.name][$1] = $2;
  });

  uri.toUrl = () =&gt; {
    return `${uri.protocol}:\\${uri.host}${uri.port &amp;&amp; uri.port != 80 ? `:${uri.port}` : ''}${uri.path}${uri.queryKey ? `?${new URLSearchParams(uri.queryKey)}` : ''}${uri.anchor ? `#${uri.anchor}` : ''}`;
  }

  return uri;
};

parseUri.options = {
  strictMode: false,
  key: ['source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'],
  q: {
    name: 'queryKey',
    parser: /(?:^|&amp;)([^&amp;=]*)=?([^&amp;]*)/g,
  },
  parser: {
    strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
    /* eslint-disable max-len */
    loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,
  },
};

module.exports = parseUri;

},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/pear-console.js":[function(_dereq_,module,exports){
const Config = _dereq_('./config.js');
const parseUri = _dereq_('./parseuri.js');

const safeWrapLogger = (module.exports.safeWrapLogger = (logger) =&gt; {

  const params = parseUri(window.location).queryKey;
  const urlDebug = params['pear_debug'] || params['debug'];
  return (...args) =&gt; {

    if (Config.env !== 'production' || urlDebug) {
      args.unshift(`[Pear - ${Config.env}]`);
      logger.apply(this, args);
    }
  };
});

/**
 * PearConsole is a production-safe wrapper around window.console that will not spam logs unless we're in production
 * or the pear_debug url parameter is present.
 */
const PearConsole = (module.exports.PearConsole = {
  log: safeWrapLogger(window.console.log),
  error: safeWrapLogger(window.console.error),
  debug: safeWrapLogger(window.console.debug),
  info: safeWrapLogger(window.console.info),
  warn: safeWrapLogger(window.console.warn),
  trace: safeWrapLogger(window.console.trace),
});
// eslint-disable-next-line  no-unused-vars
const console = PearConsole;

},{"./config.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/config.js","./parseuri.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/parseuri.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/pym.v1.js":[function(_dereq_,module,exports){
/*! pym.js - v1.3.2 - 2018-02-13 */
/*
* Pym.js is library that resizes an iframe based on the width of the parent and the resulting height of the child.
* Check out the docs at http://blog.apps.npr.org/pym.js/ or the readme at README.md for usage.
*/

/** @module pym */
(function(factory) {
    if (typeof define === 'function' &amp;&amp; define.amd &amp;&amp; window.location.href.indexOf("goldenislandjerky") &lt; 0 &amp;&amp; typeof requirejs == 'undefined') {       
        define(factory); 
    }
    else if (typeof module !== 'undefined' &amp;&amp; module.exports) {
        module.exports = factory();
    } else {
        window.pym = factory.call(this);
    }
})(function() {
    var MESSAGE_DELIMITER = 'xPYMx';

    var lib = {};

    /**
    * Create and dispatch a custom pym event
    *
    * @method _raiseCustomEvent
    * @inner
    *
    * @param {String} eventName
    */
   var _raiseCustomEvent = function(eventName) {
     var event = document.createEvent('Event');
     event.initEvent('pym:' + eventName, true, true);
     document.dispatchEvent(event);
   };

    /**
    * Generic function for parsing URL params.
    * Via http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript
    *
    * @method _getParameterByName
    * @inner
    *
    * @param {String} name The name of the paramter to get from the URL.
    */
    var _getParameterByName = function(name) {
        var regex = new RegExp("[\\?&amp;]" + name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]') + '=([^&amp;#]*)');
        var results = regex.exec(location.search);

        if (results === null) {
            return '';
        }

        return decodeURIComponent(results[1].replace(/\+/g, " "));
    };

    /**
     * Check the message to make sure it comes from an acceptable xdomain.
     * Defaults to '*' but can be overriden in config.
     *
     * @method _isSafeMessage
     * @inner
     *
     * @param {Event} e The message event.
     * @param {Object} settings Configuration.
     */
    var _isSafeMessage = function(e, settings) {
        if (settings.xdomain !== '*') {
            // If origin doesn't match our xdomain, return.
            if (!e.origin.match(new RegExp(settings.xdomain + '$'))) { return; }
        }

        // Ignore events that do not carry string data #151
        if (typeof e.data !== 'string') { return; }

        return true;
    };

    var _isSafeUrl = function(url) {
        // Adapted from angular 2 url sanitizer
        var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp):|[^&amp;:/?#]*(?:[/?#]|$))/gi;
        if (!url.match(SAFE_URL_PATTERN)) { return; }
        
        return true;
    };

    /**
     * Construct a message to send between frames.
     *
     * NB: We use string-building here because JSON message passing is
     * not supported in all browsers.
     *
     * @method _makeMessage
     * @inner
     *
     * @param {String} id The unique id of the message recipient.
     * @param {String} messageType The type of message to send.
     * @param {String} message The message to send.
     */
    var _makeMessage = function(id, messageType, message) {
        var bits = ['pym', id, messageType, message];

        return bits.join(MESSAGE_DELIMITER);
    };

    /**
     * Construct a regex to validate and parse messages.
     *
     * @method _makeMessageRegex
     * @inner
     *
     * @param {String} id The unique id of the message recipient.
     */
    var _makeMessageRegex = function(id) {
        var bits = ['pym', id, '(\\S+)', '(.*)'];

        return new RegExp('^' + bits.join(MESSAGE_DELIMITER) + '$');
    };

    /**
    * Underscore implementation of getNow
    *
    * @method _getNow
    * @inner
    *
    */
    var _getNow = Date.now || function() {
        return new Date().getTime();
    };

    /**
    * Underscore implementation of throttle
    *
    * @method _throttle
    * @inner
    *
    * @param {function} func Throttled function
    * @param {number} wait Throttle wait time
    * @param {object} options Throttle settings
    */

    var _throttle = function(func, wait, options) {
        var context, args, result;
        var timeout = null;
        var previous = 0;
        if (!options) {options = {};}
        var later = function() {
            previous = options.leading === false ? 0 : _getNow();
            timeout = null;
            result = func.apply(context, args);
            if (!timeout) {context = args = null;}
        };
        return function() {
            var now = _getNow();
            if (!previous &amp;&amp; options.leading === false) {previous = now;}
            var remaining = wait - (now - previous);
            context = this;
            args = arguments;
            if (remaining &lt;= 0 || remaining &gt; wait) {
                if (timeout) {
                    clearTimeout(timeout);
                    timeout = null;
                }
                previous = now;
                result = func.apply(context, args);
                if (!timeout) {context = args = null;}
            } else if (!timeout &amp;&amp; options.trailing !== false) {
                timeout = setTimeout(later, remaining);
            }
            return result;
        };
    };

    /**
     * Clean autoInit Instances: those that point to contentless iframes
     * @method _cleanAutoInitInstances
     * @inner
     */
    var _cleanAutoInitInstances = function() {
        var length = lib.autoInitInstances.length;

        // Loop backwards to avoid index issues
        for (var idx = length - 1; idx &gt;= 0; idx--) {
            var instance = lib.autoInitInstances[idx];
            // If instance has been removed or is contentless then remove it
            if (instance.el.getElementsByTagName('iframe').length &amp;&amp;
                instance.el.getElementsByTagName('iframe')[0].contentWindow) {
                continue;
            }
            else {
                // Remove the reference to the removed or orphan instance
                lib.autoInitInstances.splice(idx,1);
            }
        }
    };

    /**
     * Store auto initialized Pym instances for further reference
     * @name module:pym#autoInitInstances
     * @type Array
     * @default []
     */
    lib.autoInitInstances = [];

    /**
     * Initialize Pym for elements on page that have data-pym attributes.
     * Expose autoinit in case we need to call it from the outside
     * @instance
     * @method autoInit
     * @param {Boolean} doNotRaiseEvents flag to avoid sending custom events
     */
    lib.autoInit = function(doNotRaiseEvents) {
        var elements = document.querySelectorAll('[data-pym-src]:not([data-pym-auto-initialized])');
        var length = elements.length;

        // Clean stored instances in case needed
        _cleanAutoInitInstances();
        for (var idx = 0; idx &lt; length; ++idx) {
            var element = elements[idx];
            /*
            * Mark automatically-initialized elements so they are not
            * re-initialized if the user includes pym.js more than once in the
            * same document.
            */
            element.setAttribute('data-pym-auto-initialized', '');

            // Ensure elements have an id
            if (element.id === '') {
                element.id = 'pym-' + idx + "-" + Math.random().toString(36).substr(2,5);
            }

            var src = element.getAttribute('data-pym-src');

            // List of data attributes to configure the component
            // structure: {'attribute name': 'type'}
            var settings = {'xdomain': 'string', 'title': 'string', 'name': 'string', 'id': 'string',
                            'sandbox': 'string', 'allowfullscreen': 'boolean',
                            'parenturlparam': 'string', 'parenturlvalue': 'string',
                            'optionalparams': 'boolean', 'trackscroll': 'boolean',
                            'scrollwait': 'number'};

            var config = {};

            for (var attribute in settings) {
                // via https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute#Notes
               if (element.getAttribute('data-pym-'+attribute) !== null) {
                  switch (settings[attribute]) {
                    case 'boolean':
                       config[attribute] = !(element.getAttribute('data-pym-'+attribute) === 'false'); // jshint ignore:line
                       break;
                    case 'string':
                       config[attribute] = element.getAttribute('data-pym-'+attribute);
                       break;
                    case 'number':
                        var n = Number(element.getAttribute('data-pym-'+attribute));
                        if (!isNaN(n)) {
                            config[attribute] = n;
                        }
                        break;
                    default:
                       console.err('unrecognized attribute type');
                  }
               }
            }

            // Store references to autoinitialized pym instances
            var parent = new lib.Parent(element.id, src, config);
            lib.autoInitInstances.push(parent);
        }

        // Fire customEvent
        if (!doNotRaiseEvents) {
            _raiseCustomEvent("pym-initialized");
        }
        // Return stored autoinitalized pym instances
        return lib.autoInitInstances;
    };

    /**
     * The Parent half of a response iframe.
     *
     * @memberof module:pym
     * @class Parent
     * @param {String} id The id of the div into which the iframe will be rendered. sets {@link module:pym.Parent~id}
     * @param {String} url The url of the iframe source. sets {@link module:pym.Parent~url}
     * @param {Object} [config] Configuration for the parent instance. sets {@link module:pym.Parent~settings}
     * @param {string} [config.xdomain='*'] - xdomain to validate messages received
     * @param {string} [config.title] - if passed it will be assigned to the iframe title attribute
     * @param {string} [config.name] - if passed it will be assigned to the iframe name attribute
     * @param {string} [config.id] - if passed it will be assigned to the iframe id attribute
     * @param {boolean} [config.allowfullscreen] - if passed and different than false it will be assigned to the iframe allowfullscreen attribute
     * @param {string} [config.sandbox] - if passed it will be assigned to the iframe sandbox attribute (we do not validate the syntax so be careful!!)
     * @param {string} [config.parenturlparam] - if passed it will be override the default parentUrl query string parameter name passed to the iframe src
     * @param {string} [config.parenturlvalue] - if passed it will be override the default parentUrl query string parameter value passed to the iframe src
     * @param {string} [config.optionalparams] - if passed and different than false it will strip the querystring params parentUrl and parentTitle passed to the iframe src
     * @param {boolean} [config.trackscroll] - if passed it will activate scroll tracking on the parent
     * @param {number} [config.scrollwait] - if passed it will set the throttle wait in order to fire scroll messaging. Defaults to 100 ms.
     * @see {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe iFrame}
     */
    lib.Parent = function(id, url, config) {
        /**
         * The id of the container element
         *
         * @memberof module:pym.Parent
         * @member {string} id
         * @inner
         */
        this.id = id;
        /**
         * The url that will be set as the iframe's src
         *
         * @memberof module:pym.Parent
         * @member {String} url
         * @inner
         */
        this.url = url;

        /**
         * The container DOM object
         *
         * @memberof module:pym.Parent
         * @member {HTMLElement} el
         * @inner
         */
        this.el = document.getElementById(id);
        /**
         * The contained child iframe
         *
         * @memberof module:pym.Parent
         * @member {HTMLElement} iframe
         * @inner
         * @default null
         */
        this.iframe = null;
        /**
         * The parent instance settings, updated by the values passed in the config object
         *
         * @memberof module:pym.Parent
         * @member {Object} settings
         * @inner
         */
        this.settings = {
            xdomain: '*',
            optionalparams: true,
            parenturlparam: 'parentUrl',
            parenturlvalue: window.location.href,
            trackscroll: false,
            scrollwait: 100,
        };
        /**
         * RegularExpression to validate the received messages
         *
         * @memberof module:pym.Parent
         * @member {String} messageRegex
         * @inner
         */
        this.messageRegex = _makeMessageRegex(this.id);
        /**
         * Stores the registered messageHandlers for each messageType
         *
         * @memberof module:pym.Parent
         * @member {Object} messageHandlers
         * @inner
         */
        this.messageHandlers = {};

        // ensure a config object
        config = (config || {});

        /**
         * Construct the iframe.
         *
         * @memberof module:pym.Parent
         * @method _constructIframe
         * @inner
         */
        this._constructIframe = function() {
            // Calculate the width of this element.
            var width = this.el.offsetWidth.toString();

            // Create an iframe element attached to the document.
            this.iframe = document.createElement('iframe');

            if (this.settings.className &amp;&amp; typeof this.settings.className === 'string') {
              this.iframe.className = this.settings.className;
            }




            // Save fragment id
            var hash = '';
            var hashIndex = this.url.indexOf('#');

            if (hashIndex &gt; -1) {
                hash = this.url.substring(hashIndex, this.url.length);
                this.url = this.url.substring(0, hashIndex);
            }

            // If the URL contains querystring bits, use them.
            // Otherwise, just create a set of valid params.
            if (this.url.indexOf('?') &lt; 0) {
                this.url += '?';
            } else {
                this.url += '&amp;';
            }

            // Append the initial width as a querystring parameter
            // and optional params if configured to do so
            this.iframe.src = this.url + 'initialWidth=' + width +
                                         '&amp;childId=' + this.id;

            if (this.settings.optionalparams) {
                this.iframe.src += '&amp;parentTitle=' + encodeURIComponent(document.title);
                this.iframe.src += '&amp;'+ this.settings.parenturlparam + '=' + encodeURIComponent(this.settings.parenturlvalue);
            }
            this.iframe.src +=hash;

            // Set some attributes to this proto-iframe.
            this.iframe.setAttribute('width', '100%');
            this.iframe.setAttribute('scrolling', 'no');
            this.iframe.setAttribute('marginheight', '0');
            this.iframe.setAttribute('frameborder', '0');

            if (this.settings.title) {
                this.iframe.setAttribute('title', this.settings.title);
            }

            if (this.settings.allowfullscreen !== undefined &amp;&amp; this.settings.allowfullscreen !== false) {
                this.iframe.setAttribute('allowfullscreen','');
            }

            if (this.settings.sandbox !== undefined &amp;&amp; typeof this.settings.sandbox === 'string') {
                this.iframe.setAttribute('sandbox', this.settings.sandbox);
            }
            

            if (this.settings.id) {
                if (!document.getElementById(this.settings.id)) {
                    this.iframe.setAttribute('id', this.settings.id);
                }
            }

            if (this.settings.name) {
                this.iframe.setAttribute('name', this.settings.name);
            }

            // Replace the child content if needed
            // (some CMSs might strip out empty elements)
            while(this.el.firstChild) { this.el.removeChild(this.el.firstChild); }
            // Append the iframe to our element.
            this.el.appendChild(this.iframe);

            // Add an event listener that will handle redrawing the child on resize.
            window.addEventListener('resize', this._onResize);

            // Add an event listener that will send the child the viewport.
            if (this.settings.trackscroll) {
                window.addEventListener('scroll', this._throttleOnScroll);
            }
        };

        /**
         * Send width on resize.
         *
         * @memberof module:pym.Parent
         * @method _onResize
         * @inner
         */
        this._onResize = function() {
            this.sendWidth();
            if (this.settings.trackscroll) {
                this.sendViewportAndIFramePosition();
            }
        }.bind(this);

        /**
         * Send viewport and iframe info on scroll.
         *
         * @memberof module:pym.Parent
         * @method _onScroll
         * @inner
         */
        this._onScroll = function() {
            this.sendViewportAndIFramePosition();
        }.bind(this);

        /**
         * Fire all event handlers for a given message type.
         *
         * @memberof module:pym.Parent
         * @method _fire
         * @inner
         *
         * @param {String} messageType The type of message.
         * @param {String} message The message data.
         */
        this._fire = function(messageType, message) {
            if (messageType in this.messageHandlers) {
                for (var i = 0; i &lt; this.messageHandlers[messageType].length; i++) {
                   this.messageHandlers[messageType][i].call(this, message);
                }
            }
        };

        /**
         * Remove this parent from the page and unbind it's event handlers.
         *
         * @memberof module:pym.Parent
         * @method remove
         * @instance
         */
        this.remove = function() {
            window.removeEventListener('message', this._processMessage);
            window.removeEventListener('resize', this._onResize);

            this.el.removeChild(this.iframe);
            // _cleanAutoInitInstances in case this parent was autoInitialized
            _cleanAutoInitInstances();
        };

        /**
         * Process a new message from the child.
         *
         * @memberof module:pym.Parent
         * @method _processMessage
         * @inner
         *
         * @param {Event} e A message event.
         */
        this._processMessage = function(e) {
            // First, punt if this isn't from an acceptable xdomain.
            if (!_isSafeMessage(e, this.settings)) {
                return;
            }

            // Discard object messages, we only care about strings
            if (typeof e.data !== 'string') {
                return;
            }

            // Grab the message from the child and parse it.
            var match = e.data.match(this.messageRegex);

            // If there's no match or too many matches in the message, punt.
            if (!match || match.length !== 3) {
                return false;
            }

            var messageType = match[1];
            var message = match[2];

            this._fire(messageType, message);
        }.bind(this);

        /**
         * Resize iframe in response to new height message from child.
         *
         * @memberof module:pym.Parent
         * @method _onHeightMessage
         * @inner
         *
         * @param {String} message The new height.
         */
        this._onHeightMessage = function(message) {
            /*
             * Handle parent height message from child.
             */
            var height = parseInt(message);

            this.iframe.setAttribute('height', height + 'px');
            this.iframe.style.height = height + 'px';

        };

        /**
         * Navigate parent to a new url.
         *
         * @memberof module:pym.Parent
         * @method _onNavigateToMessage
         * @inner
         *
         * @param {String} message The url to navigate to.
         */
        this._onNavigateToMessage = function(message) {
            /*
             * Handle parent scroll message from child.
             */
             if (!_isSafeUrl(message)) {return;}
            document.location.href = message;
        };

        /**
         * Scroll parent to a given child position.
         *
         * @memberof module:pym.Parent
         * @method _onScrollToChildPosMessage
         * @inner
         *
         * @param {String} message The offset inside the child page.
         */
        this._onScrollToChildPosMessage = function(message) {
            // Get the child container position using getBoundingClientRect + pageYOffset
            // via https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect
            var iframePos = document.getElementById(this.id).getBoundingClientRect().top + window.pageYOffset;

            var totalOffset = iframePos + parseInt(message);
            window.scrollTo(0, totalOffset);
        };

        /**
         * Bind a callback to a given messageType from the child.
         *
         * Reserved message names are: "height", "scrollTo" and "navigateTo".
         *
         * @memberof module:pym.Parent
         * @method onMessage
         * @instance
         *
         * @param {String} messageType The type of message being listened for.
         * @param {module:pym.Parent~onMessageCallback} callback The callback to invoke when a message of the given type is received.
         */
        this.onMessage = function(messageType, callback) {
            if (!(messageType in this.messageHandlers)) {
                this.messageHandlers[messageType] = [];
            }

            this.messageHandlers[messageType].push(callback);
        };

        /**
         * @callback module:pym.Parent~onMessageCallback
         * @param {String} message The message data.
         */

        /**
         * Send a message to the the child.
         *
         * @memberof module:pym.Parent
         * @method sendMessage
         * @instance
         *
         * @param {String} messageType The type of message to send.
         * @param {String} message The message data to send.
         */
        this.sendMessage = function(messageType, message) {
            // When used alongside with pjax some references are lost
            if (this.el.getElementsByTagName('iframe').length) {
                if (this.el.getElementsByTagName('iframe')[0].contentWindow) {
                    this.el.getElementsByTagName('iframe')[0].contentWindow
                        .postMessage(_makeMessage(this.id, messageType, message), '*');
                }
                else {
                    // Contentless child detected remove listeners and iframe
                    this.remove();
                }
            }
        };

        /**
         * Transmit the current iframe width to the child.
         *
         * You shouldn't need to call this directly.
         *
         * @memberof module:pym.Parent
         * @method sendWidth
         * @instance
         */
        this.sendWidth = function() {
            var width = this.el.offsetWidth.toString();
            this.sendMessage('width', width);
        };

        /**
         * Transmit the current viewport and iframe position to the child.
         * Sends viewport width, viewport height
         * and iframe bounding rect top-left-bottom-right
         * all separated by spaces
         *
         * You shouldn't need to call this directly.
         *
         * @memberof module:pym.Parent
         * @method sendViewportAndIFramePosition
         * @instance
         */
        this.sendViewportAndIFramePosition = function() {
            var iframeRect = this.iframe.getBoundingClientRect();
            var vWidth   = window.innerWidth || document.documentElement.clientWidth;
            var vHeight  = window.innerHeight || document.documentElement.clientHeight;
            var payload = vWidth + ' ' + vHeight;
            payload += ' ' + iframeRect.top + ' ' + iframeRect.left;
            payload += ' ' + iframeRect.bottom + ' ' + iframeRect.right;
            this.sendMessage('viewport-iframe-position', payload);
        };

        // Add any overrides to settings coming from config.
        for (var key in config) {
            this.settings[key] = config[key];
        }

        /**
         * Throttled scroll function.
         *
         * @memberof module:pym.Parent
         * @method _throttleOnScroll
         * @inner
         */
        this._throttleOnScroll = _throttle(this._onScroll.bind(this), this.settings.scrollwait);

        // Bind required message handlers
        this.onMessage('height', this._onHeightMessage);
        this.onMessage('navigateTo', this._onNavigateToMessage);
        this.onMessage('scrollToChildPos', this._onScrollToChildPosMessage);
        this.onMessage('parentPositionInfo', this.sendViewportAndIFramePosition);

        // Add a listener for processing messages from the child.
        window.addEventListener('message', this._processMessage, false);

        // Construct the iframe in the container element.
        this._constructIframe();

        return this;
    };

    /**
     * The Child half of a responsive iframe.
     *
     * @memberof module:pym
     * @class Child
     * @param {Object} [config] Configuration for the child instance. sets {@link module:pym.Child~settings}
     * @param {function} [config.renderCallback=null] Callback invoked after receiving a resize event from the parent, sets {@link module:pym.Child#settings.renderCallback}
     * @param {string} [config.xdomain='*'] - xdomain to validate messages received
     * @param {number} [config.polling=0] - polling frequency in milliseconds to send height to parent
     * @param {number} [config.id] - parent container id used when navigating the child iframe to a new page but we want to keep it responsive.
     * @param {string} [config.parenturlparam] - if passed it will be override the default parentUrl query string parameter name expected on the iframe src
     */
    lib.Child = function(config) {
        /**
         * The initial width of the parent page
         *
         * @memberof module:pym.Child
         * @member {string} parentWidth
         * @inner
         */
        this.parentWidth = null;
        /**
         * The id of the parent container
         *
         * @memberof module:pym.Child
         * @member {String} id
         * @inner
         */
        this.id = null;
        /**
         * The title of the parent page from document.title.
         *
         * @memberof module:pym.Child
         * @member {String} parentTitle
         * @inner
         */
        this.parentTitle = null;
        /**
         * The URL of the parent page from window.location.href.
         *
         * @memberof module:pym.Child
         * @member {String} parentUrl
         * @inner
         */
        this.parentUrl = null;
        /**
         * The settings for the child instance. Can be overriden by passing a config object to the child constructor
         * i.e.: var pymChild = new pym.Child({renderCallback: render, xdomain: "\\*\.npr\.org"})
         *
         * @memberof module:pym.Child.settings
         * @member {Object} settings - default settings for the child instance
         * @inner
         */
        this.settings = {
            renderCallback: null,
            xdomain: '*',
            polling: 0,
            parenturlparam: 'parentUrl'
        };

        /**
         * The timerId in order to be able to stop when polling is enabled
         *
         * @memberof module:pym.Child
         * @member {String} timerId
         * @inner
         */
        this.timerId = null;
        /**
         * RegularExpression to validate the received messages
         *
         * @memberof module:pym.Child
         * @member {String} messageRegex
         * @inner
         */
        this.messageRegex = null;
        /**
         * Stores the registered messageHandlers for each messageType
         *
         * @memberof module:pym.Child
         * @member {Object} messageHandlers
         * @inner
         */
        this.messageHandlers = {};

        // Ensure a config object
        config = (config || {});

        /**
         * Bind a callback to a given messageType from the child.
         *
         * Reserved message names are: "width".
         *
         * @memberof module:pym.Child
         * @method onMessage
         * @instance
         *
         * @param {String} messageType The type of message being listened for.
         * @param {module:pym.Child~onMessageCallback} callback The callback to invoke when a message of the given type is received.
         */
        this.onMessage = function(messageType, callback) {

            if (!(messageType in this.messageHandlers)) {
                this.messageHandlers[messageType] = [];
            }

            this.messageHandlers[messageType].push(callback);
        };

        /**
         * @callback module:pym.Child~onMessageCallback
         * @param {String} message The message data.
         */


        /**
         * Fire all event handlers for a given message type.
         *
         * @memberof module:pym.Child
         * @method _fire
         * @inner
         *
         * @param {String} messageType The type of message.
         * @param {String} message The message data.
         */
        this._fire = function(messageType, message) {
            /*
             * Fire all event handlers for a given message type.
             */
            if (messageType in this.messageHandlers) {
                for (var i = 0; i &lt; this.messageHandlers[messageType].length; i++) {
                   this.messageHandlers[messageType][i].call(this, message);
                }
            }
        };

        /**
         * Process a new message from the parent.
         *
         * @memberof module:pym.Child
         * @method _processMessage
         * @inner
         *
         * @param {Event} e A message event.
         */
        this._processMessage = function(e) {
            /*
            * Process a new message from parent frame.
            */
            // First, punt if this isn't from an acceptable xdomain.
            if (!_isSafeMessage(e, this.settings)) {
                return;
            }

            // Discard object messages, we only care about strings
            if (typeof e.data !== 'string') {
                return;
            }

            // Get the message from the parent.
            var match = e.data.match(this.messageRegex);

            // If there's no match or it's a bad format, punt.
            if (!match || match.length !== 3) { return; }

            var messageType = match[1];
            var message = match[2];

            this._fire(messageType, message);
        }.bind(this);

        /**
         * Resize iframe in response to new width message from parent.
         *
         * @memberof module:pym.Child
         * @method _onWidthMessage
         * @inner
         *
         * @param {String} message The new width.
         */
        this._onWidthMessage = function(message) {
            /*
             * Handle width message from the child.
             */
            var width = parseInt(message);

            // Change the width if it's different.
            if (width !== this.parentWidth) {
                this.parentWidth = width;

                // Call the callback function if it exists.
                if (this.settings.renderCallback) {
                    this.settings.renderCallback(width);
                }

                // Send the height back to the parent.
                this.sendHeight();
            }
        };

        /**
         * Send a message to the the Parent.
         *
         * @memberof module:pym.Child
         * @method sendMessage
         * @instance
         *
         * @param {String} messageType The type of message to send.
         * @param {String} message The message data to send.
         */
        this.sendMessage = function(messageType, message) {
            /*
             * Send a message to the parent.
             */
            window.parent.postMessage(_makeMessage(this.id, messageType, message), '*');
        };

        /**
         * Transmit the current iframe height to the parent.
         *
         * Call this directly in cases where you manually alter the height of the iframe contents.
         *
         * @memberof module:pym.Child
         * @method sendHeight
         * @instance
         */
        this.sendHeight = function() {
            // Get the child's height.
            var height = document.getElementsByTagName('body')[0].offsetHeight.toString();

            // Send the height to the parent.
            this.sendMessage('height', height);

            return height;
        }.bind(this);

        /**
         * Ask parent to send the current viewport and iframe position information
         *
         * @memberof module:pym.Child
         * @method sendHeight
         * @instance
         */
        this.getParentPositionInfo = function() {
            // Send the height to the parent.
            this.sendMessage('parentPositionInfo');
        };

        /**
         * Scroll parent to a given element id.
         *
         * @memberof module:pym.Child
         * @method scrollParentTo
         * @instance
         *
         * @param {String} hash The id of the element to scroll to.
         */
        this.scrollParentTo = function(hash) {
            this.sendMessage('navigateTo', '#' + hash);
        };

        /**
         * Navigate parent to a given url.
         *
         * @memberof module:pym.Child
         * @method navigateParentTo
         * @instance
         *
         * @param {String} url The url to navigate to.
         */
        this.navigateParentTo = function(url) {
            this.sendMessage('navigateTo', url);
        };

        /**
         * Scroll parent to a given child element id.
         *
         * @memberof module:pym.Child
         * @method scrollParentToChildEl
         * @instance
         *
         * @param {String} id The id of the child element to scroll to.
         */
        this.scrollParentToChildEl = function(id) {
            // Get the child element position using getBoundingClientRect + pageYOffset
            // via https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect
            var topPos = document.getElementById(id).getBoundingClientRect().top + window.pageYOffset;
            this.scrollParentToChildPos(topPos);
        };

        /**
         * Scroll parent to a particular child offset.
         *
         * @memberof module:pym.Child
         * @method scrollParentToChildPos
         * @instance
         *
         * @param {Number} pos The offset of the child element to scroll to.
         */
        this.scrollParentToChildPos = function(pos) {
            this.sendMessage('scrollToChildPos', pos.toString());
        };

        /**
         * Mark Whether the child is embedded or not
         * executes a callback in case it was passed to the config
         *
         * @memberof module:pym.Child
         * @method _markWhetherEmbedded
         * @inner
         *
         * @param {module:pym.Child~onMarkedEmbeddedStatus} The callback to execute after determining whether embedded or not.
         */
        var _markWhetherEmbedded = function(onMarkedEmbeddedStatus) {
          var htmlElement = document.getElementsByTagName('html')[0],
              newClassForHtml,
              originalHtmlClasses = htmlElement.className;
          try {
            if(window.self !== window.top) {
              newClassForHtml = "embedded";
            }else{
              newClassForHtml = "not-embedded";
            }
          }catch(e) {
            newClassForHtml = "embedded";
          }
          if(originalHtmlClasses.indexOf(newClassForHtml) &lt; 0) {
            htmlElement.className = originalHtmlClasses ? originalHtmlClasses + ' ' + newClassForHtml : newClassForHtml;
            if(onMarkedEmbeddedStatus){
              onMarkedEmbeddedStatus(newClassForHtml);
            }
            _raiseCustomEvent("marked-embedded");
          }
        };

        /**
         * @callback module:pym.Child~onMarkedEmbeddedStatus
         * @param {String} classname "embedded" or "not-embedded".
         */

        /**
         * Unbind child event handlers and timers.
         *
         * @memberof module:pym.Child
         * @method remove
         * @instance
         */
        this.remove = function() {
            window.removeEventListener('message', this._processMessage);
            if (this.timerId) {
                clearInterval(this.timerId);
            }
        };

        // Initialize settings with overrides.
        for (var key in config) {
            this.settings[key] = config[key];
        }

        // Identify what ID the parent knows this child as.
        this.id = _getParameterByName('childId') || config.id;
        this.messageRegex = new RegExp('^pym' + MESSAGE_DELIMITER + this.id + MESSAGE_DELIMITER + '(\\S+)' + MESSAGE_DELIMITER + '(.*)$');

        // Get the initial width from a URL parameter.
        var width = parseInt(_getParameterByName('initialWidth'));

        // Get the url of the parent frame
        this.parentUrl = _getParameterByName(this.settings.parenturlparam);

        // Get the title of the parent frame
        this.parentTitle = _getParameterByName('parentTitle');

        // Bind the required message handlers
        this.onMessage('width', this._onWidthMessage);

        // Set up a listener to handle any incoming messages.
        window.addEventListener('message', this._processMessage, false);

        // If there's a callback function, call it.
        if (this.settings.renderCallback) {
            this.settings.renderCallback(width);
        }

        // Send the initial height to the parent.
        this.sendHeight();

        // If we're configured to poll, create a setInterval to handle that.
        if (this.settings.polling) {
            this.timerId = window.setInterval(this.sendHeight, this.settings.polling);
        }

        _markWhetherEmbedded(config.onMarkedEmbeddedStatus);

        return this;
    };

    // Initialize elements with pym data attributes
    // if we are not in server configuration
    if(typeof document !== "undefined") {
        lib.autoInit(true);
    }

    return lib;
});


},{}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/sdk/help-overlay.js":[function(_dereq_,module,exports){
const Config = _dereq_('../config.js');
// const SDK = require('./sdk-shared.js');
const PearNav = _dereq_('./pear-navigation.js');
const storage = _dereq_('../storage.js');
const analytics = _dereq_('../analytics-events.js');
const Util = _dereq_('../utilities.js');

module.exports = (() =&gt; {
  let iframe;
  let pushIframe;
  let style;
  let container;
  let orchestrator;

  const injectStyles = (config) =&gt; {
    const defaultConfig = {
      desktopSize: 80,
      mobileSize: 80,
      desktopOffset: 0,
      mobileOffset: 0,
      zIndex: 9999,
    };

    config = Object.assign(defaultConfig, config);
    const desktopSize = config.desktopSize;
    const mobileSize = config.mobileSize;

    const styleCSS = `
      &lt;div&gt;
        &lt;style type="text/css"&gt;
          
          #pear-help-overlay-container * {
            z-index: ${config.zIndex};
          }
          
          #pear-help-overlay-container div.toggle {
            position: fixed;
            box-shadow: rgba(0, 0, 0, 0.06) 0px 1px 6px 0px, rgba(0, 0, 0, 0.16) 0px 2px 32px 0px;
            border-radius: 50%;
            animation: 250ms ease 0s 1 normal none running animation-bhegco;
            transition: opacity 0.3s ease 0s;
            background-image: url('${Config.OFFERS_URL}/img/help-icon-flat-6.jpg');
            background-color: rgba(256, 256, 256, 0.6);
            background-position: -0% 0%;
            background-size: 90%;
            cursor: pointer;
            
            width: ${desktopSize}px;
            height: ${desktopSize}px;
            background-size: ${desktopSize}px;
            bottom: ${desktopSize/3 + config.desktopOffset}px;
            right: ${desktopSize/3}px;
          }
          
          #pear-help-overlay-container div.toggle div {
            position: absolute;
            height: 52%;
            width: 52%;
            top: 24%;
            left: 24%;
            border-radius: 50%;
            overflow: hidden;
          }
          
          #pear-help-overlay-container div.toggle div img.offer-image {
            width: 100%;
            left: 0%;
            position: absolute;
          }
          
          #pear-help-overlay-container div.pear-help-content {
            position: fixed;
            width: 400px;
            background-color: #fff;
            border-radius: 10px;
            -webkit-box-shadow: 0px 0px 20px rgba(0,0,0,.45);
            -moz-box-shadow: 0px 0px 20px rgba(0,0,0,.45);
            box-shadow: 0px 0px 20px rgba(0,0,0,.45);
            overflow-y: scroll;
          }
          
          #pear-help-overlay-container div.pear-help-content.content {
            bottom: ${(config.desktopOffset) + desktopSize + (desktopSize/3) + (desktopSize/6)}px;
            right: ${desktopSize/3}px;
            height: 400px;
          }
          
          #pear-help-overlay-container div.pear-help-content.push {
            bottom: ${desktopSize/3 + config.desktopOffset}px;
            right: ${desktopSize + (desktopSize/3) + (desktopSize/6)}px;
            height: 135px;
          }
          
           #help-overlay-contents-container div.pear-help-content.fade-up {
            -webkit-animation-name: fade-up;
            animation-name: fade-up;
            -webkit-animation-fill-mode: both;
            animation-fill-mode: both;
            -webkit-animation-timing-function: cubic-bezier(.55, 0, .1, 1);
            animation-timing-function: cubic-bezier(.55, 0, .1, 1)
            -webkit-transform: translate3d(0, 100%, 0);
            transform: translate3d(0, 100%, 0);
            opacity: 0;
          }
          #help-overlay-contents-container div.pear-help-content.fade-up {
            -webkit-animation-duration: 3s;
            animation-duration: 3s
          }
          
          @-webkit-keyframes fade-up {
            0% {
              -webkit-transform: translate3d(0, 100%, 0);
              transform: translate3d(0, 100%, 0);
              opacity: 0
            }
        
            1% {
              -webkit-transform: translate3d(0, 10%, 0);
              transform: translate3d(0, 10%, 0);
              opacity: 0
            }
        
            to {
              -webkit-transform: translateZ(0);
              transform: translateZ(0);
              opacity: 1
            }
          }
          @keyframes fade-up {
            0% {
              -webkit-transform: translate3d(0, 100%, 0);
              transform: translate3d(0, 100%, 0);
              opacity: 0
            }
        
            1% {
              -webkit-transform: translate3d(0, 10%, 0);
              transform: translate3d(0, 10%, 0);
              opacity: 0
            }
        
            to {
              -webkit-transform: translateZ(0);
              transform: translateZ(0);
              opacity: 1
            }
          }
          
           @media (max-width: 768px) {
            #pear-help-overlay-container div.toggle {
              width: ${mobileSize}px;
              height: ${mobileSize}px;
              background-size: ${mobileSize}px;
              bottom: ${mobileSize/3 + config.mobileOffset}px;
              right: ${mobileSize/3}px;
            }
            
            #pear-help-overlay-container div.pear-help-content.content {
              width: 100%;
              height: 100%;
              top: 0%;
              left: 0;   
              border-radius: 0;    
            }
            
            #pear-help-overlay-container div.pear-help-content.push {
              width: auto;
              left: ${mobileSize/3}px;
              bottom: ${(config.mobileOffset) + mobileSize + (mobileSize/3) + (mobileSize/6)}px;
              right: ${mobileSize/3}px;
              height: 153px;
            }
          }
        &lt;/style&gt;
        &lt;/div&gt;
      `;

    // NOTE: intellij formats the css weirdly if I don't include it within a &lt;style&gt; element inline, so I need to do
    // a grandfather element to get it into the head
    const styleGrandparent = document.createElement('div');
    styleGrandparent.innerHTML = styleCSS;

    // remove old styles
    if (style) {
      style.parentNode.removeChild(style);
    }

    style = styleGrandparent.firstElementChild.firstElementChild;
    document.getElementsByTagName('head')[0].appendChild(style);
  };

  const setConfig = (config) =&gt; {
    if (storage.local.getItem('pear_helper_disabled')) {
      return;
    }
    container.style.display = config.hidden ? 'none' : '';
    injectStyles(config);
  };

  /**
   * config :==
   * {
   *   desktopSize: 60,
   *   mobileSize: 60,
   *   desktopOffset: 0,
   *   mobileOffset: 0,
   *   zIndex: 9999
   * }
   */
  const initialize = (config, _orchestrator) =&gt; {
    if (storage.local.getItem('pear_helper_disabled')) {
      return;
    }
    orchestrator = _orchestrator;
    const offerId = PearNav.getSessionPearOfferId();
    const helpContentsUrl = Config.OFFERS_URL + '/help-overlay-contents/' + offerId +
      (window.location.search ? (window.location.search + '&amp;') : '?') +
      'in_iframe=true&amp;parentUrl=' + encodeURIComponent(window.location.href);
    const pushContentUrl = Config.OFFERS_URL + '/help-overlay-push/' + offerId +
      (window.location.search ? (window.location.search + '&amp;') : '?') + 'in_iframe=true';

    if (offerId) {
      const res = document.createElement('link');
      res.rel = 'preload';
      res.as = 'document';
      res.href = helpContentsUrl;
      document.head.appendChild(res);
    }


    const containerHtml = `
        &lt;div id="pear-help-overlay-container"&gt;
          &lt;div class="toggle"&gt;
            &lt;div style="margin-top:-25px;margin-left:30px;opacity:.5" id="close_pear_helper"&gt;
              &lt;img src="https://assets.pearcommerce.com/1268315032529856.svg" style="height:25px;width:25px"/&gt;
            &lt;/div&gt;
            &lt;div&gt;
              &lt;img style="display:none;" class="offer-image"/&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      `;

    const helpContentHtml = `
        &lt;div class="pear-help-content content" style="display: none"&gt;
          &lt;iframe frameBorder="0" style="position:absolute;top:0;left:0;width:100%;height:100%;" src="${helpContentsUrl}"/&gt;
        &lt;/div&gt;
      `;

    const pushContentHtml = `
        &lt;div class="pear-help-content push" style="display: none"&gt;
          &lt;iframe frameBorder="0" style="position:absolute;top:0;left:0;width:100%;height:100%;" src="${pushContentUrl}"/&gt;
        &lt;/div&gt;
      `;


    const containerParent = document.createElement('div');
    containerParent.innerHTML = containerHtml.trim();
    container = containerParent.firstElementChild;

    const toggle = container.firstElementChild;
    toggle.style.display = 'none';
    const offerImg = toggle.getElementsByClassName('offer-image')[0];
    document.body.appendChild(container);

    setConfig(config);

    const helpContentParent = document.createElement('div');
    helpContentParent.innerHTML = helpContentHtml.trim();
    const helpContent = helpContentParent.firstElementChild;
    container.insertBefore(helpContent, toggle.nextSibling);
    iframe = helpContent.getElementsByTagName('iframe')[0];

    const pushContentParent = document.createElement('div');
    pushContentParent.innerHTML = pushContentHtml.trim();
    const pushContent = pushContentParent.firstElementChild;
    container.insertBefore(pushContent, toggle.nextSibling);
    pushIframe = pushContent.getElementsByTagName('iframe')[0];
    if (!Util.isMobile()) {
      document.querySelector('#close_pear_helper').style.display = 'none';
    }

    const closePushVisibility = () =&gt; {
      if (pushContent.style.display != 'none') {
        analytics.sendPushClosedEvent();
        pushContent.style.display = 'none';
        pushContent.classList.remove('fade-up');
      }
    };

    const openPushVisibility = () =&gt; {
      if (pushContent.style.display != 'block') {
        analytics.sendPushOpenedEvent();
        pushContent.style.display = 'block';
        pushContent.classList.add('fade-up');
      }
    };
    let pushTimeout;


    let isOpen = false;
    const toggleContentVisibility = () =&gt; {
      if (storage.local.getItem('pear_helper_disabled')) {
        return;
      }
      if (isOpen = !isOpen) {
        helpContent.style.display = 'block';
        helpContent.classList.add('fade-up');
        closePushVisibility();
        if (pushTimeout) {
          clearTimeout(pushTimeout);
        }
        analytics.sendHelpOpenedEvent();
      } else {
        closeContent();
      }
    };

    const closeContent = () =&gt; {
      if (helpContent.style.display != 'none') {
        isOpen = false;
        helpContent.style.display = 'none';
        helpContent.classList.remove('fade-up');
        analytics.sendHelpClosedEvent();
      }
    };
    toggle.addEventListener('mouseover', function() {
      if (!Util.isMobile()) {
        document.querySelector('#close_pear_helper').style.display = 'block';
      }
    });
    toggle.addEventListener('mouseout', function() {
      if (!Util.isMobile()) {
        document.querySelector('#close_pear_helper').style.display = 'none';
      }
    });

    document.querySelector('#close_pear_helper').addEventListener('click', function(event) {
      event.preventDefault();
      storage.local.setItem('pear_helper_disabled', true);
      toggle.style.display = 'none';
    });

    toggle.addEventListener('click', toggleContentVisibility);
    document.addEventListener('click', function(event) {
      if (event.target.closest('#pear-help-overlay-container') || event.target.closest('.pear-help-content')) {
        // Clicked on helper related stuff, don't close.
        return;
      } else {
        closeContent();
      }
    }, false);

    let initCount = 0;
    window.addEventListener('message', function(event) {
      if (storage.local.getItem('pear_helper_disabled')) {
        return;
      }
      if ('help-close' == event.data.action) {
        closeContent();
      } else if ('help-close-push' == event.data.action) {
        closePushVisibility();
        if (pushTimeout) {
          clearTimeout(pushTimeout);
        }
      } else if ('help-open-push' == event.data.action) {
        if (pushTimeout) {
          clearTimeout(pushTimeout);
        }
        closeContent();
        openPushVisibility();
        pushTimeout = setTimeout(closePushVisibility, 20000);
      } else if ('help-init' == event.data.action) {
        toggle.style.display = 'block';
        const UPCSAndOffer = event.data.value;
        offerImg.src = UPCSAndOffer.offer.imageUrl;
        if (offerImg.src) {
          offerImg.style.display = 'block';
        }
        initCount++;
        // send the state as it is currently back to the help window
        // wait to init the state until both targets are registered
        if (initCount &gt;= 2) {
          updateState(offerFulfillmentState, false);
        }
      } else if ('help-open-modal' == event.data.action &amp;&amp; orchestrator) {
        closePushVisibility();
        closeContent();
        orchestrator.loginOrSelectItemViaOfferModal(false);
      } else if ('help-open-modal-link' == event.data.action &amp;&amp; orchestrator) {
        // TODO: let's move this into its own thing.
        closePushVisibility();
        closeContent();
        orchestrator.loginOrSelectItemViaOfferModal(true);
      } else if ('help-add-item-to-cart' == event.data.action &amp;&amp; orchestrator) {
        orchestrator.grantOffer();
      }
    }, false);
  };

  const sessionStateStr = storage.session.getItem('_pear_offer_state');
  const offerFulfillmentState = (sessionStateStr &amp;&amp; JSON.parse(sessionStateStr)) || {
    wasInitiallyLoggedIn: false,
    isloggedIn: false,
    openedModal: false,
    completedModal: false,
    closedModal: false,
    loggedInInModal: false,
    registeredInModal: false,
    loggedInOnSite: false,
    registeredOnSite: false,
    inCheckout: false,
    itemInCart: false,
    alreadyRedeemed: false,
    offerComplete: false,
    unavailable: false,
  };

  const updateState = (newVals, doPush) =&gt; {
    if (storage.local.getItem('pear_helper_disabled')) {
      return;
    }
    Object.assign(offerFulfillmentState, newVals);
    storage.session.setItem('_pear_offer_state', JSON.stringify(offerFulfillmentState));
    // Before the iframe is initialized, still allow state updates, just don't write them to any iframe
    [iframe, pushIframe].forEach((target) =&gt; {
      if (target) {
        target.contentWindow.postMessage({
          action: 'help-update-state',
          value: {
            newState: newVals,
            doPush: doPush,
          },
        }, '*');
      }
    });
  };

  // eslint-disable-next-line  no-unused-vars
  const getState = () =&gt; {
    return offerFulfillmentState;
  };

  return {
    initialize: initialize,
    updateState: updateState,
    updateConfig: setConfig,
  };
})();


},{"../analytics-events.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/analytics-events.js","../config.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/config.js","../storage.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/storage.js","../utilities.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/utilities.js","./pear-navigation.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/sdk/pear-navigation.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/sdk/pdp-plus.js":[function(_dereq_,module,exports){

// eslint-disable-next-line  no-unused-vars
const Config = _dereq_('../config.js');
const Util = _dereq_('../utilities.js');
const parseUri = _dereq_('../parseuri.js');
const debounce = _dereq_('../debounce.js');
const console = _dereq_('../pear-console.js').PearConsole;
const isEqual = _dereq_('lodash.isequal');


/**
 * Given a list of mappings, select and load the correct pdp mapping, and register debounced event listeners to update
 * the loaded mapping if needed.
 */
const registerMappings = (module.exports.registerMappings = (mappings, customInjectCallback) =&gt; {

  if (window.__PEAR_SDK_LOADED &amp;&amp; !customInjectCallback) {
    return;
  }

  const selectMapping = () =&gt; {
    let parsedUrl = parseUri(window.location.href);

    return mappings.filter(mapping =&gt; {
      let mappingParsedUrl = parseUri(mapping.urlMatch || mapping.pathname);


      // Check host/url root if it dosnt match then return  || sometimes we are give stageing sites
      if (mappingParsedUrl.host &amp;&amp; mappingParsedUrl.host != parsedUrl.host) {
        return false;
      }

      const looseMatch = mapping.looseUrlMatch &amp;&amp; mapping.looseUrlMatch !== "false";
      //find any match in the pathname
      if (looseMatch &amp;&amp; parsedUrl.path.lastIndexOf(mappingParsedUrl.path) == -1) {
        return false;
      }

      // Check for mismatched path
      else if (!looseMatch &amp;&amp; mappingParsedUrl.path &amp;&amp; mappingParsedUrl.path != parsedUrl.path) {
        return false;
      }

      // Filter for any configured url parameters that don't match the current url parameters. If the list of non-matching url parameters
      // is empty, then all parameters match. If not, exclude this mapping.
      let allParamsMatch = Object.entries(mappingParsedUrl.queryKey).filter((entry) =&gt; parsedUrl.queryKey[entry[0]] != entry[1]).length == 0;
      if (!allParamsMatch) {
        return false;
      }

      // Check for any missing validation selectors
      if (mapping.validationSelector) {
        const validationElement = document.querySelector(mapping.validationSelector);
        if (!validationElement) {
          return false;
        }
      }

      return true;
    });
  }

  const injectMapping = (mappings) =&gt; {
    const widgetConfigs = [];

    const widgetConfig = {
      widget: 'retailer-list',
      layout: mappings[0] &amp;&amp; mappings[0].template || "agnostic-pdp",
      label: mappings[0] &amp;&amp; mappings[0].label || "",
      offerId: mappings[0] &amp;&amp; mappings[0].offerId,
      border: 'none',
      cookiePolicy: mappings[0] &amp;&amp; mappings[0].cookiePolicy,
      cookieManager: mappings[0] &amp;&amp; mappings[0].cookieManager,
      sibling: mappings[0] &amp;&amp; mappings[0].sibling || false,
      prepend: mappings[0] &amp;&amp; mappings[0].prepend || false,
      allowPDPAndProductLocator: mappings[0] &amp;&amp; mappings[0].allowPDPAndProductLocator,
      vendorId:mappings[0].vendorId
    };

    mappings.forEach(mapping =&gt; {
      const config = {
        widget: 'retailer-list',
        layout: mapping.layout || mapping.template || "agnostic-pdp",
        containerSelector: mapping.containerSelector || '#pear-pdp-target',
        label: mapping.label || mapping.name || "",
        offerId: mapping.offerId, 'border': 'none',
        cookiePolicy: mapping.cookiePolicy,
        cookieManager: mapping.cookieManager,
        sibling: mapping.sibing || false,
        prepend: mapping.prepend || false,
        allowPDPAndProductLocator: mappings[0].allowPDPAndProductLocator || false,
        vendorId:mappings[0].vendorId

      };
      widgetConfigs.push(config)
    });

    widgetConfig.pdpConfigs = widgetConfigs;

    if (customInjectCallback || window.__PEAR_RETAILER_LIST_IMPORT_AND_GO) {
      var injectCallback = customInjectCallback || window.__PEAR_RETAILER_LIST_IMPORT_AND_GO;
      if (widgetConfig &amp;&amp; widgetConfig.pdpConfigs &amp;&amp; widgetConfig.pdpConfigs.length &gt; 0) {
        injectCallback(widgetConfig.pdpConfigs);
      } else {
        injectCallback([widgetConfig]);
      }
    } else {
      // TODO: may need to add a function to reload given a config
      (e =&gt; {
        s = document.createElement("script"),
          s.type = "text/javascript",
          s.src = Config.OFFERS_URL + `/js/sdk.js?config=${encodeURIComponent(JSON.stringify(e))}`,
        document.head.appendChild(s)
      })(widgetConfig);
    }

  }

  let curMapping = null;
  let currentOffer;

  const load = () =&gt; {
    try {
      let matches = selectMapping();
      curMapping = matches;
      if (matches &amp;&amp; matches.length &gt; 0) {
        injectMapping(matches);
      }
    } catch (e) {
      console.error(e);
    }
  }


  setInterval(() =&gt; {
    let parsedUrl = parseUri(window.location.href);
    if (curMapping &amp;&amp; curMapping.length &gt; 0) {
      curMapping.forEach(el =&gt; {
        const checkPath = el.pathname != null ? parseUri(el.pathname).path : parseUri(el.urlMatch).path;
        if ((el.validationSelector &amp;&amp; !document.querySelector(el.validationSelector)) || (el.validationSelector &amp;&amp; document.querySelector(el.validationSelector) &amp;&amp; currentOffer != el.offerId) || (parsedUrl.path.indexOf(checkPath) == -1)) {
          currentOffer = el.offerId;
          load();
        }
      })
    } else {
      load();
    }
  }, 1000);

  // trigger the first load immediately
  load();
});

},{"../config.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/config.js","../debounce.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/debounce.js","../parseuri.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/parseuri.js","../pear-console.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/pear-console.js","../utilities.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/utilities.js","lodash.isequal":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/lodash.isequal/index.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/sdk/pear-navigation.js":[function(_dereq_,module,exports){
/**
 * These functions are heavily used, so they live in their own file apart from the other SDK utils.  This way the sdk
 * loader can stay small in size.
 */

const parseUri = _dereq_('../parseuri.js');
const Config = _dereq_('../config.js');
const storage = _dereq_('../storage.js');

const isPearReferrer = module.exports.isPearReferrer = function() {
  const referrer = document.referrer;
  return referrer &amp;&amp; referrer.indexOf('pearcommerce.com') &gt; -1;
};

/**
 * Detects whether the session was loaded from a Pear redirect.  This is detected by checking if we've previously marked
 * the session as being from pear, if referer contains "offers.pearcommerce.com", whether the "ref" query parameter
 * is "pear" or whether pear_offer_id is truthy.  Returns a truthy value if we came from pear.
 */
module.exports.isFromPear = function() {
  let val = storage.session.getItem('_pear_ref');

  const sessionOfferId = getSessionPearOfferId();

  if (val) {
    return sessionOfferId || val;
  }

  // Check referrer first, because we may want to short circuit even if we have offer id
  if (isPearReferrer()) {
    val = true;
  } else if (Config.production) {
    // Flip this to limit to only pear referer
    // val = false;
    // return val;
  }

  // Even tho we checked referrer first, for debuggability let's prefer the offer id as the value of this var
  val = sessionOfferId || val;

  // if we don't have offer id and we don't have referrer, the last positive case is a manual ref=pear
  if (!val) {
    const locationUrlParams = parseUri(window.location).queryKey;
    val = locationUrlParams.ref == 'pear';
  }

  if (val) {
    storage.session.setItem('_pear_ref', val);
  }

  return !!val;
};

/**
 * Returns the pear_offer_id for this session if there ever has been one in the url
 */
const getSessionPearOfferId = module.exports.getSessionPearOfferId = function() {
  const sessionVal = storage.session.getItem('_pear_offer_id');
  const requestVal = getRequestPearOfferId();

  if (requestVal &amp;&amp; sessionVal != requestVal) {
    storage.session.setItem('_pear_offer_id', requestVal);
  }

  return requestVal || sessionVal;
};

// eslint-disable-next-line  no-unused-vars
const setSessionPearOfferId = module.exports.setSessionPearOfferId = function(offerId) {
  return storage.session.setItem('_pear_offer_id', offerId);
};

/**
 * Returns the pear_offer_id for this *request* iff it's in the url NOW
 */
const getRequestPearOfferId = module.exports.getRequestPearOfferId = function() {
  const locationUrlParams = parseUri(window.location).queryKey;
  const ret = locationUrlParams['pear_offer_id'];
  if (ret) {
    return ret;
  }
  if (document.referrer) {
    const locationUrlParams = parseUri(document.referrer).queryKey;
    const ret = locationUrlParams['pear_offer_id'];
    if (ret) {
      return ret;
    }
  }
  if (window.location.hash &amp;&amp; window.location.hash.indexOf('?') &gt; -1) {
    const locationUrlParams = parseUri('https://pearcommerce.com' + window.location.hash.substring(window.location.hash.indexOf('?'))).queryKey;
    const ret = locationUrlParams['pear_offer_id'];
    if (ret) {
      return ret;
    }
  }
  return false;
};

},{"../config.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/config.js","../parseuri.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/parseuri.js","../storage.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/storage.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/sdk/sdk-shared.js":[function(_dereq_,module,exports){
/**
 * Shared sdk functions
 */
const Util = _dereq_('../utilities.js');
const parseUri = _dereq_('../parseuri.js');
const client = Util.memoize(() =&gt; {
  return _dereq_('./sentry-client.js');
});
const Config = _dereq_('../config.js');
const memoize = Util.memoize;
const PearNav = _dereq_('./pear-navigation.js');
const Helper = _dereq_('./help-overlay.js');
const base64 = _dereq_('../base64.js');
const analytics = _dereq_('../analytics-events.js');

/**
 * Listens for requests made matching the given criteria. When the request completes, the provided handler callback will
 * be called with the following parameters:  method, url, async, user, and pass (theXMLHttpRequest.open function spec).
 * The "this" will be the XMLHttpRequest itself.
 */
let intercepts = null;
const interceptAjaxCalls = module.exports.interceptAjaxCalls = function (criteria, handler) {
  if (intercepts == null) {
    intercepts = [];

    // Rather than make several overrides, keep a list of the intercepts, and only override once
    (function (open) {
      XMLHttpRequest.prototype.open = function (method, url, async, user, pass) {
        intercepts.forEach(([criteria, handler], index) =&gt; {
          if (!criteria.readyState) {
            criteria.readyState = 4;
          }

          const parsedUrl = parseUri(url);

          let matches = true;
          if (matches &amp;&amp; criteria.path) {
            let _matches = false;
            criteria.path.forEach((_path) =&gt; {
              if (_path instanceof RegExp) {
                if (_path.test(parsedUrl.path)) {
                  _matches = true;
                }
              } else {
                if (parsedUrl.path == _path) {
                  _matches = true;
                }
              }
            });

            if (!_matches) {
              matches = false;
            }
          }

          if (matches &amp;&amp; criteria.host &amp;&amp; parsedUrl.host != criteria.host) {
            matches = false;
          }

          if (matches &amp;&amp; criteria.method) {
            let _matches = false;
            criteria.method.forEach((_method) =&gt; {
              if (_method.toUpperCase() == method) {
                _matches = true;
              }
            });

            if (!_matches) {
              matches = false;
            }
          }

          if (matches &amp;&amp; criteria.filter &amp;&amp; !criteria.filter(parsedUrl)) {
            matches = false;
          }

          if (matches) {
            if (!this.recordingRequestBody) {
              this.recordingRequestBody = true;
              this._send = this.send;
              this.send = function (body) {
                this.requestBody = body;
                return this._send(body);
              };
            }

            if (criteria.readyState == 0) {
              handler.apply(this, args);
            } else {
              this.addEventListener('readystatechange', function (...args) {
                if (criteria.readyState == this.readyState) {
                  let matches = true;
                  if (criteria.readyState == 4) {
                    if (matches &amp;&amp; criteria.status &amp;&amp; criteria.status.indexOf(this.status) == -1) {
                      matches = false;
                    }
                  }
                  if (matches) {
                    handler.apply(this, args);
                  }
                }
              }, false);
            }
          }
        });
        open.call(this, method, url, async, user, pass);
      };
    })(XMLHttpRequest.prototype.open);
  }

  if (typeof criteria != 'object') {
    criteria = {
      path: criteria,
    };
  }

  if (typeof criteria.method == 'string') {
    criteria.method = [criteria.method];
  }

  if (typeof criteria.status == 'number') {
    criteria.status = [criteria.status];
  }

  if (!(criteria.path instanceof Array)) {
    criteria.path = [criteria.path];
  }

  const intercept = [criteria, handler];
  intercepts.push(intercept);
  return intercept;
};

const removeAjaxIntercept = module.exports.removeAjaxIntercept = function (intercept) {
  if (intercepts != null) {
    const index = intercepts.indexOf(intercept);
    if (index &gt;= 0) {
      intercepts.splice(index, 1);
    }
  }
};

/**
 * Same as interceptAjaxCalls, except for an additional first parameter to the callback containing json response object.
 */
const interceptAjaxJsonCalls = module.exports.interceptAjaxJsonCalls = async function (criteria, handler) {
  return await interceptAjaxCalls(criteria, function (...args) {
    args.unshift(this.requestBody &amp;&amp; JSON.parse(this.requestBody));
    args.unshift(this.responseText &amp;&amp; JSON.parse(this.responseText));
    handler.apply(this, args);
  });
};

/**
 * Wait for an ajax request with the given criteria to occur then before calling the callback, wait for something new
 */
module.exports.waitForAjaxThenCondition = async (ajaxCriteria, pollingFunction, handler) =&gt; {
  await interceptAjaxJsonCalls(
    ajaxCriteria,
    asyncSentryWrap(async () =&gt; {
      const results = await Util.pollFor(pollingFunction);
      await handler(results);
    }));
};

module.exports.getAngularService = Util.getAngularService;

const initializePym = module.exports.initializePym = memoize(function () {
  return window.pym || (window.pym = _dereq_('../pym.v1.js'));
});


const getPearOfferUrl = module.exports.getPearOfferUrl = function (config) {
  config = config || {};
  const offerId = PearNav.getSessionPearOfferId();
  const sendForLaterPart = config &amp;&amp; config.sendLink ? '/send_link_for_later' : '';
  if (offerId) {
    let ret = `${Config.OFFERS_URL}/offer/${offerId}${sendForLaterPart}` +
      (window.location.search ? (window.location.search + '&amp;') : '?') +
      `in_iframe=true&amp;baseUrl=${window.location.protocol}//${window.location.hostname}`;
    if (config &amp;&amp; config.extraParameters) {
      for (const key in config.extraParameters) {
        // if (config.extraParameters.hasOwnProperty(key)) {
        ret += '&amp;' + key + '=' + encodeURIComponent(config.extraParameters[key]);
        // }
      }
    }
    if (config &amp;&amp; config.stateModalParameters) {
      for (const key in config.stateModalParameters) {
        // if (config.stateModalParameters.hasOwnProperty(key)) {
        ret += '&amp;' + key + '=' + encodeURIComponent(config.stateModalParameters[key]);
        // }
      }
    }
    return ret;
  }
};

// eslint-disable-next-line  no-unused-vars
const getPearClid = module.exports.getPearClid = memoize(function () {
  return Util.getUrlVars()['pearclid'];
});

const getPearTxnId = module.exports.getPearTxnId = memoize(function () {
  return Util.getUrlVars()['pear_transaction_id'];
});

// Pre-load the pear offer url to reduce load times
if (getPearOfferUrl()) {
  const res = document.createElement('link');
  res.rel = 'preload';
  res.as = 'document';
  res.href = getPearOfferUrl();
  document.head.appendChild(res);
}

/**
 * Opens the pear offer in a modal and takes a config object with optional callbacks for each event in the offer
 * modal's lifecycle.
 *
 * This function returns a 2-member array consisting of (1) a promise which resolves after the entire modal lifecycle
 * is successful (eg: the same event that triggers onLoginSuccess also resolves the promise), resolving to the user's auth
 * info, and (2) a closeModal function which when called aborts the entire modal.
 *
 * @param config:
 * {
 *   onOpen: &lt;function&gt;,         // called with background and wrapper elements when the modal is opened
 *   onClose: &lt;function&gt;,        // called when the modal is closed
 *   onSaveAuthData: &lt;function&gt;, // called with retailer-specific auth data, usually when a submission of the login form
 *                               // is attempted, or after the server returns a session token.
 *   onLoginSuccess: &lt;function&gt;  // called when a submission of the login form is successful, passing any data from the
 *                               // server and a closeModal function reference for the caller to decide when to close
 *   headerHeight: &lt;percentage&gt;  // the height of the mobile header as a %
 *   footerHeight: &lt;percentage&gt;  // the height of the mobile footer as a %
 * }
 */
// eslint-disable-next-line  no-unused-vars
const openModalIfNecessary = module.exports.openModalIfNecessary = async (config) =&gt; {
  if (getPearOfferUrl()) {
    if (PearNav.isPearReferrer() || getPearTxnId()) {
      // If the referer is from Pear, or uses a single use transaction id, we can open the modal with confidence.
      return openModal(config);
    } else {
      // Don't display modal if the referer isn't from pear and we're limiting.
      var pearOfferId = PearNav.getSessionPearOfferId();
      let json = pearOfferId &amp;&amp; (await (await Util.fetchWithTimeoutAndFallback(Config.API_URL + '/v1/upcs_and_offer/' + pearOfferId + "?timeout=2000")).json());

      if (json &amp;&amp; json.offer &amp;&amp; !json.offer.limitToValidSource) {
        return openModal(config);
      }
    }
  }
  return [null, null];
};

const openModal = function (config) {
  analytics.sendModalOpenEvent();

  // Default header and footer heights
  config = Object.assign({
    headerHeight: 0,
    footerHeight: 0,
  }, config);
  const url = getPearOfferUrl(config);

  const pym = initializePym();
  const modalClosedStyles = {
    bodyStyle: document.body.style,
    htmlStyle: document.documentElement.style,
  };
  const tempEl = document.createElement('div');
  const domString = `
      &lt;div style="
          position: absolute;
          left:0;
          right:0;
          top:0;
          background-color: rgba(0, 0, 0, 0.6);
          z-index: 10000;
          height: 100%;
          overflow-y: auto;"&gt;
          &lt;div id="pear-modal-wrapper" style="
              border-radius:5px;
              position:absolute;
              max-width:680px;
              margin-left:auto;
              margin-right: auto;
              background-color:white;
              left: 0;
              right: 0;
              top: 5%;
              opacity: initial;
              overflow-x: hidden;
              overflow-y:auto; 
              padding:4%;
              -webkit-overflow-scrolling: touch;"
              onclick="modalClick()"&gt;
              &lt;div id="pear-modal"&gt;&lt;/div&gt;
              &lt;img style="
                  position: absolute;
                  right: 20px;
                  top:  20px;
                  height: 30px;
                  cursor: pointer;
                  opacity: .5;"
                  src="https://assets.pearcommerce.com/1268315032529856.svg" /&gt;
           &lt;/div&gt;
      &lt;/div&gt;
  `;
  tempEl.innerHTML = domString;
  const background = tempEl.firstElementChild;
  const modalWrapper = background.querySelector('#pear-modal-wrapper');

  if (Util.isMobile()) {
    modalWrapper.style.paddingTop = '40px';
    modalWrapper.style.top = '0';
    modalWrapper.style.bottom = '0';
    modalWrapper.style.maxHeight = 'initial';
    modalWrapper.style.borderRadius = '0';

    background.style.height = `${100 - config.headerHeight - config.footerHeight}%`;
    background.style.top = `${config.headerHeight}%`;
  }
  modalWrapper.onclick = function () {
    event.stopPropagation();
  };

  const closeModal = function (success) {
    try {
      document.body.style.position = modalClosedStyles.bodyStyle.position;
      document.body.style.height = modalClosedStyles.bodyStyle.height;
      document.body.style.width = modalClosedStyles.bodyStyle.width;

      document.documentElement.style.position = modalClosedStyles.htmlStyle.position;
      document.documentElement.style.height = modalClosedStyles.htmlStyle.height;
      document.documentElement.style.width = modalClosedStyles.htmlStyle.width;

      background.remove();
      if (config.onClose) {
        config.onClose();
      }
    } catch (e) {
      client().captureException(e);
    }
    if (!success) {
      analytics.sendModalCancelledEvent();
      Helper.updateState({ closedModal: true }, true);
    }
  };

  background.onclick = function () {
    closeModal(false);
  };
  background.querySelector('img').onclick = background.onclick;

  document.body.appendChild(background);
  document.body.style.position = 'fixed';
  document.body.style.height = '100%';
  document.body.style.width = '100%';

  document.documentElement.style.position = 'fixed';
  document.documentElement.style.height = '100%';
  document.documentElement.style.width = '100%';

  const pymIframe = new pym.Parent('pear-modal', url);

  // force the iframe to re-grow from nothing every time
  pymIframe.onMessage('state-change', (contentSize) =&gt; {
    pymIframe._onHeightMessage(contentSize);
    pymIframe.sendMessage('state-change-resize-complete', '');
  });

  Helper.updateState({ openedModal: true, closedModal: false });
  if (config['onOpen']) {
    config['onOpen'](background, modalWrapper);
  }

  if (config['onSaveAuthData']) {
    pymIframe.onMessage('pear_save_auth_data', (rawAuthInfo) =&gt; config['onSaveAuthData'](base64.base64Decode(rawAuthInfo)));
  }

  const successP = new Promise((resolve) =&gt; {
    pymIframe.onMessage('pear_login_success', (dataJson) =&gt; {
      const data = JSON.parse(dataJson);
      const stateChange = {
        completedModal: true,
      };
      Object.assign(stateChange, data.type == 'register' ? { registeredInModal: true } : { loggedInInModal: true });
      Helper.updateState(stateChange);
      if (data.type == 'register') {
        analytics.sendRegisterEvent();
        analytics.sendPearRegisterEvent();
      } else {
        analytics.sendLoginEvent();
        analytics.sendPearLoginEvent();
      }
      analytics.sendPearAddToCartEvent();

      if (config['onLoginSuccess']) {
        config['onLoginSuccess'](data);
      }
      resolve(data);
    });
  });

  pymIframe.onMessage('pear_text_sent', (data) =&gt; {
    analytics.sendLeadEvent();
    if (config['onTextSent']) {
      config['onTextSent'](data);
    }
  });

  pymIframe.onMessage('pear_email_sent', (data) =&gt; {
    analytics.sendLeadEvent();
    if (config['onEmailSent']) {
      config['onEmailSent'](data);
    }
  });

  return [successP, closeModal];
};

const sentryHandler = (e) =&gt; {
  try {
    if (!(e instanceof Error)) {
      e = new Error(e);
    }

    client().captureException(e);

    try {
      analytics.sendEvent('PearError', { message: e.message });
    } catch (e1) {
      if (!(e1 instanceof Error)) {
        e1 = new Error(e1);
      }
      client().captureException(e1);
    }

    if (Config.env != 'production') {
      console.error(e);
    }
  } catch (e2) {
    if (!(e2 instanceof Error)) {
      e2 = new Error(e2);
    }
    client().captureException(e2);
  }
};
const asyncSentryWrap = module.exports.asyncSentryWrap = Util.exceptionBoundaryWrapperFactory(sentryHandler);
const sentryWrap = module.exports.sentryWrap = asyncSentryWrap;

let loadIframePromise = null;
const getLoadIframePromise = module.exports.getLoadIframePromise = function () {
  if (loadIframePromise == null) {
    loadIframePromise = Util.domReadyPromise.then(() =&gt; {
      const referrer = document.referrer;
      let OFFERS_BASE = Config.OFFERS_URL;
      if (referrer &amp;&amp; referrer.indexOf('offers.pearcommerce.com') &gt; -1) {
        OFFERS_BASE = referrer.split('/transact/')[0].split('/offer/')[0];
      }

      return new Promise((resolve, reject) =&gt; {
        window.addEventListener('message', function (event) {
          if ('init' == event.data.action &amp;&amp; event.origin == OFFERS_BASE) {
            resolve(iframe);
          }
        }, false);

        const iframe = document.createElement('iframe');
        iframe.src = OFFERS_BASE + '/html/session_storage.html';
        iframe.style.position = 'absolute';
        iframe.style.top = '-1000px';
        iframe.style.left = '-1000px';
        iframe.style.height = '1px';
        iframe.style.width = '1px';
        iframe.id = 'pear_iframe';
        document.querySelector('body').appendChild(iframe);
      });
    });
  }
  return loadIframePromise;
};

const sendIframeMessage = ((action) =&gt; {
  const key = action + '' + Date.now();
  const iframeResponsePromise = new Promise((resolve) =&gt; {
    window.addEventListener('message', function (event) {
      if (action == event.data.action &amp;&amp; key == event.data.key) {
        resolve(event.data.value);
      }
    }, false);
  });

  return getLoadIframePromise().then((iframe) =&gt; {
    iframe.contentWindow.postMessage({
      action: action,
      key: key,
    }, '*');

    return iframeResponsePromise;
  });
});

const getAuthInfo = () =&gt; sendIframeMessage('getAuth').then((rawAuthInfo) =&gt; {
  const authInfo = rawAuthInfo &amp;&amp; JSON.parse(CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Base64.parse(rawAuthInfo)));
  return authInfo;
});

const removeAuthInfo = () =&gt; sendIframeMessage('removeAuth');

// eslint-disable-next-line  no-unused-vars
const iframe = module.exports.iframe = {
  getAuthInfo: getAuthInfo,
  removeAuthInfo: removeAuthInfo,
};

},{"../analytics-events.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/analytics-events.js","../base64.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/base64.js","../config.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/config.js","../parseuri.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/parseuri.js","../pym.v1.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/pym.v1.js","../utilities.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/utilities.js","./help-overlay.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/sdk/help-overlay.js","./pear-navigation.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/sdk/pear-navigation.js","./sentry-client.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/sdk/sentry-client.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/sdk/sentry-client.js":[function(_dereq_,module,exports){
const Config = _dereq_('../config.js');
const parseUri = _dereq_('../parseuri.js');
const Util = _dereq_('../utilities.js');
const console = Util.PearConsole;

let Sentry;
let ExtraErrorDataIntegration;

let error = false;

const blacklistedDomains = ["riteaid.com"]
try {
  let blacklist = false;
  blacklistedDomains.forEach((blacklistedDomain) =&gt; {
    if (window.location.href.indexOf(blacklistedDomain) &gt; -1) {
      blacklist = true;
    }
  })
  if (blacklist) {
    throw new Error("Known Namespace conflict on " + window.location.href);
  }
  Sentry = _dereq_('@sentry/browser/dist/index');
  //ExtraErrorDataIntegration = require('@sentry/integrations').ExtraErrorData;
} catch (ex) {
  error = true;
  module.exports = {
    captureException: function (e) {
      if (!(e instanceof Error)) {
        e = new Error(e);
      }
      console.log(e);
    },
    setContext: function () {

    },
    setTag: function () {

    }
  }
}
if (!error) {

  const urlDebug = parseUri(window.location).queryKey['pear_debug'];

  const params = {
    dsn: 'https://43ab018f4059466a9b7c3db0bfe5bceb@sentry.io/1470754',

    // Set tracesSampleRate to 1.0 to capture 100%
    // of transactions for performance monitoring.
    // We recommend adjusting this value in production
    tracesSampleRate: Config.env == 'production' ? 0.2 : 1.0,
    debug: Config.env != 'production' || urlDebug,
    sendDefaultPii: true,
  };

  if (Config['revisionShort'] &amp;&amp; Config['env'] != 'development') {
    params['release'] = Config['env'] + '-' + Config['revisionShort'];
  }

  params['environment'] = Config['env'];

  const client = new Sentry.BrowserClient(params);
  const hub = new Sentry.Hub(client);
  hub.bindClient(client);

  try {
    const context = {
      url: window.location.href,
      userAgent: navigator.userAgent,
    };

    hub.setContext("client", context);
  } catch (e) {
    if (!(e instanceof Error)) {
      e = new Error(e);
    }
    hub.captureException(e);
  }

  module.exports = hub;
}

},{"../config.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/config.js","../parseuri.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/parseuri.js","../utilities.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/utilities.js","@sentry/browser/dist/index":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/@sentry/browser/dist/index.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/sdk/targets/retailer-list.js":[function(_dereq_,module,exports){
// eslint-disable-next-line  no-unused-vars
const Config = _dereq_('../../config.js');
const Util = _dereq_('../../utilities.js');
const SDK = _dereq_('../sdk-shared.js');
const console = _dereq_('../../pear-console.js').PearConsole;
const parseUri = _dereq_('../../parseuri.js');
const pym = SDK.initializePym();
const PDPPlus = _dereq_('../pdp-plus.js');

function markRetailerListLoaded() {
  window.__PEAR_SDK_LOADED = (window.__PEAR_SDK_LOADED || {});
  window.__PEAR_SDK_LOADED[Config.API] = true;
}

function retailerListHasLoaded() {
  return window.__PEAR_SDK_LOADED &amp;&amp; window.__PEAR_SDK_LOADED[Config.API];
}

if (retailerListHasLoaded()) {
  console.warn("Not re-initializing retailer-list.js!");
  return;
}

// This is a hack to allow pdp plus widgets to quickly replace their content with a different offerId.
// TODO: skip retailer-list altogether and just have pdp-plus.js inject the iframe
window.__PEAR_RETAILER_LIST_IMPORT_AND_GO = importAndGo = async (fullConfigs) =&gt; {
  let configs = fullConfigs.filter(({widget}) =&gt; widget === 'retailer-list');

  console.log('retailer-list configs', configs);
  
  configs.forEach(config =&gt; {
    // We've gotten a valid configuration and have not loaded a retailer list before
    // so mark as loaded and proceed. This does mean errors down the line will result
    // in the widget not loading at all and being unrecoverable.
    markRetailerListLoaded();

    // eslint-disable-next-line  no-unused-vars
    // TODO: Stop overriding a reserved word
    const console = Util.PearConsole;

    const SCRIPT_PARAMS = (config &amp;&amp; { queryKey: config }) || (document.currentScript &amp;&amp; document.currentScript.src &amp;&amp; parseUri(document.currentScript.src)) || { queryKey: {} };

    const WIDGET_CONFIG = window['PEAR_WIDGET_CONFIG'] = config || window['PEAR_WIDGET_CONFIG'] || {};
    const layout = config['layout'] || SCRIPT_PARAMS.queryKey['layout'] || WIDGET_CONFIG.layout || 'picker';
    const label = config['label'] || SCRIPT_PARAMS.queryKey['label'] || WIDGET_CONFIG.label || 'none'

    let configParams = config;
    console.log("widgetconfig", WIDGET_CONFIG, "configParams", configParams);
    const containerId = (configParams.containerId || SCRIPT_PARAMS.queryKey['containerId'] || WIDGET_CONFIG.containerId || WIDGET_CONFIG.CONTAINER_ID);
    const containerSelector = (configParams.containerSelector || SCRIPT_PARAMS.queryKey['containerSelector'] || WIDGET_CONFIG.containerSelector);
    const height = SCRIPT_PARAMS.queryKey['height'] || WIDGET_CONFIG.height;
    let width = SCRIPT_PARAMS.queryKey['width'] || WIDGET_CONFIG.width;
    if (layout == 'picker' &amp;&amp; (!width || width &gt; 399)) {
      width = 399;
    }

    const minHeight = height || 200;
    const removeFixedHeightAncestors = WIDGET_CONFIG.removeFixedHeightAncestors || SCRIPT_PARAMS.queryKey['removeFixedHeightAncestors'];

    const VENDOR_ID = WIDGET_CONFIG.vendorId || SCRIPT_PARAMS.queryKey['vendorId'];
    const border = WIDGET_CONFIG.border || SCRIPT_PARAMS.queryKey['border'] || (VENDOR_ID == '1709832178022528' &amp;&amp; '1px solid rgb(255, 245, 0)') || '2px solid rgb(241, 241, 241)';
    const OFFER_ID = configParams.offerId || WIDGET_CONFIG.offerId;
    const allowPDPAndProductLocator = !!WIDGET_CONFIG.allowPDPAndProductLocator; 
    const hideCreative = !!WIDGET_CONFIG.hideCreative;
    const hideAddress = !!WIDGET_CONFIG.hideAddress;
    const hideCarousel = !!WIDGET_CONFIG.hideCarousel;
    const stylesheet = SCRIPT_PARAMS.queryKey['stylesheet'] || WIDGET_CONFIG.stylesheet;
    const cookieManager = SCRIPT_PARAMS.queryKey['cookieManager'] || WIDGET_CONFIG.cookieManager;
    const cookiePolicy = SCRIPT_PARAMS.queryKey['cookiePolicy'] || WIDGET_CONFIG.cookiePolicy;


    const options = Object.assign({}, {
      ajax_url: undefined,
      ajax_action: undefined,
      active_product_id: undefined,
      active_recipe_id: undefined,
      info_popup_class: 'product-info-popup',
    });

    const go = module.exports = SDK.sentryWrap(async () =&gt; {
      try {
        let sectionParent = null;
        if (containerSelector || containerId) {
          console.log("at selector: " + containerSelector);
          if (containerId) {
            while (!document.getElementById(containerId)) {
              await Util.timeout(50);
            }
            sectionParent = document.getElementById(containerId);
          }
          if (!sectionParent &amp;&amp; containerSelector) {
            while (!document.querySelector(containerSelector)) {
              await Util.timeout(50);
            }
            sectionParent = document.querySelector(containerSelector);
          }
        } else {
          const thisScript = document.scripts[document.scripts.length - 1];
          sectionParent = thisScript.parentElement;
        }

        let widgetWrap = "pear-widget-iframe-wrap-" + (OFFER_ID || Math.floor(Math.random() * 1000000000));
        const iframeContainerId = `pear-widget-iframe-${containerSelector}-${config.label || OFFER_ID}`;
        //default value is false so when allowPDPAndProductLocator is true we want to skip this if clause 
        if (!allowPDPAndProductLocator) {
          //this removes a product locator if it is found on the same page
          document.querySelectorAll('iframe[src*="/product-locator"]').forEach((iframe) =&gt; {
            iframe.parentElement.removeChild(iframe);
            console.log('Deleting existing iframe', iframe);
          });

          document.querySelectorAll(`[id='${widgetWrap}']`).forEach(widgetWrap =&gt; {
            widgetWrap.parentElement.removeChild(widgetWrap);
            console.log('Deleting existing widgetWrap', widgetWrap);
          });

          //this removes an iframe with an exisitng iframe id. we sometimes find ourself not clearing this if a new pdp is brought
          document.querySelectorAll(`[id='${iframeContainerId}']`).forEach(iframeContainer =&gt; {
            iframeContainer.parentElement.removeChild(iframeContainer);
            console.log('Deleting existing iframeContainer', iframeContainer);
          });

          //check if css selector element has a child element and if so remove them
          const containerElement = document.querySelector(containerSelector)
          if (containerElement) {
            containerElement.childNodes.forEach(iframeContainer =&gt; {
              if(iframeContainer != null &amp;&amp; iframeContainer.id != null &amp;&amp; iframeContainer.id.indexOf('pear-widget-iframe') != -1){
                iframeContainer.remove(iframeContainer)
              }
            });
          }
        }

        // Insert iframe
        if (sectionParent) {
          const iframeContainer = document.createElement('div');
          const domString = `
          &lt;div class="product-content-bkg"  id="` + widgetWrap + `" style="display:none; min-height: ${minHeight - 40}px; ${height ? ('height: ' + height + 'px;') : ''}; ${width ? ('width: ' + width + 'px;') : ''} "&gt;&lt;/div&gt;
          &lt;img id="pear-widget-iframe-loading" alt="loading icon" class="spinner retailer-list-iframe-loading" src="${Config.OFFERS_URL}/img/spinner.gif" style="height: 30px; width: auto; margin: auto; padding: 40px;"&gt;                    
      `;
          iframeContainer.innerHTML = domString;
          iframeContainer.style.display = 'none';
          iframeContainer.style.position = 'relative';
          // iframeContainer.style.overflowY = 'scroll';
          // No height is set so scoll is not used
          iframeContainer.style.border = border;
          iframeContainer.style.width = width ? width + "px" : "auto";
          iframeContainer.id = iframeContainerId;
          if (WIDGET_CONFIG.sibling) {
            if (WIDGET_CONFIG.prepend) {
              sectionParent.parentElement.insertBefore(iframeContainer, sectionParent);
            } else {
              sectionParent.parentElement.insertAfter(iframeContainer, sectionParent);
            }
          } else {
            if (WIDGET_CONFIG.prepend) {
              sectionParent.prepend(iframeContainer);
            } else {
              sectionParent.appendChild(iframeContainer);
            }
          }

          if (WIDGET_CONFIG.hideContentSelector) {
            const hideContent = document.querySelectorAll(WIDGET_CONFIG.hideContentSelector);
            if (hideContent &amp;&amp; hideContent.length) {
              for (var i = 0; i &lt; hideContent.length; i++) {
                hideContent[i].style.display = "none";
              }
            }
          }

          if (WIDGET_CONFIG.deleteContentSelector) {
            const hideContent = document.querySelectorAll(WIDGET_CONFIG.deleteContentSelector);
            if (hideContent &amp;&amp; hideContent.length) {
              for (var i = 0; i &lt; hideContent.length; i++) {
                hideContent[i].style.display = "none";
              }
            }
          }

          if (removeFixedHeightAncestors) {
            let ancestor = sectionParent;
            for (let i = 0; i &lt; 10; i++) {
              if (ancestor.style.height &amp;&amp; ancestor.style.height != 'auto') {
                ancestor.style.height = 'auto';
              }
            }
          }

          const curUrl = parseUri(window.location);
          let iframeUrl = `${Config.OFFERS_URL}/${layout}/${OFFER_ID}`;
          if (label != 'none') {
            iframeUrl = `${Config.OFFERS_URL}/${layout}/${OFFER_ID}/${label}`;
          }
          if (stylesheet) {
            iframeUrl += "?stylesheet=" + encodeURIComponent(stylesheet);
          }
          const params = Object.assign({}, curUrl.queryKey);

          if (WIDGET_CONFIG.STYLESHEET_HREF) {
            params['stylesheetHref'] = WIDGET_CONFIG.STYLESHEET_HREF;
          }

          iframeUrl += '?' + Util.jsonToQueryString(params);
          iframeUrl +=
            '&amp;inWidget=true&amp;hideCreative=' +
            hideCreative +
            '&amp;hideAddress=' +
            hideAddress +
            '&amp;hideCarousel=' +
            hideCarousel;
          try {
            if (cookieManager) {
              let policy = Util.getCookiePolicy(cookieManager, cookiePolicy);
              if (policy) {
                iframeUrl += '&amp;cookiePolicy=' + encodeURIComponent(JSON.stringify(policy));
              }
            }
          } catch (e) {}

          const pymIframe = new pym.Parent(widgetWrap, iframeUrl);
          pymIframe.iframe.setAttribute('allowtransparency', 'true');
          pymIframe.iframe.setAttribute('allow-top-navigation', 'true');
          pymIframe.iframe.setAttribute('title', 'pear-product-finder');
          pymIframe.onMessage('buy-now-clicked', (dataJson) =&gt; {
            const data = JSON.parse(dataJson);
            let url = data.url;
            pymIframe.sendMessage('redirected', { success: true });
            if (url.startsWith('/')) {
              url = 'https://offers.pearcommerce.com' + url;
            }
            window.open(url, '_blank');
          });

          // we are loaded, so hide the loading indicator
          pymIframe.onMessage('picker-loaded', (pear) =&gt; {
            document.getElementById(iframeContainerId).style.minHeight = 'unset';
            document.getElementById(widgetWrap).style.minHeight = 'unset';

            document.getElementById(iframeContainerId).style.display = 'block';
            document.getElementById(widgetWrap).style.display = 'block';
            pymIframe.sendMessage('inject-widget-config', JSON.stringify(WIDGET_CONFIG));

            const els = document.getElementById(iframeContainerId);
            if (els != null) {
              const children = els.getElementsByClassName('spinner');
              Array.from(children).forEach(el =&gt; el.style.display = 'none');
            }
          });

          /* 
            Catch buy_click message and fire a new custom event for easier event handling on the customer side.
           */
          pymIframe.onMessage('buy_click', (dataJson) =&gt; {
            const data = JSON.parse(dataJson);
            const event = new CustomEvent("pear-retailer-click", { detail: data });
            window.dispatchEvent(event);
          });

          if (cookieManager) {
            Util.syncCookieManager(cookieManager, cookiePolicy, pymIframe);
          }


          iframeContainer.style.display = 'block';
        }

        const heroTitleH1 = document.querySelector('#primary .page-intro .inner h1');
        const heroTitle = heroTitleH1 ? heroTitleH1.innerText : null;
      } catch (e) {
        console.log(e);
        // not on a product page
      }
    });

    go().then(function (success) {
      // to avoid warnings
    }, function (reject) {
      console.error(reject);
    });

  });
};
let configParams = {};

{
  const SCRIPT_PARAMS = (document.currentScript &amp;&amp; document.currentScript.src &amp;&amp; parseUri(document.currentScript.src)) || { queryKey: {} };

  const WIDGET_CONFIG = window['PEAR_WIDGET_CONFIG'] = window['PEAR_WIDGET_CONFIG'] || {};
  const layout = SCRIPT_PARAMS.queryKey['layout'] || WIDGET_CONFIG.layout || 'picker';
  const label = SCRIPT_PARAMS.queryKey['label'] || WIDGET_CONFIG.label || 'none'
  if (SCRIPT_PARAMS.queryKey['config']) {
    try {
      configParams = JSON.parse(decodeURIComponent(SCRIPT_PARAMS.queryKey['config']));
    } catch (e) {

    }
  }
}


(async () =&gt; {
  console.log("configParms: ", configParams);


  /*
   * 
   * We can arrive here one of two ways:
   *
   *   (1) a hardcoded pdp+ mappings js file was imported directly, and that file found a matching selector and triggered an import of sdk-loader.js which 
   *     loaded us.
   * 
   *   -- OR --
   * 
   *   (2) sdk-loader.js was loaded for widget 'retailer-list' and without a hardcoded list of pdp+ mappings.
   *
   * In the case of (2), we need to fetch pdp+ mappings from the server, and register them here since they will not have been registered before. 
   * Otherwise, in the case of (1), we will have been passed a matching pdp+ mapping and just need to blindly inject it.
   * 
   */
  const vendorId = ((document.currentScript &amp;&amp; document.currentScript.src &amp;&amp; parseUri(document.currentScript.src)) || { queryKey: {} }).queryKey['vendorId'];
  if (!!vendorId &amp;&amp; (+vendorId != 0) &amp;&amp; (!configParams || (!configParams.pdpConfigs || configParams.pdpConfigs.length == 0))) {
    var vendorWidgets = await (await Util.fetchWithTimeoutAndFallback(`${Config.API_URL}/v1/vendor-widgets?timeout=1000&amp;vendorId=${vendorId}`)).json();
    if (vendorWidgets &amp;&amp; vendorWidgets.pdpMappings &amp;&amp; vendorWidgets.pdpMappings.length != 0) {

      console.log("vendorWidgets", vendorWidgets);
      console.log("registerMappings");
      PDPPlus.registerMappings(
        vendorWidgets.pdpMappings,
        importAndGo
      );
    } else {
      importAndGo([configParams]);
    }
  } else {
    if (configParams &amp;&amp; configParams.pdpConfigs &amp;&amp; configParams.pdpConfigs.length &gt; 0) {
      importAndGo(configParams.pdpConfigs);
    } else {
      importAndGo([configParams]);
    }
  }
})();


},{"../../config.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/config.js","../../parseuri.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/parseuri.js","../../pear-console.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/pear-console.js","../../utilities.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/utilities.js","../pdp-plus.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/sdk/pdp-plus.js","../sdk-shared.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/sdk/sdk-shared.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/storage.js":[function(_dereq_,module,exports){
const Config = _dereq_('./config.js');
const suffix = Config.env != 'production' ? Config.env : '';

_dereq_('webstorage-polyfill');
const storageFactory = _dereq_('storage-factory').storageFactory;

const base64 = _dereq_('./base64.js');
const pearConsole = _dereq_('./pear-console.js');
/**
 * PearConsole is a production-safe wrapper around window.console that will not spam logs unless we're in production
 * or the pear_debug url parameter is present.
 */
const PearConsole = (module.exports.PearConsole = pearConsole.PearConsole);

// eslint-disable-next-line  no-unused-vars
const console = PearConsole;


let client = null;
const setSentryClient = (module.exports.setSentryClient = (_client) =&gt; {
  client = _client;
});

const storageAvailable = (module.exports.storageAvailable = (storage) =&gt; {
  try {
    if (!storage) {
      return false;
    }
    const x = '__storage_test__';
    storage.setItem(x, x);
    storage.removeItem(x);
    return true;
  } catch (e) {
    try {
      return (
        e instanceof DOMException &amp;&amp;
        // everything except Firefox
        (e.code === 22 ||
          // Firefox
          e.code === 1014 ||
          // test name field too, because code might not be present
          // everything except Firefox
          e.name === 'QuotaExceededError' ||
          // Firefox
          e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &amp;&amp;
        // acknowledge QuotaExceededError only if there's something already stored
        storage &amp;&amp;
        storage.length !== 0
      );
    } catch (e2) {
      return false;
    }
  }
});

const localStorageAvailable = (module.exports.localStorageAvailable = () =&gt; {
  return storageAvailable(localStorage);
});

const sessionStorageAvailable = (module.exports.sessionStorageAvailable = () =&gt; {
  return storageAvailable(sessionStorage);
});

class MemoryStorage {
  constructor() {
    this._data = {};
  }

  getItem(key) {
    return this._data.hasOwnProperty(key) ? this._data[key] : null;
  }

  setItem(key, value) {
    return (this._data[key] = String(value));
  }

  removeItem(key) {
    return delete this._data[key];
  }

  clear() {
    return (this._data = {});
  }
}
module.exports.MemoryStorage = MemoryStorage;

const memstorage = module.exports.memory = (window.__pMemStore = window.__pMemStore || new MemoryStorage());
const localStorageOrBest = (() =&gt; {
  try {
    if (storageAvailable(localStorage)) {
      return localStorage;
    } else if (storageAvailable(sessionStorage)) {
      return sessionStorage;
    } else {
      return memstorage;
    }
  } catch (e) {
    return memstorage;
  }
})();

const local = (module.exports.local = storageFactory(() =&gt; localStorage));
const session = (module.exports.session = storageFactory(() =&gt; sessionStorage));
const localOrBest = (module.exports.localOrBest = storageFactory(() =&gt; localStorageOrBest));

const localClidStore = (module.exports.localClidStore = storageFactory(() =&gt;
  singleKeyEncodedDelegateStore(`_pclid_${suffix}`, local)
));

const sessionClidStore = (module.exports.sessionClidStore = storageFactory(() =&gt;
  singleKeyEncodedDelegateStore(`_pclid_${suffix}`, session)
));
const localOrBestClidStore = (module.exports.localOrBestClidStore = storageFactory(() =&gt;
  singleKeyEncodedDelegateStore(`_pclid_${suffix}`, localOrBest)
));

const memoize = (module.exports.memoize = function (f) {
  const mem = {};
  return (...args) =&gt;
    args in mem ? mem[args] : (mem[args] = f.apply(this, args));
});

/**
 * When you don't want to use a ton of keys, and you don't need it to be human readable
 */
const singleKeyEncodedDelegateStore =
  /* prettier-ignore */
  memoize((key, store) =&gt; {
    const e = base64.base64Encode;

    const d = base64.base64Decode;

    let data = null;
    const getData = () =&gt; {
      const dataStr = store.getItem(key);
      if (dataStr) {
        try {
          data = d(dataStr);
        } catch (e) {
          console.error(e);
          data = {};
        }
        if (typeof data == "string") {
          try {
            data = JSON.parse(data);
          } catch (e) {
            console.error(e);
            data = {};
          }
        }
        if (!data) {
          data = {};
        }
      } else {
        data = {};
      }

      if (data == null) {
        data = {};
      }
      return Object.assign({}, data);
    };

    const setData = (_data) =&gt; {
      if (_data &amp;&amp; Object.keys(_data).some((k) =&gt; !!k) &amp;&amp; Object.values(_data).some((v) =&gt; !!v)) {
        data = _data;
        store.setItem(key, e(data));
      } else {
        data = {};
        store.removeItem(key);
      }

      try {
        if (client != null) {
          client.setContext("storage", _data);
        }
      } catch (e) {
        //
      }
    };

    return {
      setItem: function (_key, val) {
        if (_key == '__some_random_key_you_are_not_going_to_use__') {
          return;
        }
        let _data = null;
        if (data == null) {
          _data = getData();
        } else {
          _data = Object.assign({}, data);
        }
        if (_data[_key] != val) {
          _data[_key] = val;
          setData(_data);
        }
      },
      getItem: function (_key) {
        if (_key == '__some_random_key_you_are_not_going_to_use__') {
          return _key;
        }
        let _data = null;
        if (data == null) {
          _data = getData();
        } else {
          _data = Object.assign({}, data);
        }
        if (typeof _key == 'undefined') {
          return _data;
        }
        return _data[_key];
      },
      isSupported: function () {
        return true;
      },
      removeItem: function (_key) {
        if (_key == '__some_random_key_you_are_not_going_to_use__') {
          return;
        }
        let _data = null;
        if (data == null) {
          _data = getData();
        } else {
          _data = Object.assign({}, data);
        }
        if (_data[_key]) {
          delete _data[_key];
          setData(_data);
        }
      },
      clear: function () {
        if (data) {
          setData({});
        }
      },
    };
  });

},{"./base64.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/base64.js","./config.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/config.js","./pear-console.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/pear-console.js","storage-factory":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/storage-factory/lib/index.js","webstorage-polyfill":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/node_modules/webstorage-polyfill/index.js"}],"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/utilities.js":[function(_dereq_,module,exports){
/*
 * Utility functions that could conceivably be used in any app (Offers, SDK, or chrome extensions)
 */
const parseUri = _dereq_('./parseuri.js');
const Config = _dereq_('./config.js');
const storage = _dereq_('./storage.js');
const pearConsole = _dereq_('./pear-console.js');

const memoize = (module.exports.memoize = function (f) {
  const mem = {};
  return (...args) =&gt; (args in mem ? mem[args] : (mem[args] = f.apply(this, args)));
});

const partition = (module.exports.partition = function (arr, length) {
  console.log(arr, length);
  var result = [];
  for (var i = 0; i &lt; arr.length; i++) {
    if (i % length === 0) result.push([]);
    result[result.length - 1].push(arr[i]);
  }
  return result;
});

const keepTruthy = (module.exports.keepTruthy = (obj) =&gt; {
  obj = Object.assign({}, obj);
  for (var propName in obj) {
    if (!obj[propName]) {
      delete obj[propName];
    }
  }
  return obj;
});

const delay = (module.exports.delay = (t) =&gt; new Promise((resolve) =&gt; setTimeout(resolve, t)));

const keepDefined = (module.exports.keepDefined = (obj) =&gt; {
  obj = Object.assign({}, obj);
  for (var propName in obj) {
    if (typeof obj[propName] == 'undefined') {
      delete obj[propName];
    }
  }
  return obj;
});

const keepKeys = (module.exports.keepKeys = (obj, keys, inPlace) =&gt; {
  obj = Object.assign({}, obj);
  for (var propName in obj) {
    if (keys.indexOf(propName) == -1) {
      delete obj[propName];
    }
  }
  return obj;
});

const safeWrapLogger = pearConsole.safeWrapLogger;

const splitKeep = function (string, delimiter) {
  const res = [];
  let start = 0;
  let index;

  while ((index = string.slice(start).search(delimiter)) != -1) {
    // account for the slice
    index = index + start;

    const val = string.substr(start, index - start);
    if (val != '') {
      res.push(val);
    }
    res.push(string[index]);
    start = index + 1;
  }
  res.push(string.substr(start));
  return res;
};
module.exports.nonBlankStr = (value) =&gt; {
      if (value === null) {
        return false;
      } else if (!/\S/.test(value)) {
        // string does not have any non-whitespace characters
        return false;
      }
      return true;
    }

module.exports.phoneLink =  (store) =&gt; {
  //TODO: there was discussion around making this link to the google maps location on desktop
  //which we can reevaluate later OF-21 https://pearcommerce.atlassian.net/browse/OF-21
  if (store.phone) {
    return `tel:${store.phone}`;
  } else {
    return "";
  }
}
const FN_ARG = ',';
const FIELD = '.';
/**
 * Access into object using a string of the form 'store_product.name.0.slice(0, 4).length'
 * Where '.' delimiters indicate field accessors and '(' and ',' and ')' together indicate function calls
 */
module.exports.applyAccessorsAndFnCalls = (json, accessorStr, dontLog) =&gt; {
  let next = null;
  let uncalledFn = false;
  let result = splitKeep(accessorStr, /\./).reduce(function (o, k) {
    let val;
    if ('.,'.indexOf(k) == 0 &amp;&amp; k.length == 1) {
      next = k;
      val = o;
    } else {
      let params = null;
      if (k.indexOf('(') &gt;= 0 &amp;&amp; k.indexOf(')') &gt;= 0) {
        [k, params] = k.split('(');
        params = params.split(')')[0].split(',');
      } else {
        [k, ...params] = k.split(',');
      }
      params = params.map((param) =&gt; {
        if (param.indexOf('"') == 0 || param.indexOf("'") == 0) {
          param = param.slice(1, -1);
        }
        return param;
      });
      if (!dontLog) {
        console.log(o, k, next, params);
      }
      uncalledFn = false;
      if (next == FN_ARG) {
        val = o &amp;&amp; o(k);
      } else if (next == FIELD || next == null) {
        val = o &amp;&amp; o[k];

        if (typeof val === 'function') {
          val = val.apply(o, params);
        }
      }
      next = null;
    }
    return val;
  }, json);

  if (uncalledFn) {
    result = result();
  }
  return result;
};

const hexToRgb = (module.exports.hexToRgb = (hex) =&gt;
  hex
    .replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, (m, r, g, b) =&gt; '#' + r + r + g + g + b + b)
    .substring(1)
    .match(/.{2}/g)
    .map((x) =&gt; parseInt(x, 16)));

// eslint-disable-next-line  no-unused-vars
const reload = (module.exports.reload = () =&gt; {
  window.location.reload();
});

const distanceMiles = (module.exports.distanceMiles = (lat1, lon1, lat2, lon2) =&gt; {
  var p = 0.017453292519943295; // Math.PI / 180
  var c = Math.cos;
  var a = 0.5 - c((lat2 - lat1) * p) / 2 + (c(lat1 * p) * c(lat2 * p) * (1 - c((lon2 - lon1) * p))) / 2;

  return 12742 * Math.asin(Math.sqrt(a)) * 0.621371; // 2 * R; R = 6371 km
});

// Returns a function, that, as long as it continues to be invoked, will not
// be triggered. The function will be called after N milliseconds. If `immediate`
// is passed, trigger the function on the leading edge, instead of the trailing.
// eslint-disable-next-line  no-unused-vars
const debounce = (module.exports.debounce = _dereq_('./debounce'));

module.exports.wait = (ms) =&gt; new Promise((r, j) =&gt; setTimeout(r, ms));

/**
 * PearConsole is a production-safe wrapper around window.console that will not spam logs unless we're in production
 * or the pear_debug url parameter is present.
 */
const PearConsole = (module.exports.PearConsole = pearConsole.PearConsole);

// eslint-disable-next-line  no-unused-vars
const console = PearConsole;

/**
 * Takes a json map and returns a url query string a la a=b&amp;c=d&amp;e=f (no leading '?').
 */
module.exports.jsonToQueryString = (json) =&gt; {
  return Object.keys(json)
    .filter((key) =&gt; json[key])
    .map((key) =&gt; {
      return [key, json[key]].map(encodeURIComponent).join('=');
    })
    .join('&amp;');
};

// A function to format text to look like a phone number
module.exports.formatPhone = (input) =&gt; {
  input = input || '';
  // Strip all characters from the input except digits
  input = input.replace(/\D/g, '');

  // Trim the remaining input to ten characters, to preserve phone number format
  input = input.substring(0, 10);

  // Based upon the length of the string, we add formatting as necessary
  var size = input.length;
  if (size == 0) {
    input = input;
  } else if (size &lt; 4) {
    input = '(' + input;
  } else if (size &lt; 7) {
    input = '(' + input.substring(0, 3) + ') ' + input.substring(3, 6);
  } else {
    input = '(' + input.substring(0, 3) + ') ' + input.substring(3, 6) + '-' + input.substring(6, 10);
  }
  return input;
};

module.exports.formatPhoneAria = (input) =&gt; {
  input = input || '';
  // Strip all characters from the input except digits
  input = input.replace(/\D/g, '');

  // Trim the remaining input to ten characters, to preserve phone number format
  input = input.substring(0, 10);

  // Based upon the length of the string, we add formatting as necessary
  input = input.split('').join(' ');
  return input;
};

const getCookiePreferences = (module.exports.getCookiePreferences = function () {
  var ret = null;
  try {
    ret = JSON.parse(storage.local.getItem('pear-privacy-v2'));
  } catch (e) {
    console.error(e);
  }

  return ret || {};
});

const getPearSession = (module.exports.getPearSession = function () {
  let datastore = (getCookiePreferences() || {}).analytics ? storage.local : storage.memory;
  return datastore.getItem('pear-session');
});

const setPearSession = function (pearSession) {
  let datastore = (getCookiePreferences() || {}).analytics ? storage.local : storage.memory;
  datastore.setItem('pear-session', pearSession);
};

const addPearSession = (module.exports.addPearSession = function (neaPearSession) {
  const pearSession = getPearSession();
  let pearSessions;
  if (typeof pearSession == 'undefined' || !pearSession) {
    pearSessions = [];
  } else {
    pearSessions = pearSession.split(',');
  }

  if (pearSessions.length &gt; 4) {
    pearSessions = pearSessions.slice(pearSessions.length - 1 - 3);
  }
  if (pearSessions.indexOf(neaPearSession) == -1) {
    pearSessions.push(neaPearSession);
  }

  const finalPearSession = pearSessions.join(',');
  setPearSession(finalPearSession);
});

/**
 * A wrapper around fetch that is simpler in the common case. Most values of the config object are defaulted, but anything
 * passed in will override the defaults. The response body is also awaited, so you don't need to do that after getting
 * a response.
 */
const fetchJson = (module.exports.fetchJson = async (url, overrides) =&gt; {
  const headers = {
    'Content-Type': 'application/json',
    // 'Content-Type': 'application/x-www-form-urlencoded',
  };

  const pearSession = getPearSession();
  if (pearSession) {
    headers['pear-session'] = pearSession;
  }

  const response = await fetch(
    url,
    Object.assign(
      {
        method: 'GET', // *GET, POST, PUT, DELETE, etc.
        mode: 'cors', // no-cors, cors, *same-origin
        cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
        credentials: 'omit', // include, *same-origin, omit
        headers: headers,
        redirect: 'follow', // manual, *follow, error
        referrer: 'no-referrer-when-downgrade', // no-referrer, *client
      },
      overrides || {}
    )
  );

  for (const pair of response.headers.entries()) {
    if (pair[0].toLowerCase() == 'pear-session') {
      addPearSession(pair[1]);
      break;
    }
  }

  // response.json() throws on empty response bodies, and I'd prefer that to be modeled as a null
  const body = await response.text();
  if (!response.ok) {
    handleError(`${response.statusText} -- ${body}`);
  }

  return jsonParseQuietly(body);
});

module.exports.postJson = async (url, data) =&gt; {
  return await fetchJson(url, {
    method: 'POST',
    body: JSON.stringify(data),
  });
};

module.exports.capitalizeFirst = (string) =&gt; {
  if (!string) {
    return string;
  }
  return string[0].toUpperCase() + string.slice(1);
};

// eslint-disable-next-line  no-unused-vars
const getJson = (module.exports.getJson = async (url) =&gt; {
  return await fetchJson(url, { method: 'GET' });
});

const makeRejectionError = function (arg) {
  try {
    // eslint-disable-next-line new-cap
    handleError(arg);
    return arg;
  } catch (newError) {
    return newError;
  }
};
/**
 * Takes a function that returns a truthy value to poll for.  Returns a promise that resolves to that value when it
 * becomes truthy.
 *
 * Note, if your check condition is not the same thing as your return value, you can do something like: () =&gt; {
 *   return &lt;condition&gt; &amp;&amp; &lt;return value&gt;
 * }
 * Because in javascript, the value of an entire &amp;&amp; or || expression is the last sub expression to have been evaluated.
 */
const pollFor = (module.exports.pollFor = (fn, maxAttempts, errorMsg, timeoutIncrease, expectedError) =&gt;
  new Promise((resolve, reject) =&gt; {
    timeoutIncrease = timeoutIncrease || 0;
    let timeout = 120;
    maxAttempts = maxAttempts || 200;
    let attempts = 0;
    const checkForValOrRecurse = function () {
      (async () =&gt; {
        try {
          attempts++;
          const val = await fn();
          if (val) {
            resolve(val);
          } else if (maxAttempts &lt; 0 || attempts &lt; maxAttempts) {
            timeout = timeout + timeoutIncrease;
            setTimeout(checkForValOrRecurse, timeout);
          } else {
            if (expectedError) {
              resolve(null);
            } else {
              reject(makeRejectionError(`waitFor exceeded ${maxAttempts} iterations!${'  ' + (errorMsg || fn || '')}`));
            }
          }
        } catch (e) {
          reject(makeRejectionError(`Error occurred: ${e}`));
        }
      })();
    };

    checkForValOrRecurse();
  }));

module.exports.pollForElementByClassName = (className, maxAttempts) =&gt;
  pollFor(
    () =&gt; {
      const elems = document.getElementsByClassName(className);
      return elems.length &amp;&amp; elems;
    },
    maxAttempts || 200,
    `Classname: ${className}`
  );

module.exports.pollForElementBySelector = (selector, maxAttempts, iframeSelector, expectedError) =&gt;
  pollFor(
    () =&gt; {
      let document = window.document;
      if (iframeSelector) {
        const iframe = window.document.querySelector(iframeSelector);
        if (!iframe) {
          return null;
        }
        document = iframe.contentDocument;
      }
      const elems = document.querySelectorAll(selector);
      return elems &amp;&amp; elems.length &amp;&amp; elems;
    },
    maxAttempts || 200,
    `Selector: ${selector}`,
    null,
    expectedError
  );

const objectEquals = (module.exports.objectEquals = (oldData, newData) =&gt; {
  if (typeof oldData == 'undefined') {
    return typeof newData == 'undefined';
  }
  if (typeof newData == 'undefined') {
    return typeof oldData == 'undefined';
  }
  if (oldData == null) {
    return newData == null;
  }
  if (newData == null) {
    return oldData == null;
  }
  if (typeof oldData != 'object' || typeof newData != 'object') {
    return oldData == newData;
  }
  if (oldData.length != newData.length) {
    return false;
  }
  let equals = true;
  for (const k of Object.keys(oldData)) {
    if (typeof oldData[k] !== 'object') {
      if (typeof oldData[k] === 'function' &amp;&amp; typeof newData[k] === 'function') {
        equals = equals &amp;&amp; oldData[k].toString() === newData[k].toString();
      } else if (oldData[k] !== newData[k]) return false;
    } else {
      equals = equals &amp;&amp; objectEquals(oldData[k], newData[k]);
    }
  }
  return equals;
});

// map of observer to list of domQueries
module.exports.monitorDomForChanges = async (domMonitorQuery, onChange) =&gt; {
  console.log('MONITOR DOM FOR CHANGES ', domMonitorQuery, onChange);

  module.exports
    .pollForElementBySelector(domMonitorQuery.domChangeMonitorParent, 25, domMonitorQuery.iframeSelector, true)
    .then(
      (parents) =&gt; {
        const parent = parents &amp;&amp; parents.length &amp;&amp; parents[0];
        if (parent) {
          let registeredOnChange = false;

          // memoized, so we can call this multiple times
          const observer = new MutationObserver(async function (mutationsList, observer) {
            if (!registeredOnChange) {
              const elem = document.querySelector(domMonitorQuery.accessors[0]);
              if (elem) {
                registeredOnChange = true;
                console.log('REGISTERING ONCHANGE ON ', elem);
                elem.addEventListener('change', onChange, false);
              }
            }

            console.log(mutationsList);
            try {
              await onChange.apply();
            } catch (e) {
              handleError(e);
            }
          });

          domMonitorQuery.parent = parent;
          observer.observe(parent, { attributes: true, childList: true, attributeOldValue: false, subtree: true });

          onChange.apply();
        } else {
          console.log('NO PARENT DETECTED!', domMonitorQuery.domChangeMonitorParent, parents);
        }
      },
      (err) =&gt; {
        handleError(err);
      }
    );
};

const toNumber = (module.exports.toNumber = function (value) {
  value = typeof value == 'undefined' || value == null ? this : value;
  if (!value) {
    return 0;
  }
  return Number(`${value}`.replace(/[^0-9\.]+/g, ''));
});

// eslint-disable-next-line no-extend-native
String.prototype.__pToNumber = function () {
  return toNumber(this);
};

const stripNonNumeric = (module.exports.stripNonNumeric = function (value) {
  value = typeof value == 'undefined' || value == null ? this : value;
  if (!value) {
    return 0;
  }
  return `${value}`.replace(/\D/g, '');
});

// eslint-disable-next-line no-extend-native
String.prototype.__pStripNonNumeric = function () {
  return stripNonNumeric(this);
};

const getInjector = (angular) =&gt; {
  let $injector = null;

  if (angular &amp;&amp; angular.element) {
    try {
      $injector = angular.element(document.body).injector();
      if (!$injector) {
        $injector = angular.element(document.querySelector('*[class^="ng-"]')).injector();
      }

      if (!$injector) {
        const ngXpathResult = document.evaluate(
          '//@*[contains(local-name(), "ng-")]',
          document,
          Function,
          XPathResult.ANY_TYPE,
          null
        );
        let ngXpath = null;
        while (!$injector &amp;&amp; (ngXpath = ngXpathResult.iterateNext())) {
          $injector = angular.element(ngXpath.ownerElement).injector();
        }
      }
    } catch (e) {
      handleError(e);
    }
  }
  return $injector;
};

/**
 * Note: since we don't want to be using timeouts to always check for angular when this module is imported, we export
 * a function which instantiates an effectively-singleton Promise when called.
 *
 * Note: window.angular &amp;&amp; window.angular.element(document.body).injector() &amp;&amp; window.angular is not a mistake
 */
const getAngularPromise = (module.exports.getAngularPromise = memoize((timeout) =&gt; {
  return pollFor(() =&gt; {
    const angular = window.angular;

    return angular &amp;&amp; getInjector(angular) &amp;&amp; angular;
  }, timeout || 100);
}));

module.exports.getAngularService = async (serviceName, timeout) =&gt; {
  try {
    const angular = await getAngularPromise(timeout);
    const $injector = getInjector(angular);
    return $injector.get(serviceName);
  } catch (e) {
    handleError(e);
  }
};

module.exports.ancestorWithClass = (el, className) =&gt; {
  while ((el = el.parentElement) &amp;&amp; !elementHasClass(el, className));
  return el;
};

const elementHasClass = (module.exports.elementHasClass = (element, className) =&gt; {
  return (' ' + element.className + ' ').indexOf(' ' + className + ' ') &gt;= 0;
});

module.exports.addClass = function (el, className) {
  if (el.classList) {
    el.classList.add(className);
  } else if (!elementHasClass(el, className)) {
    el.className += ' ' + className;
  }
};

module.exports.removeClass = function (el, className) {
  if (el.classList) {
    el.classList.remove(className);
  } else if (elementHasClass(el, className)) {
    const reg = new RegExp('(\\s|^)' + className + '(\\s|$)');
    el.className = el.className.replace(reg, ' ');
  }
};

/**
 * This function allow you to modify a JS Promise by adding some status properties.
 * Based on: http://stackoverflow.com/questions/21485545/is-there-a-way-to-tell-if-an-es6-promise-is-fulfilled-rejected-resolved
 * But modified according to the specs of promises : https://promisesaplus.com/
 */
module.exports.makeTrackable = (promise) =&gt; {
  // Don't modify any promise that has been already modified.
  if (promise.isFulfilled) return promise;

  // Set initial state
  let isPending = true;
  let isRejected = false;
  let isFulfilled = false;

  // Observe the promise, saving the fulfillment in a closure scope.
  const result = promise.then(
    function (v) {
      isFulfilled = true;
      isPending = false;
      return v;
    },
    function (e) {
      isRejected = true;
      isPending = false;
      handleError(e);
    }
  );

  result.isFulfilled = function () {
    return isFulfilled;
  };
  result.isPending = function () {
    return isPending;
  };
  result.isRejected = function () {
    return isRejected;
  };
  return result;
};

module.exports.hashString = (str) =&gt; {
  let hash = 0;
  if (str) {
    for (let i = 0; i &lt; str.length; i++) {
        const char = str.charCodeAt(i);
        hash = (hash &lt;&lt; 5) - hash + char;
        hash |= 0; 
    }
  }
  return hash;
}

/**
 * Converts a string array into map of string key to boolean
 */
module.exports.toSet = (stringArray) =&gt; {
  return stringArray.reduce((map, val) =&gt; {
    map[val] = true;
    return map;
  }, {});
};

/**
 * A promise that resolves when the document is ready. It first checks if document status is ready and waits for
 * DOMContentLoaded event if it isn't.
 */
// eslint-disable-next-line  no-unused-vars
const domReadyPromise = (module.exports.domReadyPromise = new Promise(function (resolve) {
  if (document.readyState == 'loading') {
    document.addEventListener(
      'DOMContentLoaded',
      function () {
        resolve(document);
      },
      false
    );
  } else {
    // document is already ready
    resolve(document);
  }
}));

// eslint-disable-next-line  no-unused-vars
const getUrlVars = (module.exports.getUrlVars = memoize(function (url) {
  return parseUri(url || window.location).queryKey;
}));

// eslint-disable-next-line  no-unused-vars
const isMobile = (module.exports.isMobile = memoize(function () {
  let check = false;
  (function (a) {
    // eslint-disable-next-line  max-len
    if (
      /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(
        a
      ) ||
      /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(
        a.substr(0, 4)
      )
    ) {
      check = true;
    }
  })(navigator.userAgent || navigator.vendor || window.opera);
  return check;
}));

module.exports.inIframe = memoize(function () {
  try {
    return window.self !== window.top;
  } catch (e) {
    return true;
  }
});

module.exports.timeout = async (millis) =&gt; {
  return new Promise((r) =&gt; setTimeout(r, millis));
};

const asyncExceptionBoundaryWrapper = function (defaultHandler) {
  return function (f, handler) {
    if (f.constructor.name != 'AsyncFunction') {
      return function (...args) {
        try {
          return f.apply(this, args);
        } catch (e) {
          (handler || defaultHandler).bind(this)(e);
        }
      };
    }

    return async function (...args) {
      try {
        return await f.apply(this, args);
      } catch (e) {
        return await (handler || defaultHandler).bind(this)(e);
      }
    };
  };
};

// you can just await a regular function!
module.exports.exceptionBoundaryWrapperFactory = asyncExceptionBoundaryWrapper;

module.exports.asyncExceptionBoundaryWrapperFactory = asyncExceptionBoundaryWrapper;

const ignoreOnProd = (e) =&gt; {
  if (Config.env != 'production') {
    // log just in case the surrounding code doesnt
    if (!(e instanceof Error)) {
      e = new Error(e);
    }
    console.error(e);
    throw e;
  }
};

const rethrow = function (e) {
  if (!(e instanceof Error)) {
    e = new Error(e);
  }
  // log just in case the surrounding code doesnt
  //console.error(e);
  throw e;
};
let PEAR_ERROR_HANDLER = rethrow;

const handleError = (module.exports.handleError = (e) =&gt; {
  // eslint-disable-next-line new-cap
  PEAR_ERROR_HANDLER(e);
});

const tryCatch = (module.exports.tryCatch = asyncExceptionBoundaryWrapper(handleError));

module.exports.setErrorHandler = (handler) =&gt; {
  PEAR_ERROR_HANDLER = handler;
};

module.exports.rethrowErrors = () =&gt; {
  PEAR_ERROR_HANDLER = rethrow;
};

module.exports.ignoreProdErrors = () =&gt; {
  PEAR_ERROR_HANDLER = ignoreOnProd;
};

const nop = (module.exports.nop = (_) =&gt; null);

const jsonParseQuietly = (module.exports.JSONParseQuietly = tryCatch(JSON.parse, nop));
module.exports.JSONStringifyQuietly = tryCatch(JSON.stringify, nop);

function toJSON(node) {
  const propFix = { for: 'htmlFor', class: 'className' };
  const specialGetters = {
    style: (node) =&gt; node &amp;&amp; node.style &amp;&amp; node.style.cssText,
  };
  const attrDefaultValues = { style: '' };
  const obj = {
    nodeType: node.nodeType,
  };
  if (node.tagName) {
    obj.tagName = node.tagName.toLowerCase();
  } else if (node.nodeName) {
    obj.nodeName = node.nodeName;
  }
  if (node.nodeValue) {
    obj.nodeValue = node.nodeValue;
  }
  const attrs = node.attributes;
  if (attrs) {
    const defaultValues = new Map();
    for (let i = 0; i &lt; attrs.length; i++) {
      const name = attrs[i].nodeName;
      defaultValues.set(name, attrDefaultValues[name]);
    }
    // Add some special cases that might not be included by enumerating
    // attributes above. Note: this list is probably not exhaustive.
    switch (obj.tagName) {
      case 'input': {
        if (node.type === 'checkbox' || node.type === 'radio') {
          defaultValues.set('checked', false);
        } else if (node.type !== 'file') {
          // Don't store the value for a file input.
          defaultValues.set('value', '');
        }
        break;
      }
      case 'option': {
        defaultValues.set('selected', false);
        break;
      }
      case 'textarea': {
        defaultValues.set('value', '');
        break;
      }
    }
    const arr = [];
    for (const [name, defaultValue] of defaultValues) {
      const propName = propFix[name] || name;
      const specialGetter = specialGetters[propName];
      const value = specialGetter ? specialGetter(node) : node[propName];
      if (value !== defaultValue) {
        arr.push([name, value]);
      }
    }
    if (arr.length) {
      obj.attributes = arr;
    }
  }
  const childNodes = node.childNodes;
  // Don't process children for a textarea since we used `value` above.
  if (obj.tagName !== 'textarea' &amp;&amp; childNodes &amp;&amp; childNodes.length) {
    const arr = (obj.childNodes = []);
    for (let i = 0; i &lt; childNodes.length; i++) {
      arr[i] = toJSON(childNodes[i]);
    }
  }
  return obj;
}

module.exports.elementFromHtml = function elementFromHtml(html) {
  var div = document.createElement('div');
  div.innerHTML = html.trim();

  return div.firstChild;
};

module.exports.nodeToDom = function nodeToDom(input) {
  const obj = typeof input === 'string' ? JSON.parse(input) : input;
  const propFix = { for: 'htmlFor', class: 'className' };
  let node;
  const nodeType = obj.nodeType;
  switch (nodeType) {
    // ELEMENT_NODE
    case 1: {
      node = document.createElement(obj.tagName);
      if (obj.attributes) {
        for (const [attrName, value] of obj.attributes) {
          const propName = propFix[attrName] || attrName;
          // Note: this will throw if setting the value of an input[type=file]
          node[propName] = value;
        }
      }
      break;
    }
    // TEXT_NODE
    case 3: {
      return document.createTextNode(obj.nodeValue);
    }
    // COMMENT_NODE
    case 8: {
      return document.createComment(obj.nodeValue);
    }
    // DOCUMENT_FRAGMENT_NODE
    case 11: {
      node = document.createDocumentFragment();
      break;
    }
    default: {
      // Default to an empty fragment node.
      return document.createDocumentFragment();
    }
  }
  if (obj.childNodes &amp;&amp; obj.childNodes.length) {
    for (const childNode of obj.childNodes) {
      node.appendChild(toDOM(childNode));
    }
  }
  return node;
};

module.exports.zip = function zip(arrays) {
  // eslint-disable-next-line prefer-spread
  return Array.apply(null, Array(arrays[0].length)).map(function (_, i) {
    return arrays.map(function (array) {
      return array[i];
    });
  });
};

let cookiePolicyConfig = {
  onetrust: {
    gmi: {
      analytics: 'C0002',
      functional: 'C0003',
      targeting: 'C0004'
    },
    'allow-all': {
      analytics: 'C0002', 
      functional: 'C0003',
      targeting: 'C0004'
    }
  },
  trustarc: {
    molsoncoors: {
      analytics: '2',
      functional: '2',
      targeting: '3',
    },
    standard: {
      analytics: '2',
      functional: '2',
      targeting: '3',
    },
  },
};
module.exports.getCookie = function (name) {
  var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
  if (match) return match[2];
};

module.exports.getCookiePolicy = function (cookieManager, cookiePolicy) {
  if (cookieManager == 'onetrust') {
    let policy = cookiePolicyConfig.onetrust[cookiePolicy];
    if (policy) {
      let cookie = module.exports.getCookie('OptanonConsent');
      if (!cookie) {
        //In us we default to true for everything.
        return {
          analytics: true,
          functional: true,
          targeting: true,
        };
      } else {
        let groups = decodeURIComponent(cookie.split('groups=')[1].split('&amp;')[0]).split(',');
        
        // Special handling for allow-all single toggle
        if (cookiePolicy === 'allow-all') {
          const group = groups.find(g =&gt; g.split(':')[0] === policy.analytics);
          const isEnabled = group ? group.split(':')[1] === '1' : false;
          return {
            analytics: isEnabled,
            functional: isEnabled,
            targeting: isEnabled
          };
        }

        let ret = {};
        let keys = ['analytics', 'functional', 'targeting'];
        for (let i = 0; i &lt; keys.length; i++) {
          let targetGroupName = policy[keys[i]];
          for (let j = 0; j &lt; groups.length; j++) {
            let groupName = groups[j].split(':')[0];
            if (targetGroupName == groupName) {
              ret[keys[i]] = groups[j].split(':')[1] == '1';
              break;
            }
          }
        }

        return ret;
      }
    }
  } else if (cookieManager == 'trustarc') {
    let policy = cookiePolicyConfig.trustarc[cookiePolicy];
    if (policy) {
      let cookie = module.exports.getCookie('cmapi_cookie_privacy');
      if (!cookie) {
        //In us we default to true for everything.
        return {
          analytics: true,
          functional: true,
          targeting: true,
        };
      } else {
        let groups = cookie.split('permit ')[1].split(" ")[0].split(',');

        let ret = {};
        let keys = ['analytics', 'functional', 'targeting'];
        for (let i = 0; i &lt; keys.length; i++) {
          let targetGroupName = policy[keys[i]];
          for (let j = 0; j &lt; groups.length; j++) {
            let groupName = groups[j];
            if (targetGroupName == groupName) {
              ret[keys[i]] = true;
              break;
            }
          }
        }

        return ret;
      }
    }
  }
  return null;
};

module.exports.syncCookieManager = function (cookieManager, cookiePolicy, pymIframe) {
  function getOneTrustConsent() {
    try {
      let activeGroups = '';

      // First try to get OneTrust from parent if we're in an iframe
      if (window !== window.top) {
        try {
          activeGroups = window.parent.OnetrustActiveGroups || '';
        } catch (e) {
          console.log('Could not access parent OneTrust, using iframe OneTrust');
          activeGroups = window.OnetrustActiveGroups || '';
        }
      } else {
        activeGroups = window.OnetrustActiveGroups || '';
      }

      if (!activeGroups) {
        return null;
      }
      
      // Check for specific group IDs
      const groups = activeGroups.split(',').map(g =&gt; g.trim());
      
      return {
        analytics: groups.includes('C0002'),
        functional: groups.includes('C0003'),
        targeting: groups.includes('C0004')
      };
    } catch (e) {
      console.error('Error checking OneTrust consent:', e);
      return null;
    }
  }

  let oldPolicy = module.exports.getCookiePolicy(cookieManager, cookiePolicy);
  let storedPolicy = storage.local.getItem('pear-privacy-v2');
  try {
    storedPolicy = JSON.parse(storedPolicy);
  } catch (e) {
    storedPolicy = null;
  }
  
  function hasPolicyChanged(newPolicy, comparePolicy) {
    return newPolicy.analytics !== comparePolicy.analytics ||
           newPolicy.functional !== comparePolicy.functional ||
           newPolicy.targeting !== comparePolicy.targeting;
  }

  // Helper function to handle policy updates
  function handlePolicyUpdate(newPolicy) {
    if (!newPolicy) return;
    
    oldPolicy = oldPolicy || {};
    if (hasPolicyChanged(newPolicy, oldPolicy)) {
      oldPolicy = newPolicy;
      if (pymIframe) {
        pymIframe.sendMessage('cookie-policy', JSON.stringify(newPolicy));
      } else {
        const shouldReload = !storedPolicy || hasPolicyChanged(newPolicy, storedPolicy);
        storage.local.setItem('pear-privacy-v2', JSON.stringify(newPolicy));
        
        if (shouldReload) {
          console.log('Policy changed, reloading...');
          window.location.reload();
        } else {
          console.log('Policy unchanged, skipping reload');
        }
      }
    }
  }

  function setupOneTrustListener() {
    console.log('Setting up OneTrust listener');
    
    const onConsentChanged = function() {
      console.log('OneTrust consent changed!');
      const newPolicy = getOneTrustConsent();
      console.log('New consent policy:', newPolicy);
      handlePolicyUpdate(newPolicy);
    };

    // Try to set up listener in parent window if we're in an iframe
    if (window !== window.top) {
      try {
        if (window.parent.OneTrust) {
          console.log('Setting up OneTrust listener in parent');
          window.parent.OneTrust.OnConsentChanged(onConsentChanged);
          return; // Exit if we successfully set up parent listener
        }
      } catch (e) {
        console.log('Could not set up parent OneTrust listener:', e);
      }
    }

    // Fall back to iframe's OneTrust if parent isn't available
    if (window.OneTrust) {
      console.log('Setting up OneTrust listener in iframe');
      window.OneTrust.OnConsentChanged(onConsentChanged);
    }
  }

  // Set up polling for non-OneTrust cookie managers
  if (cookieManager !== 'onetrust') {
    setInterval(function () {
      let newPolicy = module.exports.getCookiePolicy(cookieManager, cookiePolicy);
      handlePolicyUpdate(newPolicy);
    }, 100);
  }

  if (window.OneTrust || (window !== window.top &amp;&amp; window.parent.OneTrust)) {
    setupOneTrustListener();
  }

  window.addEventListener('OneTrustGroupsUpdated', function() {
    setupOneTrustListener();
  });
};

module.exports.deleteCookie = function delete_cookie(name, path, domain) {
  document.cookie =
    name +
    '=' +
    (path ? ';path=' + path : '') +
    (domain ? ';domain=' + domain : '') +
    ';expires=Thu, 01 Jan 1970 00:00:01 GMT';
};

module.exports.fetchWithTimeoutAndFallback = async function() {
  try {
    if (!arguments[1]) {
      arguments[1] = {};
    }
    let ret = await fetch.apply(null, arguments);
    if (ret.status != 200) {
      throw new Error("non 200");
    }
    return ret;
  } catch (e) {
    let url = arguments[0];
    let path = url.split("v1/")[1].split("?")[0];
    let params = {};
    if (url.indexOf("?") &gt; -1) {
      const urlParams = new URLSearchParams(url.split("?")[1]);
      params = Object.fromEntries(urlParams);
    }

    let paramsList = [];
    for (const [key, value] of Object.entries(params)) {
      if (key != "_nocache" &amp;&amp; key != "timeout" &amp;&amp; (url.indexOf("/v1/loaded") &lt; 0 || key == 'vendorId')) {
        paramsList.push([key, value]);
      }
    }


    paramsList.sort(function (a,b) {
      return a[0].localeCompare(b[0]);
    });

    let fallbackUrl = "https://assets.pearcommerce.com/" + path;
    if (paramsList.length &gt; 0) {
      fallbackUrl += "/";
    }
    for (let i = 0; i &lt; paramsList.length; i++) {
      fallbackUrl += encodeURIComponent(paramsList[i][0]) + "/" + encodeURIComponent(paramsList[i][1]);
      if (i != paramsList.length - 1) {
        fallbackUrl += "/";
      }
    }
    fallbackUrl += "?" + new Date().getTime();
    arguments[0] = fallbackUrl;
    try {
      let ret = await fetch.apply(null, arguments);
      if (ret.status != 200) {
        throw new Error("non 200");
      }
      return ret;
    } catch (e) {
      return {json : function() {
          return null;
        }};
    }
  }

}

},{"./config.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/config.js","./debounce":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/debounce.js","./parseuri.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/parseuri.js","./pear-console.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/pear-console.js","./storage.js":"/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/storage.js"}]},{},["/home/runner/work/offers.pearcommerce.com/offers.pearcommerce.com/static/js/sdk/targets/retailer-list.js"]);
</pre></body></html>