{"version":3,"sources":["jsdelivr-header.js","/npm/@blotoutio/edgetag-sdk-browser@1.34.2/index.js"],"names":[],"mappings":"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","file":"/npm/@blotoutio/edgetag-sdk-browser@1.34.2/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@blotoutio/edgetag-sdk-browser@1.34.2/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function () {\n    'use strict';\n\n    var api = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        get consent () { return consent; },\n        get data () { return data; },\n        get getConsent () { return getConsent; },\n        get getData () { return getData; },\n        get getUserId () { return getUserId; },\n        get init () { return init; },\n        get isNewUser () { return isNewUser; },\n        get keys () { return keys; },\n        get ready () { return ready; },\n        get setConfig () { return setConfig; },\n        get tag () { return tag; },\n        get user () { return user; }\n    });\n\n    const isBool = (v) => typeof v == 'boolean';\n    const isRecord = (v) => !!v && typeof v == 'object' && !Array.isArray(v);\n    /**\n     * This function validates user consent for a given provider and tag name.\n     * It should be used in conjunction with `UserConsent`, not `ProvidersConfig`.\n     */\n    const hasUserConsent = (consent, provider, tagName) => {\n        var _a, _b;\n        let allowed = false;\n        if (isRecord(consent.consentChannel)) {\n            allowed = isBool(consent.consentChannel.all)\n                ? consent.consentChannel.all\n                : false;\n            if (provider in consent.consentChannel) {\n                const providerSpecific = consent.consentChannel[provider];\n                if (isBool(providerSpecific)) {\n                    allowed = providerSpecific;\n                }\n                else if (isRecord(providerSpecific)) {\n                    if ('all' in providerSpecific && isBool(providerSpecific.all)) {\n                        allowed = providerSpecific.all;\n                    }\n                    if (tagName in providerSpecific && isBool(providerSpecific[tagName])) {\n                        allowed = providerSpecific[tagName];\n                    }\n                }\n            }\n        }\n        if (allowed) {\n            return true;\n        }\n        if (isRecord(consent.consentCategory) &&\n            isRecord((_a = consent.consentSettings) === null || _a === void 0 ? void 0 : _a.channels)) {\n            allowed = isBool(consent.consentCategory.all)\n                ? consent.consentCategory.all\n                : false;\n            const category = (_b = Object.entries(consent.consentSettings.channels).find(([, value]) => {\n                return value.includes(provider);\n            })) === null || _b === void 0 ? void 0 : _b[0];\n            if (category && consent.consentCategory[category]) {\n                allowed = true;\n            }\n        }\n        return allowed;\n    };\n    /**\n     * This function validates provider allowance for a given provider and tag name.\n     * It should not be used to validate `UserConsent`.\n     */\n    const isProviderInstanceAllowed = (providersConfig, provider, tagName) => {\n        if (!isRecord(providersConfig)) {\n            return true;\n        }\n        if (provider in providersConfig) {\n            const providerSpecific = providersConfig[provider];\n            if (isBool(providerSpecific)) {\n                return providerSpecific;\n            }\n            if (isRecord(providerSpecific)) {\n                const tagKeys = Object.keys(providerSpecific).filter((k) => k != 'all');\n                if (tagName in providerSpecific && isBool(providerSpecific[tagName])) {\n                    return providerSpecific[tagName];\n                }\n                return isBool(providerSpecific.all)\n                    ? providerSpecific.all\n                    : tagKeys.length == 0;\n            }\n        }\n        const providerKeys = Object.keys(providersConfig).filter((k) => k != 'all');\n        return isBool(providersConfig.all)\n            ? providersConfig.all\n            : providerKeys.length == 0;\n    };\n\n    const upsert = (map, key, update, createDefault) => {\n        const currentValue = map.has(key)\n            ? map.get(key)\n            : createDefault();\n        return map.set(key, update(currentValue));\n    };\n\n    const expand = (str) => str.split(',').flatMap((entry) => {\n        if (!entry.includes('-')) {\n            return entry;\n        }\n        const result = [];\n        const [start, end] = entry.split('-').map(Number);\n        for (let i = start; i <= end; i++) {\n            result.push(i.toString());\n        }\n        return result;\n    });\n    /**\n     * Exported from https://en.wikipedia.org/wiki/List_of_North_American_Numbering_Plan_area_codes\n     *\n     * In Dev Tools, select the `tbody` element containing the area codes and run the following code,\n     * replacing the emdash character with a simple endash:\n     *\n     * ```ts\n     * [...$0.querySelectorAll('td:first-child')]\n     *   .filter(cell => cell.firstChild.nodeName != 'A')\n     *   .map(cell => cell.textContent.trim()).join(',')\n     * ```\n     */\n    new Set([\n        ...expand('200,211,221,222,230,232,233,235,237-238,241,243,244,245,247,255,257,258-259,261,265,266,271,273,274,275,277,278,280,282,283,285-287,288,290-299'),\n        ...expand('300,311,322,324,327,328,333,335,338,342,344,348-349,353,355,356,357-359,362,366,369,370-379,381,382,383-384,387,388,389,390-399'),\n        ...expand('400,411,420,421-422,426-427,428,429,433,439,444,446,449,451-454,455,456,457,459,460,461-462,465,466,467,471,476,477,481-483,485-486,487,488,489,490-499'),\n        ...expand('511,532,535,536,537,538,542-543,545-547,549-550,552-554,555,556,558,560,565,568,569,576,578,583,589,590-599'),\n        ...expand('611,621,624,625,627,632,633,634-635,637-638,642-643,644,648,652-654,655,663,665,666,668,673-676,677,679,685,686,687,688,690-699'),\n        ...expand('711,722,723,729,733,735-736,739,741,744,745-746,748,749-751,752,755,756,759,761,764,766,768,776,777,783,788,789,790-799'),\n        ...expand('811,821,822,823-824,827,834,836,841-842,846,851,852-853,871,874-875,879,880-887,889,890-899'),\n        ...expand('911,921,922,923,924,926,927,932,933,935,942,944,946,950,953,955,957-958,960-969,974,975,976,977,981-982,987,988,990-999'),\n    ]);\n\n    const isZeroPurchaseEvent = (payload) => {\n        var _a;\n        if (payload.eventName != 'Purchase') {\n            return false;\n        }\n        const value = parseFloat((_a = payload.data) === null || _a === void 0 ? void 0 : _a.value);\n        return value === 0;\n    };\n\n    /**\n     * ISO-3166 2-leter country codes and their names\n     * @see https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\n     */\n    const isoCountries = new Map([\n        ['AD', 'Andorra'],\n        ['AE', 'United Arab Emirates'],\n        ['AF', 'Afghanistan'],\n        ['AG', 'Antigua and Barbuda'],\n        ['AI', 'Anguilla'],\n        ['AL', 'Albania'],\n        ['AM', 'Armenia'],\n        ['AO', 'Angola'],\n        ['AQ', 'Antarctica'],\n        ['AR', 'Argentina'],\n        ['AS', 'American Samoa'],\n        ['AT', 'Austria'],\n        ['AU', 'Australia'],\n        ['AW', 'Aruba'],\n        ['AX', 'Åland Islands'],\n        ['AZ', 'Azerbaijan'],\n        ['BA', 'Bosnia and Herzegovina'],\n        ['BB', 'Barbados'],\n        ['BD', 'Bangladesh'],\n        ['BE', 'Belgium'],\n        ['BF', 'Burkina Faso'],\n        ['BG', 'Bulgaria'],\n        ['BH', 'Bahrain'],\n        ['BI', 'Burundi'],\n        ['BJ', 'Benin'],\n        ['BL', 'Saint Barthélemy'],\n        ['BM', 'Bermuda'],\n        ['BN', 'Brunei Darussalam'],\n        ['BO', 'Bolivia, Plurinational State of'],\n        ['BQ', 'Bonaire, Sint Eustatius and Saba'],\n        ['BR', 'Brazil'],\n        ['BS', 'Bahamas'],\n        ['BT', 'Bhutan'],\n        ['BV', 'Bouvet Island'],\n        ['BW', 'Botswana'],\n        ['BY', 'Belarus'],\n        ['BZ', 'Belize'],\n        ['CA', 'Canada'],\n        ['CC', 'Cocos (Keeling) Islands'],\n        ['CD', 'Congo, Democratic Republic of the'],\n        ['CF', 'Central African Republic'],\n        ['CG', 'Congo'],\n        ['CH', 'Switzerland'],\n        ['CI', \"Côte d'Ivoire\"],\n        ['CK', 'Cook Islands'],\n        ['CL', 'Chile'],\n        ['CM', 'Cameroon'],\n        ['CN', 'China'],\n        ['CO', 'Colombia'],\n        ['CR', 'Costa Rica'],\n        ['CU', 'Cuba'],\n        ['CV', 'Cabo Verde'],\n        ['CW', 'Curaçao'],\n        ['CX', 'Christmas Island'],\n        ['CY', 'Cyprus'],\n        ['CZ', 'Czechia'],\n        ['DE', 'Germany'],\n        ['DJ', 'Djibouti'],\n        ['DK', 'Denmark'],\n        ['DM', 'Dominica'],\n        ['DO', 'Dominican Republic'],\n        ['DZ', 'Algeria'],\n        ['EC', 'Ecuador'],\n        ['EE', 'Estonia'],\n        ['EG', 'Egypt'],\n        ['EH', 'Western Sahara'],\n        ['ER', 'Eritrea'],\n        ['ES', 'Spain'],\n        ['ET', 'Ethiopia'],\n        ['EU', 'European Union'],\n        ['FI', 'Finland'],\n        ['FJ', 'Fiji'],\n        ['FK', 'Falkland Islands (Malvinas)'],\n        ['FM', 'Micronesia, Federated States of'],\n        ['FO', 'Faroe Islands'],\n        ['FR', 'France'],\n        ['GA', 'Gabon'],\n        ['GB', 'Great Britain'],\n        ['GD', 'Grenada'],\n        ['GE', 'Georgia'],\n        ['GF', 'French Guiana'],\n        ['GG', 'Guernsey'],\n        ['GH', 'Ghana'],\n        ['GI', 'Gibraltar'],\n        ['GL', 'Greenland'],\n        ['GM', 'Gambia'],\n        ['GN', 'Guinea'],\n        ['GP', 'Guadeloupe'],\n        ['GQ', 'Equatorial Guinea'],\n        ['GR', 'Greece'],\n        ['GS', 'South Georgia and the South Sandwich Islands'],\n        ['GT', 'Guatemala'],\n        ['GU', 'Guam'],\n        ['GW', 'Guinea-Bissau'],\n        ['GY', 'Guyana'],\n        ['HK', 'Hong Kong'],\n        ['HM', 'Heard Island and McDonald Islands'],\n        ['HN', 'Honduras'],\n        ['HR', 'Croatia'],\n        ['HT', 'Haiti'],\n        ['HU', 'Hungary'],\n        ['ID', 'Indonesia'],\n        ['IE', 'Ireland'],\n        ['IL', 'Israel'],\n        ['IM', 'Isle of Man'],\n        ['IN', 'India'],\n        ['IO', 'British Indian Ocean Territory'],\n        ['IQ', 'Iraq'],\n        ['IR', 'Iran, Islamic Republic of'],\n        ['IS', 'Iceland'],\n        ['IT', 'Italy'],\n        ['JE', 'Jersey'],\n        ['JM', 'Jamaica'],\n        ['JO', 'Jordan'],\n        ['JP', 'Japan'],\n        ['KE', 'Kenya'],\n        ['KG', 'Kyrgyzstan'],\n        ['KH', 'Cambodia'],\n        ['KI', 'Kiribati'],\n        ['KM', 'Comoros'],\n        ['KN', 'Saint Kitts and Nevis'],\n        ['KP', \"Korea, Democratic People's Republic of\"],\n        ['KR', 'Korea, Republic of'],\n        ['KW', 'Kuwait'],\n        ['KY', 'Cayman Islands'],\n        ['KZ', 'Kazakhstan'],\n        ['LA', \"Lao People's Democratic Republic\"],\n        ['LB', 'Lebanon'],\n        ['LC', 'Saint Lucia'],\n        ['LI', 'Liechtenstein'],\n        ['LK', 'Sri Lanka'],\n        ['LR', 'Liberia'],\n        ['LS', 'Lesotho'],\n        ['LT', 'Lithuania'],\n        ['LU', 'Luxembourg'],\n        ['LV', 'Latvia'],\n        ['LY', 'Libya'],\n        ['MA', 'Morocco'],\n        ['MC', 'Monaco'],\n        ['MD', 'Moldova, Republic of'],\n        ['ME', 'Montenegro'],\n        ['MF', 'Saint Martin (French part)'],\n        ['MG', 'Madagascar'],\n        ['MH', 'Marshall Islands'],\n        ['MK', 'North Macedonia'],\n        ['ML', 'Mali'],\n        ['MM', 'Myanmar'],\n        ['MN', 'Mongolia'],\n        ['MO', 'Macao'],\n        ['MP', 'Northern Mariana Islands'],\n        ['MQ', 'Martinique'],\n        ['MR', 'Mauritania'],\n        ['MS', 'Montserrat'],\n        ['MT', 'Malta'],\n        ['MU', 'Mauritius'],\n        ['MV', 'Maldives'],\n        ['MW', 'Malawi'],\n        ['MX', 'Mexico'],\n        ['MY', 'Malaysia'],\n        ['MZ', 'Mozambique'],\n        ['NA', 'Namibia'],\n        ['NC', 'New Caledonia'],\n        ['NE', 'Niger'],\n        ['NF', 'Norfolk Island'],\n        ['NG', 'Nigeria'],\n        ['NI', 'Nicaragua'],\n        ['NL', 'Netherlands, Kingdom of the'],\n        ['NO', 'Norway'],\n        ['NP', 'Nepal'],\n        ['NR', 'Nauru'],\n        ['NU', 'Niue'],\n        ['NZ', 'New Zealand'],\n        ['OM', 'Oman'],\n        ['PA', 'Panama'],\n        ['PE', 'Peru'],\n        ['PF', 'French Polynesia'],\n        ['PG', 'Papua New Guinea'],\n        ['PH', 'Philippines'],\n        ['PK', 'Pakistan'],\n        ['PL', 'Poland'],\n        ['PM', 'Saint Pierre and Miquelon'],\n        ['PN', 'Pitcairn'],\n        ['PR', 'Puerto Rico'],\n        ['PS', 'Palestine, State of'],\n        ['PT', 'Portugal'],\n        ['PW', 'Palau'],\n        ['PY', 'Paraguay'],\n        ['QA', 'Qatar'],\n        ['RE', 'Réunion'],\n        ['RO', 'Romania'],\n        ['RS', 'Serbia'],\n        ['RU', 'Russian Federation'],\n        ['RW', 'Rwanda'],\n        ['SA', 'Saudi Arabia'],\n        ['SB', 'Solomon Islands'],\n        ['SC', 'Seychelles'],\n        ['SD', 'Sudan'],\n        ['SE', 'Sweden'],\n        ['SG', 'Singapore'],\n        ['SH', 'Saint Helena, Ascension and Tristan da Cunha'],\n        ['SI', 'Slovenia'],\n        ['SJ', 'Svalbard and Jan Mayen'],\n        ['SK', 'Slovakia'],\n        ['SL', 'Sierra Leone'],\n        ['SM', 'San Marino'],\n        ['SN', 'Senegal'],\n        ['SO', 'Somalia'],\n        ['SR', 'Suriname'],\n        ['SS', 'South Sudan'],\n        ['ST', 'Sao Tome and Principe'],\n        ['SV', 'El Salvador'],\n        ['SX', 'Sint Maarten (Dutch part)'],\n        ['SY', 'Syrian Arab Republic'],\n        ['SZ', 'Eswatini'],\n        ['TC', 'Turks and Caicos Islands'],\n        ['TD', 'Chad'],\n        ['TF', 'French Southern Territories'],\n        ['TG', 'Togo'],\n        ['TH', 'Thailand'],\n        ['TJ', 'Tajikistan'],\n        ['TK', 'Tokelau'],\n        ['TL', 'Timor-Leste'],\n        ['TM', 'Turkmenistan'],\n        ['TN', 'Tunisia'],\n        ['TO', 'Tonga'],\n        ['TR', 'Türkiye'],\n        ['TT', 'Trinidad and Tobago'],\n        ['TV', 'Tuvalu'],\n        ['TW', 'Taiwan, Province of China'],\n        ['TZ', 'Tanzania, United Republic of'],\n        ['UA', 'Ukraine'],\n        ['UG', 'Uganda'],\n        ['UK', 'United Kingdom of Great Britain and Northern Ireland'],\n        ['UM', 'United States Minor Outlying Islands'],\n        ['US', 'United States of America'],\n        ['UY', 'Uruguay'],\n        ['UZ', 'Uzbekistan'],\n        ['VA', 'Holy See'],\n        ['VC', 'Saint Vincent and the Grenadines'],\n        ['VE', 'Venezuela, Bolivarian Republic of'],\n        ['VG', 'Virgin Islands (British)'],\n        ['VI', 'Virgin Islands (U.S.)'],\n        ['VN', 'Viet Nam'],\n        ['VU', 'Vanuatu'],\n        ['WF', 'Wallis and Futuna'],\n        ['WS', 'Samoa'],\n        ['YE', 'Yemen'],\n        ['YT', 'Mayotte'],\n        ['ZA', 'South Africa'],\n        ['ZM', 'Zambia'],\n        ['ZW', 'Zimbabwe'],\n    ]);\n    /**\n     * ISO-3166 US state ISO codes\n     * @see https://en.wikipedia.org/wiki/ISO_3166-2:US\n     * */\n    const usStates = new Map([\n        ['US-AL', 'Alabama'],\n        ['US-AK', 'Alaska'],\n        ['US-AZ', 'Arizona'],\n        ['US-AR', 'Arkansas'],\n        ['US-CA', 'California'],\n        ['US-CO', 'Colorado'],\n        ['US-CT', 'Connecticut'],\n        ['US-DE', 'Delaware'],\n        ['US-FL', 'Florida'],\n        ['US-GA', 'Georgia'],\n        ['US-HI', 'Hawaii'],\n        ['US-ID', 'Idaho'],\n        ['US-IL', 'Illinois'],\n        ['US-IN', 'Indiana'],\n        ['US-IA', 'Iowa'],\n        ['US-KS', 'Kansas'],\n        ['US-KY', 'Kentucky'],\n        ['US-LA', 'Louisiana'],\n        ['US-ME', 'Maine'],\n        ['US-MD', 'Maryland'],\n        ['US-MA', 'Massachusetts'],\n        ['US-MI', 'Michigan'],\n        ['US-MN', 'Minnesota'],\n        ['US-MS', 'Mississippi'],\n        ['US-MO', 'Missouri'],\n        ['US-MT', 'Montana'],\n        ['US-NE', 'Nebraska'],\n        ['US-NV', 'Nevada'],\n        ['US-NH', 'New Hampshire'],\n        ['US-NJ', 'New Jersey'],\n        ['US-NM', 'New Mexico'],\n        ['US-NY', 'New York'],\n        ['US-NC', 'North Carolina'],\n        ['US-ND', 'North Dakota'],\n        ['US-OH', 'Ohio'],\n        ['US-OK', 'Oklahoma'],\n        ['US-OR', 'Oregon'],\n        ['US-PA', 'Pennsylvania'],\n        ['US-RI', 'Rhode Island'],\n        ['US-SC', 'South Carolina'],\n        ['US-SD', 'South Dakota'],\n        ['US-TN', 'Tennessee'],\n        ['US-TX', 'Texas'],\n        ['US-UT', 'Utah'],\n        ['US-VT', 'Vermont'],\n        ['US-VA', 'Virginia'],\n        ['US-WA', 'Washington'],\n        ['US-WV', 'West Virginia'],\n        ['US-WI', 'Wisconsin'],\n        ['US-WY', 'Wyoming'],\n        ['US-DC', 'District of Columbia'],\n        ['US-AS', 'American Samoa'],\n        ['US-GU', 'Guam'],\n        ['US-MP', 'Northern Mariana Islands'],\n        ['US-PR', 'Puerto Rico'],\n        ['US-UM', 'United States Minor Outlying Islands'],\n        ['US-VI', 'Virgin Islands, U.S.'],\n    ]);\n    new Set([...isoCountries.keys(), ...usStates.keys()]);\n    const parseCache = new Map();\n    const parseRegions = (regionString) => {\n        const include = new Set();\n        const exclude = new Set();\n        if (regionString) {\n            const [a = '', b = ''] = regionString.split('|');\n            for (const item of a.split(',')) {\n                if (item) {\n                    include.add(item);\n                }\n            }\n            for (const item of b.split(',')) {\n                if (item) {\n                    exclude.add(item);\n                }\n            }\n        }\n        return { include, exclude };\n    };\n    const doesGeoRequestMatchList = (requestCountry, requestRegion, isEUCountry, geoRegions) => {\n        if (!requestCountry || !geoRegions) {\n            return true;\n        }\n        let parsed = parseCache.get(geoRegions);\n        if (!parsed) {\n            parsed = parseRegions(geoRegions);\n            parseCache.set(geoRegions, parsed);\n        }\n        const entries = [requestCountry, `${requestCountry}-${requestRegion}`];\n        if (isEUCountry) {\n            entries.push('EU');\n        }\n        // Add UK for Great britain\n        if (requestCountry === 'GB') {\n            entries.push('UK');\n        }\n        if (parsed.include.size &&\n            entries.every((entry) => !parsed.include.has(entry))) {\n            return false;\n        }\n        if (parsed.exclude.size &&\n            entries.some((entry) => parsed.exclude.has(entry))) {\n            return false;\n        }\n        return true;\n    };\n\n    // eslint-disable-next-line @nx/enforce-module-boundaries\n    const getGlobalSettings = () => {\n        var _a;\n        // settings must be globally shared in order for each tag to be able to\n        // process the correct destinations when receiving stubs/calls to process\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore extending globalThis is a pain, ignore.\n        return ((_a = globalThis.edgeTagSettings) !== null && _a !== void 0 ? _a : (globalThis.edgeTagSettings = {}));\n    };\n    const initSettings = (destination, options) => {\n        const settings = getGlobalSettings();\n        settings[destination] = {\n            destination,\n            initialized: false,\n            stubs: [],\n            browserPackages: [],\n            channels: new Map(),\n            geoCountry: null,\n            geoRegion: null,\n            isEURequest: false,\n            consentSetting: {\n                enabled: false,\n                channels: {},\n            },\n            ...options,\n        };\n    };\n    const setSetting = (destination, options) => {\n        const settings = getGlobalSettings();\n        if (!destination) {\n            Object.keys(settings).forEach((key) => {\n                settings[key] = {\n                    ...settings[key],\n                    ...options,\n                };\n            });\n            return;\n        }\n        settings[destination] = {\n            ...settings[destination],\n            ...options,\n        };\n    };\n    const getSetting = (destination, key) => {\n        var _a;\n        return (_a = getGlobalSettings()[destination]) === null || _a === void 0 ? void 0 : _a[key];\n    };\n    const getInstances = () => {\n        return Object.keys(getGlobalSettings());\n    };\n    const addChannel = (destination, pkg, tagName) => upsert(getSetting(destination, 'channels'), pkg, (names) => names.add(tagName), () => new Set());\n    const getProviderVariables = (destination, packageId) => {\n        const setting = getSetting(destination, 'manifest');\n        if (!setting) {\n            return [];\n        }\n        return (setting\n            .filter((pkg) => pkg.package === packageId)\n            .map((pkg) => ({\n            tagName: pkg.tagName,\n            geoRegions: pkg.geoRegions || null,\n            variableSet: pkg.variables || {},\n        })) || []);\n    };\n\n    const getUserAgent = () => {\n        try {\n            const nav = navigator;\n            return nav.userAgent;\n        }\n        catch {\n            return '';\n        }\n    };\n    const getReferrer = (destination) => {\n        let referrer = '';\n        try {\n            const referrerUrl = new URL(document.referrer);\n            const pageUrl = new URL(getPageUrl(destination));\n            if (referrerUrl.host !== pageUrl.host) {\n                referrer = referrerUrl.href;\n            }\n            return referrer;\n        }\n        catch (error) {\n            return referrer;\n        }\n    };\n    const getPageUrl = (destination) => {\n        const config = getSetting(destination, 'config');\n        let pageUrl = (config === null || config === void 0 ? void 0 : config.pageUrl) || '';\n        try {\n            // we need to leave this one in for existing Custom pixel customers\n            if (window.edgetagData && window.edgetagData['pageUrl']) {\n                return window.edgetagData['pageUrl'];\n            }\n            if (!pageUrl) {\n                pageUrl = window.location.href;\n            }\n        }\n        catch {\n            // do nothing\n        }\n        return pageUrl;\n    };\n    const getSearch = (destination) => {\n        try {\n            return new URL(getPageUrl(destination)).search;\n        }\n        catch {\n            return '';\n        }\n    };\n    const getLocale = () => {\n        try {\n            return navigator.language;\n        }\n        catch {\n            return '';\n        }\n    };\n    const getPageTitle = () => {\n        try {\n            return document.title;\n        }\n        catch {\n            return '';\n        }\n    };\n    const areEqual = (a, b) => {\n        if (typeof a !== typeof b ||\n            Array.isArray(a) !== Array.isArray(b) ||\n            isNaN(a) !== isNaN(b)) {\n            return false;\n        }\n        if (typeof a !== 'object' || a === null) {\n            return a === b;\n        }\n        const as = Object.keys(a);\n        const bs = Object.keys(b);\n        if (as.length !== bs.length)\n            return false;\n        for (const key of as) {\n            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n            // @ts-ignore\n            if (!(key in b)) {\n                return false;\n            }\n            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n            // @ts-ignore\n            if (!areEqual(a[key], b[key])) {\n                return false;\n            }\n        }\n        return true;\n    };\n\n    const tagStorage = 'edgeTag';\n    const consentKey = 'consent';\n    const consentCategoriesKey = 'consentCategories';\n    const keyPrefix = `_worker`;\n    const cookieKey = 'tag_user_id';\n    const fallbackSessionKey = 'fallback_tag_user_id';\n    const storageIdKey = 'storageId';\n\n    const encodeString = (name) => {\n        if (typeof btoa === 'undefined') {\n            return Buffer.from(name).toString('base64');\n        }\n        return btoa(name);\n    };\n    const getBasicRandomNumber = () => {\n        return parseInt((Math.random() * 10000000000).toString(), 10);\n    };\n    const generateUUID = () => {\n        let id = '';\n        try {\n            id = crypto.randomUUID();\n            if (!id) {\n                const array = new Uint32Array(20);\n                const numbers = crypto.getRandomValues(array);\n                for (let i = 0; i < 5; i++) {\n                    const y = i * 3;\n                    if (i !== 0) {\n                        id += '-';\n                    }\n                    const sum = numbers[y + 1] + numbers[y + 2] + numbers[y + 3];\n                    id += sum.toString();\n                }\n            }\n        }\n        catch {\n            id = `${getBasicRandomNumber()}-${getBasicRandomNumber()}-${getBasicRandomNumber()}-${getBasicRandomNumber()}-${getBasicRandomNumber()}`;\n            console.log('[EdgeTag] Crypto module not found');\n        }\n        return id;\n    };\n    const generateEventId = (name) => {\n        let time = Date.now().toString();\n        if (typeof performance !== 'undefined' &&\n            typeof performance.now === 'function') {\n            const perf = performance.now();\n            if (perf) {\n                time = perf.toFixed(4);\n            }\n        }\n        return `${encodeString(name)}-${generateUUID()}-${time}`;\n    };\n\n    const getCookieValue = (key) => {\n        var _a;\n        try {\n            if (!document || !document.cookie) {\n                return '';\n            }\n            const cookies = parseCookies(document.cookie);\n            return (_a = cookies[key]) !== null && _a !== void 0 ? _a : '';\n        }\n        catch {\n            return '';\n        }\n    };\n    const parseCookies = (cookie) => {\n        return Object.fromEntries(cookie\n            .split(/;\\s+/)\n            .map((r) => r.split('=').map((str) => str.trim()))\n            .map(([cookieKey, ...cookieValues]) => {\n            const cookieValue = cookieValues.join('=');\n            if (!cookieKey) {\n                return [];\n            }\n            let decodedValue = '';\n            if (cookieValue) {\n                try {\n                    decodedValue = decodeURIComponent(cookieValue);\n                }\n                catch (e) {\n                    console.log(`Unable to decode cookie ${cookieKey}: ${e}`);\n                    decodedValue = cookieValue;\n                }\n            }\n            return [cookieKey, decodedValue];\n        }));\n    };\n\n    const canLog = () => {\n        try {\n            return localStorage.getItem('edgeTagDebug') === '1';\n        }\n        catch {\n            return false;\n        }\n    };\n    const prefix = `[EdgeTag]`;\n    const logger = {\n        log: (...args) => {\n            if (canLog()) {\n                console.log(prefix, ...args);\n            }\n        },\n        error: (...args) => {\n            if (canLog()) {\n                console.error(prefix, ...args);\n            }\n        },\n        info: (...args) => {\n            if (canLog()) {\n                console.info(prefix, ...args);\n            }\n        },\n        trace: (...args) => {\n            if (canLog()) {\n                console.trace(prefix, ...args);\n            }\n        },\n    };\n\n    const initKey = `${keyPrefix}StoreMultiple`;\n    const saveDataPerKey = (destination, persistType, provider, value, key) => {\n        const storage = getData$1(destination, persistType);\n        if (!storage['data']) {\n            storage['data'] = {};\n        }\n        if (!storage['data'][provider]) {\n            storage['data'][provider] = {};\n        }\n        storage['data'][provider][key] = value;\n        saveData(destination, persistType, storage);\n    };\n    const saveKV = (destination, data) => {\n        const currentSession = getData$1(destination, 'session');\n        if (!currentSession['kv']) {\n            currentSession['kv'] = {};\n        }\n        currentSession['kv'] = {\n            ...currentSession['kv'],\n            ...data,\n        };\n        saveData(destination, 'session', currentSession);\n    };\n    const savePerKey = (destination, persistType, provider, value, key) => {\n        const storage = getData$1(destination, persistType);\n        if (!storage[provider]) {\n            storage[provider] = {};\n        }\n        storage[provider][key] = value;\n        saveData(destination, persistType, storage);\n    };\n    const getDataPerKey = (destination, persistType, provider, key) => {\n        const storage = getData$1(destination, persistType);\n        if (!storage[provider]) {\n            return undefined;\n        }\n        return storage[provider][key];\n    };\n    const saveData = (destination, persistType, value, key = initKey) => {\n        if (persistType === 'session') {\n            const data = getSession(key);\n            data[destination] = value;\n            saveSession(data, key);\n            return;\n        }\n        const data = getLocal(key);\n        data[destination] = value;\n        saveLocal(data, key);\n    };\n    const getData$1 = (destination, persistType, key = initKey) => {\n        let data;\n        if (persistType === 'session') {\n            data = getSession(key);\n        }\n        else {\n            data = getLocal(key);\n        }\n        return (data === null || data === void 0 ? void 0 : data[destination]) || {};\n    };\n    const saveLocal = (value, key) => {\n        try {\n            if (!localStorage) {\n                return;\n            }\n            localStorage.setItem(key, JSON.stringify(value));\n        }\n        catch {\n            logger.log('Local storage not supported.');\n        }\n    };\n    const getLocal = (key) => {\n        try {\n            if (!localStorage) {\n                return {};\n            }\n            const data = localStorage.getItem(key);\n            if (!data) {\n                return {};\n            }\n            return JSON.parse(data) || {};\n        }\n        catch {\n            return {};\n        }\n    };\n    const saveSession = (value, key) => {\n        try {\n            if (!sessionStorage) {\n                return;\n            }\n            sessionStorage.setItem(key, JSON.stringify(value));\n        }\n        catch {\n            logger.log('Session storage not supported.');\n        }\n    };\n    const getSession = (key) => {\n        try {\n            if (!sessionStorage) {\n                return {};\n            }\n            const data = sessionStorage.getItem(key);\n            if (!data) {\n                return {};\n            }\n            return JSON.parse(data) || {};\n        }\n        catch {\n            return {};\n        }\n    };\n\n    const getUserId$1 = (destination) => {\n        const userId = getSetting(destination, 'userId');\n        if (userId) {\n            return userId;\n        }\n        return getCookieValue(cookieKey);\n    };\n    const handleGetUserId = (options) => {\n        if (options === null || options === void 0 ? void 0 : options.destination) {\n            return getUserId$1(options.destination);\n        }\n        const instances = getInstances();\n        if (instances.length > 1) {\n            logger.error('Multiple instances detected! Please provide a destination.');\n            return '';\n        }\n        return getUserId$1(instances[0]);\n    };\n\n    const beacon = (url, payload) => {\n        try {\n            let blob;\n            if (payload) {\n                blob = new Blob([JSON.stringify(payload)], { type: 'application/json' });\n            }\n            return navigator.sendBeacon(url, blob);\n        }\n        catch (e) {\n            return Promise.reject(new Error('Beacon not supported.'));\n        }\n    };\n    const ajax = (destination, method, url, payload) => fetch(url, {\n        method,\n        headers: {\n            'Content-type': 'application/json; charset=utf-8',\n            Accept: 'application/json; charset=utf-8',\n            EdgeTagUserId: getUserId$1(destination),\n        },\n        body: JSON.stringify(payload),\n        credentials: 'include',\n    })\n        .then((response) => response\n        .json()\n        .then((data) => ({ status: response.status, body: data })))\n        .then(({ status, body }) => {\n        if (status < 200 || status >= 300) {\n            throw new Error(`Request failed with code ${status}: ${JSON.stringify(body)}`);\n        }\n        return Promise.resolve(body);\n    });\n    const getStandardPayload = (destination, payload) => {\n        const data = {\n            pageUrl: getPageUrl(destination),\n            pageTitle: getPageTitle(),\n            userAgent: getUserAgent(),\n            referrer: getReferrer(destination),\n            search: getSearch(destination),\n            locale: getLocale(),\n            sdkVersion: \"1.34.2\" ,\n            ...(payload || {}),\n        };\n        let storage = {};\n        const session = getData$1(destination, 'session');\n        if (session) {\n            storage = {\n                ...storage,\n                ...session,\n            };\n        }\n        const local = getData$1(destination, 'local');\n        if (local) {\n            storage = {\n                ...storage,\n                ...local,\n            };\n        }\n        data.storage = storage;\n        return data;\n    };\n    async function postRequest(url, data, options) {\n        if (!url) {\n            return Promise.reject(new Error('URL is empty.'));\n        }\n        const parsedUrl = new URL(url);\n        const destination = parsedUrl.origin;\n        const payload = getStandardPayload(destination, data);\n        if (options && options.method === 'beacon') {\n            return Promise.resolve(beacon(url, payload));\n        }\n        return await ajax(destination, 'POST', url, payload);\n    }\n    async function getRequest(url, options) {\n        if (!url) {\n            return Promise.reject(new Error('URL is empty.'));\n        }\n        if (options && options.method === 'beacon') {\n            return {\n                result: Promise.resolve(beacon(url)),\n            };\n        }\n        const parsedUrl = new URL(url);\n        const destination = parsedUrl.origin;\n        return await ajax(destination, 'GET', url);\n    }\n\n    const generateUrl = (destination, path) => {\n        if (!destination) {\n            logger.log('URL is not valid');\n            return '';\n        }\n        return `${destination}${path}`;\n    };\n    const getTagURL = (destination, eventName, options) => {\n        const parsedUrl = new URL(generateUrl(destination, '/tag'));\n        if (options === null || options === void 0 ? void 0 : options.sync) {\n            parsedUrl.searchParams.set('sync', 'true');\n        }\n        if (eventName) {\n            parsedUrl.searchParams.set('name', eventName);\n        }\n        return parsedUrl.toString();\n    };\n    const getInitURL = (destination) => {\n        return generateUrl(destination, '/init');\n    };\n    const getConsentURL = (destination) => {\n        return generateUrl(destination, '/consent');\n    };\n    const getFullConsentURL = (destination) => {\n        return generateUrl(destination, '/full-consent');\n    };\n    const getUserURL = (destination) => {\n        return generateUrl(destination, '/user');\n    };\n    const getDataURL = (destination) => {\n        return generateUrl(destination, `/data`);\n    };\n    const getGetDataURL = (destination, keys) => {\n        return generateUrl(destination, `/data?keys=${encodeURIComponent(keys.join(','))}`);\n    };\n    const getKeysURL = (destination) => {\n        return generateUrl(destination, `/keys`);\n    };\n\n    const getConsent$1 = (destination) => {\n        const storageConsent = getDataPerKey(destination, 'local', tagStorage, consentKey);\n        if (storageConsent) {\n            return storageConsent;\n        }\n        return getSetting(destination, 'consent');\n    };\n    const getConsentCategories = (destination) => {\n        const storageConsentCategories = getDataPerKey(destination, 'local', tagStorage, consentCategoriesKey);\n        if (storageConsentCategories) {\n            return storageConsentCategories;\n        }\n        return getSetting(destination, 'consentCategories');\n    };\n\n    const processStubs = (destination) => {\n        try {\n            const stubs = getSetting(destination, 'stubs');\n            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n            // @ts-ignore\n            stubs.forEach((stub) => api[stub.name](...(stub.arguments || [])));\n            setSetting(destination, {\n                stubs: [],\n            });\n        }\n        catch (e) {\n            logger.error(e);\n        }\n    };\n    const addStub = (destination, stub) => {\n        const otherStubs = getSetting(destination, 'stubs') || [];\n        setSetting(destination, {\n            stubs: [...otherStubs, stub],\n        });\n    };\n\n    const preparePayloadWithConversion = (payloadData, currencySettings) => {\n        const currency = payloadData['currency'];\n        const value = parseFloat(payloadData['value']);\n        if (!currency || !currencySettings) {\n            return null;\n        }\n        const conversion = currencySettings.rates.find((rate) => rate.from === currency);\n        if (!conversion) {\n            return null;\n        }\n        payloadData['currency'] = conversion.to;\n        if (value) {\n            payloadData['value'] = parseFloat((value * conversion.value).toFixed(3));\n        }\n        if ('contents' in payloadData && Array.isArray(payloadData['contents'])) {\n            for (const content of payloadData['contents']) {\n                if ('item_price' in content) {\n                    content.item_price = parseFloat((content.item_price * conversion.value).toFixed(3));\n                }\n            }\n        }\n        return {\n            providers: currencySettings.providers,\n            payload: payloadData,\n        };\n    };\n\n    const processGetData = (destination, keys, callback) => {\n        getRequest(getGetDataURL(destination, keys))\n            .then((result) => {\n            callback((result === null || result === void 0 ? void 0 : result.result) || {});\n        })\n            .catch(logger.error);\n    };\n    const handleGetData = (keys, callback, options) => {\n        if (!keys || keys.length === 0) {\n            logger.error('Provide keys for get data API.');\n            return;\n        }\n        if (options === null || options === void 0 ? void 0 : options.destination) {\n            processGetData(options.destination, keys, callback);\n            return;\n        }\n        const instances = getInstances();\n        if (instances.length > 1) {\n            logger.error('Multiple instances found! Please provide destination.');\n            callback({});\n            return;\n        }\n        processGetData(instances[0], keys, callback);\n    };\n\n    const sendTag = (destination, { eventName, eventId, data, providerData, providers, options }) => {\n        const payload = {\n            eventName,\n            eventId,\n            timestamp: Date.now(),\n            data,\n            providerData,\n        };\n        if (providers) {\n            payload.providers = providers;\n        }\n        postRequest(getTagURL(destination, eventName, options), payload, options).catch(logger.error);\n    };\n    const processTag = (destination, eventName, data = {}, providers, options) => {\n        var _a, _b;\n        if (!getSetting(destination, 'initialized')) {\n            addStub(destination, {\n                name: 'tag',\n                arguments: [eventName, data, providers, options],\n            });\n            return;\n        }\n        let eventId = data['eventId'];\n        if (!eventId) {\n            eventId = generateEventId(eventName);\n        }\n        const providerPackages = getSetting(destination, 'browserPackages');\n        const configuredTags = getSetting(destination, 'channels');\n        const skipZeroPurchaseEvent = getSetting(destination, 'skipZeroPurchaseEvent') || false;\n        const requestCountry = getSetting(destination, 'geoCountry') || null;\n        const requestRegion = getSetting(destination, 'geoRegion') || null;\n        const isEURequest = getSetting(destination, 'isEURequest') || false;\n        const sessionId = getSetting(destination, 'sessionId');\n        const userId = getUserId$1(destination);\n        const providerData = {};\n        const consentChannel = getConsent$1(destination);\n        const consentCategory = getConsentCategories(destination);\n        const consentSettings = getSetting(destination, 'consentSetting');\n        const userConsent = { consentChannel, consentCategory, consentSettings };\n        if (skipZeroPurchaseEvent && isZeroPurchaseEvent({ eventName, data })) {\n            return;\n        }\n        const conversion = preparePayloadWithConversion(JSON.parse(JSON.stringify(data)), getSetting(destination, 'currency'));\n        for (const pkg of providerPackages) {\n            if (!pkg || !pkg.name || !pkg.tag) {\n                continue;\n            }\n            if (!configuredTags.has(pkg.name)) {\n                logger.log(`Provider ${pkg.name} is not in allow list`);\n                continue;\n            }\n            const variables = getProviderVariables(destination, pkg.name);\n            const result = {};\n            const executionContext = new Map();\n            for (const variable of variables) {\n                if (!isProviderInstanceAllowed(providers, pkg.name, variable.tagName)) {\n                    logger.log(`Provider instance is not allowed (${pkg.name}: ${variable.tagName})`);\n                    continue;\n                }\n                if (!hasUserConsent(userConsent, pkg.name, variable.tagName)) {\n                    logger.log(`Consent is missing (${pkg.name}: ${variable.tagName})`);\n                    continue;\n                }\n                if (!doesGeoRequestMatchList(requestCountry, requestRegion, isEURequest, variable.geoRegions)) {\n                    logger.log('GEO request region does not match the filter, skiping');\n                    continue;\n                }\n                const payload = ((_a = conversion === null || conversion === void 0 ? void 0 : conversion.providers) === null || _a === void 0 ? void 0 : _a.length) === 0 ||\n                    ((_b = conversion === null || conversion === void 0 ? void 0 : conversion.providers) === null || _b === void 0 ? void 0 : _b.includes(pkg.name))\n                    ? conversion.payload\n                    : data;\n                result[variable.tagName] = pkg.tag({\n                    userId,\n                    sessionId,\n                    eventName,\n                    eventId,\n                    data: JSON.parse(JSON.stringify(payload)),\n                    sendTag: sendTag.bind(null, destination),\n                    getEdgeData: processGetData.bind(null, destination),\n                    manifestVariables: variable.variableSet,\n                    executionContext,\n                    destination,\n                });\n            }\n            providerData[pkg.name] = result;\n        }\n        if (!hasAllowedManifestTags(configuredTags, userConsent, providers)) {\n            return;\n        }\n        sendTag(destination, {\n            eventName,\n            eventId,\n            data,\n            providerData,\n            providers,\n            options,\n        });\n    };\n    const handleTag = (eventName, data = {}, providers, options) => {\n        if (options === null || options === void 0 ? void 0 : options.destination) {\n            processTag(options.destination, eventName, data, providers, options);\n            return;\n        }\n        getInstances().forEach((instance) => {\n            processTag(instance, eventName, data, providers, options);\n        });\n    };\n    const hasAllowedManifestTags = (tags, consent, providersConfig) => {\n        for (const [pkg, tagNames] of tags) {\n            for (const tagName of tagNames) {\n                if (hasUserConsent(consent, pkg, tagName) &&\n                    isProviderInstanceAllowed(providersConfig, pkg, tagName)) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    };\n\n    const processData = (destination, data, providers, options) => {\n        saveKV(destination, data);\n        const providerPackages = getSetting(destination, 'browserPackages');\n        const configuredTags = getSetting(destination, 'channels');\n        const userId = getUserId$1(destination);\n        const requestCountry = getSetting(destination, 'geoCountry') || null;\n        const requestRegion = getSetting(destination, 'geoRegion') || null;\n        const isEURequest = getSetting(destination, 'isEURequest') || false;\n        const consentChannel = getConsent$1(destination);\n        const consentCategory = getConsentCategories(destination);\n        const consentSettings = getSetting(destination, 'consentSetting');\n        const userConsent = { consentChannel, consentCategory, consentSettings };\n        for (const pkg of providerPackages) {\n            if (!pkg || !pkg.user || !pkg.name) {\n                continue;\n            }\n            if (!configuredTags.has(pkg.name)) {\n                logger.log(`Provider ${pkg.name} is not in allow list`);\n                continue;\n            }\n            const variables = getProviderVariables(destination, pkg.name);\n            for (const variable of variables) {\n                if (!isProviderInstanceAllowed(providers, pkg.name, variable.tagName)) {\n                    logger.log(`Data not allowed for ${pkg.name} (${variable.tagName})`);\n                    continue;\n                }\n                if (!hasUserConsent(userConsent, pkg.name, variable.tagName)) {\n                    logger.log(`Consent is missing for ${pkg.name} (${variable.tagName})`);\n                    continue;\n                }\n                if (!doesGeoRequestMatchList(requestCountry, requestRegion, isEURequest, variable.geoRegions)) {\n                    logger.log(`GEO request region does not match list, skipping`);\n                    continue;\n                }\n                pkg.user({\n                    userId,\n                    data,\n                    manifestVariables: variable.variableSet,\n                    destination,\n                });\n            }\n        }\n        postRequest(getDataURL(destination), { data, providers }, options).catch(logger.error);\n    };\n    const handleData = (data, providers, options) => {\n        if (!data || Object.keys(data).length === 0) {\n            logger.error('Provide data for data API.');\n            return;\n        }\n        if (options === null || options === void 0 ? void 0 : options.destination) {\n            processData(options.destination, data, providers, options);\n            return;\n        }\n        getInstances().forEach((destination) => {\n            processData(destination, data, providers, options);\n        });\n    };\n\n    const handleConsent = (consent, consentCategories, options) => {\n        if (options === null || options === void 0 ? void 0 : options.destination) {\n            processConsent(options.destination, consent, consentCategories, options);\n            return;\n        }\n        getInstances().forEach((destination) => {\n            processConsent(destination, consent, consentCategories, options);\n        });\n    };\n    const saveConsent = (destination, consent, consentCategories) => {\n        setSetting(destination, {\n            consent,\n            consentCategories,\n        });\n        savePerKey(destination, 'local', tagStorage, consent, consentKey);\n        savePerKey(destination, 'local', tagStorage, consentCategories, consentCategoriesKey);\n    };\n    const processConsent = (destination, consent, consentCategories, options) => {\n        const existingConsent = getConsent$1(destination);\n        const existingConsentCategories = getConsentCategories(destination);\n        if (areEqual(existingConsent, consent) &&\n            areEqual(existingConsentCategories, consentCategories)) {\n            return;\n        }\n        if (!getSetting(destination, 'initialized')) {\n            addStub(destination, {\n                name: 'consent',\n                arguments: [consent, consentCategories, options],\n            });\n            return;\n        }\n        const payload = {\n            consentString: consent,\n            consentCategories: { ...consentCategories, necessary: true },\n        };\n        saveConsent(destination, consent, consentCategories);\n        if (!(options === null || options === void 0 ? void 0 : options.localSave)) {\n            postRequest(getConsentURL(destination), payload).catch(logger.error);\n        }\n        const userId = getUserId$1(destination);\n        const providerPackages = getSetting(destination, 'browserPackages');\n        const executionContext = new Map();\n        const requestCountry = getSetting(destination, 'geoCountry') || null;\n        const requestRegion = getSetting(destination, 'geoRegion') || null;\n        const isEURequest = getSetting(destination, 'isEURequest') || false;\n        const consentSettings = getSetting(destination, 'consentSetting');\n        /* Calling Init for all provider instances based on consent check */\n        for (const pkg of providerPackages) {\n            if (!pkg || !pkg.name || !pkg.init) {\n                continue;\n            }\n            const variables = getProviderVariables(destination, pkg.name);\n            for (const variable of variables) {\n                const hasConsent = hasUserConsent({\n                    consentChannel: consent,\n                    consentCategory: consentCategories,\n                    consentSettings,\n                }, pkg.name, variable.tagName);\n                if (!hasConsent) {\n                    continue;\n                }\n                if (!doesGeoRequestMatchList(requestCountry, requestRegion, isEURequest, variable.geoRegions)) {\n                    continue;\n                }\n                pkg.init({\n                    userId,\n                    isNewUser: false,\n                    baseUrl: destination,\n                    manifest: {\n                        tagName: variable.tagName,\n                        variables: variable.variableSet,\n                        package: pkg.name,\n                        geoRegions: variable.geoRegions,\n                    },\n                    sendTag: sendTag.bind(null, destination),\n                    sendEdgeData: processData.bind(null, destination),\n                    getEdgeData: processGetData.bind(null, destination),\n                    keyName: `${keyPrefix}Store`,\n                    executionContext,\n                    session: null,\n                    destination,\n                    consentData: {\n                        consent,\n                        categories: { ...consentCategories, necessary: true },\n                        consentSettings,\n                    },\n                });\n            }\n        }\n        try {\n            window.dispatchEvent(new CustomEvent('edgetag-consent', {\n                detail: {\n                    destination,\n                    oldConsent: existingConsent,\n                    newConsent: consent,\n                    oldConsentCategories: existingConsentCategories,\n                    newConsentCategories: consentCategories,\n                },\n            }));\n        }\n        catch {\n            // do nothing\n        }\n        /* Calling Consent for all providers, not on instance level */\n        for (const pkg of Object.values(providerPackages)) {\n            if (!pkg || !pkg.name || !pkg.consent) {\n                continue;\n            }\n            const variables = getProviderVariables(destination, pkg.name);\n            pkg.consent({\n                consentData: {\n                    consent,\n                    categories: {\n                        ...consentCategories,\n                        necessary: true,\n                    },\n                    consentSettings,\n                },\n                variables,\n            });\n        }\n    };\n\n    const setPreferences = (preferences) => {\n        var _a;\n        if (!preferences) {\n            return null;\n        }\n        if (!preferences.edgeURL) {\n            logger.error('Please provide URL for EdgeTag');\n            return null;\n        }\n        const providersPackages = {};\n        (_a = preferences.providers) === null || _a === void 0 ? void 0 : _a.forEach((provider) => {\n            if (!provider.name) {\n                return;\n            }\n            providersPackages[provider.name] = provider;\n        });\n        try {\n            if (window && Array.isArray(window.edgetagProviders)) {\n                window.edgetagProviders.forEach((provider) => {\n                    if (!provider.name) {\n                        return;\n                    }\n                    providersPackages[provider.name] = provider;\n                });\n            }\n        }\n        catch {\n            // do nothing\n        }\n        initSettings(preferences.edgeURL, {\n            disableConsent: !!preferences.disableConsentCheck,\n        });\n        return providersPackages;\n    };\n\n    const cacheKey = `${keyPrefix}Cache`;\n    const identity = (v) => v;\n    const saveDataToEdge = (destination, key, value, provider) => {\n        if (!value) {\n            return;\n        }\n        let updatedValue = value;\n        if (typeof value !== 'string') {\n            try {\n                updatedValue = JSON.stringify(value);\n            }\n            catch {\n                logger.log('Error stringify value.');\n                return;\n            }\n        }\n        handleData({ [`${provider}::${key}`]: updatedValue }, undefined, {\n            destination,\n        });\n    };\n    const handleCaptureQuery = (destination, provider, key, persistType, map) => {\n        try {\n            if (!window) {\n                return;\n            }\n        }\n        catch {\n            return;\n        }\n        const params = new URLSearchParams(getSearch(destination));\n        if (!params || !params.get(key)) {\n            return;\n        }\n        const data = (map !== null && map !== void 0 ? map : identity)(params.get(key));\n        if (!data) {\n            return;\n        }\n        if (persistType === 'edge') {\n            saveDataToEdge(destination, key, data, provider);\n            return;\n        }\n        saveDataPerKey(destination, persistType, provider, data, key);\n    };\n    const getFromCache = (destination, persistType, provider, key) => {\n        var _a;\n        const type = persistType === 'edge' ? 'local' : persistType;\n        const cache = getData$1(destination, type, cacheKey);\n        return (_a = cache[provider]) === null || _a === void 0 ? void 0 : _a[key];\n    };\n    const saveToCache = (destination, persistType, provider, key, value) => {\n        const type = persistType === 'edge' ? 'local' : persistType;\n        const cache = getData$1(destination, type, cacheKey);\n        if (!cache[provider]) {\n            cache[provider] = { [key]: value };\n        }\n        else {\n            cache[provider][key] = value;\n        }\n        saveData(destination, type, cache, cacheKey);\n    };\n    const handleCaptureStorage = (destination, provider, key, persistType, location, map) => {\n        let data;\n        try {\n            switch (location) {\n                case 'cookie': {\n                    data = (map !== null && map !== void 0 ? map : identity)(getCookieValue(key));\n                    break;\n                }\n                case 'local': {\n                    data = (map !== null && map !== void 0 ? map : identity)(localStorage.getItem(key));\n                    break;\n                }\n                case 'session': {\n                    data = (map !== null && map !== void 0 ? map : identity)(sessionStorage.getItem(key));\n                }\n            }\n        }\n        catch {\n            return;\n        }\n        if (!data) {\n            return;\n        }\n        const cachedKey = `${getUserId$1(destination)}/${key}`;\n        const cachedValue = getFromCache(destination, persistType, provider, cachedKey);\n        if (persistType === 'edge' && cachedValue !== data) {\n            saveDataToEdge(destination, key, data, provider);\n            saveToCache(destination, persistType, provider, cachedKey, data);\n            return;\n        }\n        saveDataPerKey(destination, persistType, provider, data, key);\n    };\n    const handleCapture = (destination, provider, params, capture) => {\n        params.forEach((param) => {\n            switch (param.type) {\n                case 'query': {\n                    handleCaptureQuery(destination, provider, param.key, param.persist, capture === null || capture === void 0 ? void 0 : capture.bind(null, param));\n                    break;\n                }\n                case 'storage': {\n                    handleCaptureStorage(destination, provider, param.key, param.persist, param.location, capture === null || capture === void 0 ? void 0 : capture.bind(null, param));\n                    break;\n                }\n            }\n        });\n    };\n\n    const keyName = `${keyPrefix}Store`;\n    const handleManifest = (destination, response) => {\n        const providerPackages = getSetting(destination, 'browserPackages');\n        const userId = getUserId$1(destination);\n        const executionContext = new Map();\n        const manifest = response.result;\n        const consentChannel = getConsent$1(destination);\n        const consentCategory = getConsentCategories(destination);\n        const consentSettings = getSetting(destination, 'consentSetting');\n        const userConsent = { consentChannel, consentCategory, consentSettings };\n        manifest.forEach((provider) => {\n            addChannel(destination, provider.package, provider.tagName);\n            const pkg = providerPackages.find((pkg) => pkg.name === provider.package);\n            if (provider.rules) {\n                Object.entries(provider.rules).forEach(([name, recipe]) => {\n                    switch (name) {\n                        case 'capture': {\n                            handleCapture(destination, provider.package, recipe, pkg === null || pkg === void 0 ? void 0 : pkg.capture);\n                            return;\n                        }\n                    }\n                });\n            }\n            if (pkg && pkg.name && pkg.init) {\n                const hasConsent = hasUserConsent(userConsent, pkg.name, provider.tagName);\n                if (hasConsent &&\n                    doesGeoRequestMatchList(response.geoCountry, response.geoRegion, response.isEURequest, provider.geoRegions)) {\n                    pkg.init({\n                        userId,\n                        isNewUser: !!response.isNewUser,\n                        session: response.session,\n                        baseUrl: destination,\n                        manifest: provider,\n                        sendTag: sendTag.bind(null, destination),\n                        sendEdgeData: processData.bind(null, destination),\n                        getEdgeData: processGetData.bind(null, destination),\n                        keyName,\n                        executionContext,\n                        destination,\n                        consentData: {\n                            consent: response.consent,\n                            categories: response.consentCategories,\n                            consentSettings: response.consentSetting,\n                        },\n                    });\n                }\n            }\n        });\n        setSetting(destination, {\n            initialized: true,\n        });\n        processStubs(destination);\n    };\n\n    const mapData = (data) => async (callback) => {\n        try {\n            await callback(data);\n        }\n        catch (err) {\n            console.error(err);\n        }\n    };\n    const callbacks = new Set();\n    const resolved = new Set();\n    const onReady = async (data) => {\n        const callbackData = {\n            destination: data.destination,\n            userId: data.userId,\n            sessionId: data.session.sessionId,\n            isNewUser: data.isNewUser,\n            isNewSession: data.session.isNewSession,\n            consent: data.consent,\n            consentCategories: data.consentCategories,\n            consentSetting: data.consentSetting,\n        };\n        resolved.add(callbackData);\n        await Promise.all([...callbacks].map(mapData(callbackData)));\n    };\n    const handleReady = async (callback) => {\n        callbacks.add(callback);\n        await Promise.all([...resolved.values()].map((data) => mapData(data)(callback)));\n    };\n\n    const handleInit = (preferences) => {\n        const browserPackages = setPreferences(preferences);\n        if (!browserPackages) {\n            return;\n        }\n        let fallbackId;\n        try {\n            fallbackId = preferences.fallbackUserId;\n            if (!fallbackId) {\n                const fallbackSessionValue = sessionStorage.getItem(fallbackSessionKey);\n                if (!fallbackSessionValue) {\n                    const randomId = crypto.randomUUID();\n                    if (randomId) {\n                        fallbackId = `${randomId}-${Date.now()}`;\n                        sessionStorage.setItem(fallbackSessionKey, fallbackId);\n                    }\n                }\n                else {\n                    fallbackId = fallbackSessionValue;\n                }\n            }\n        }\n        catch {\n            // do nothing\n        }\n        if (preferences.afterManifestEvents) {\n            setSetting(preferences.edgeURL, {\n                stubs: preferences.afterManifestEvents,\n            });\n        }\n        const url = new URL(getInitURL(preferences.edgeURL));\n        if (preferences.disableConsentCheck) {\n            url.searchParams.set('consentDisabled', 'true');\n            saveConsent(preferences.edgeURL, {\n                all: true,\n            }, {\n                all: true,\n            });\n        }\n        if (preferences.userId) {\n            setSetting(preferences.edgeURL, { userId: preferences.userId });\n            url.searchParams.set('userId', preferences.userId);\n        }\n        if (fallbackId) {\n            url.searchParams.set('fallbackUserId', fallbackId);\n        }\n        let dbIndex;\n        if (preferences.storageId != null) {\n            dbIndex = preferences.storageId;\n        }\n        else {\n            dbIndex = getDataPerKey(preferences.edgeURL, 'local', tagStorage, storageIdKey);\n        }\n        if (dbIndex != null && !isNaN(dbIndex)) {\n            url.searchParams.set('storageId', dbIndex.toString());\n        }\n        if (preferences.sessionId) {\n            url.searchParams.set('sessionId', preferences.sessionId);\n        }\n        url.searchParams.set('pageUrl', getPageUrl(preferences.edgeURL));\n        getRequest(url.href)\n            .then((result) => {\n            var _a;\n            if (!result) {\n                logger.error('Initialization failed');\n                return;\n            }\n            if (result.isNewUser && result.consent) {\n                saveConsent(preferences.edgeURL, result.consent, result.consentCategories);\n            }\n            const providers = {};\n            (_a = result.result) === null || _a === void 0 ? void 0 : _a.forEach((pkg) => {\n                const provider = browserPackages[pkg.package];\n                if (!provider) {\n                    return;\n                }\n                providers[pkg.package] = provider;\n            });\n            setSetting(preferences.edgeURL, {\n                isNewUser: result.isNewUser,\n                consent: getConsent$1(preferences.edgeURL) || result.consent,\n                userId: result.userId,\n                sessionId: result.session.sessionId,\n                manifest: result.result,\n                browserPackages: Object.values(providers),\n                storageId: result.storageId,\n                currency: result.currency,\n                skipZeroPurchaseEvent: result.skipZeroPurchaseEvent,\n                geoCountry: result.geoCountry,\n                geoRegion: result.geoRegion,\n                isEURequest: result.isEURequest,\n                consentSetting: result.consentSetting,\n            });\n            if (result.storageId != null) {\n                savePerKey(preferences.edgeURL, 'local', tagStorage, result.storageId, storageIdKey);\n            }\n            handleManifest(preferences.edgeURL, result);\n            try {\n                const detail = {\n                    destination: preferences.edgeURL,\n                    userId: result.userId,\n                    isNewUser: result.isNewUser,\n                    consent: result.consent,\n                    consentCategories: result.consentCategories,\n                    consentSetting: result.consentSetting,\n                    session: result.session,\n                };\n                window.dispatchEvent(new CustomEvent('edgetag-initialized', {\n                    detail,\n                }));\n                onReady(detail);\n            }\n            catch {\n                // do nothing\n            }\n        })\n            .catch(logger.error);\n    };\n\n    const processUser = (destination, key, value, providers, options) => {\n        saveKV(destination, {\n            [key]: value,\n        });\n        const providerPackages = getSetting(destination, 'browserPackages');\n        const configuredTags = getSetting(destination, 'channels');\n        const userId = getUserId$1(destination);\n        const requestCountry = getSetting(destination, 'geoCountry') || null;\n        const requestRegion = getSetting(destination, 'geoRegion') || null;\n        const isEURequest = getSetting(destination, 'isEURequest') || false;\n        const consentChannel = getConsent$1(destination);\n        const consentCategory = getConsentCategories(destination);\n        const consentSettings = getSetting(destination, 'consentSetting');\n        const userConsent = { consentChannel, consentCategory, consentSettings };\n        for (const pkg of providerPackages) {\n            if (!pkg || !pkg.name || !pkg.user) {\n                continue;\n            }\n            if (!configuredTags.has(pkg.name)) {\n                logger.log(`Provider ${pkg.name} is not in allow list`);\n                continue;\n            }\n            const variables = getProviderVariables(destination, pkg.name);\n            for (const variable of variables) {\n                if (!isProviderInstanceAllowed(providers, pkg.name, variable.tagName)) {\n                    logger.log(`User not allowed for ${pkg.name} (${variable.tagName})`);\n                    continue;\n                }\n                if (!hasUserConsent(userConsent, pkg.name, variable.tagName)) {\n                    logger.log(`User do not have consent for ${pkg.name} (${variable.tagName})`);\n                    continue;\n                }\n                if (!doesGeoRequestMatchList(requestCountry, requestRegion, isEURequest, variable.geoRegions)) {\n                    logger.log(`GEO request region does not match list, skipping`);\n                    continue;\n                }\n                pkg.user({\n                    userId,\n                    data: { [key]: value },\n                    manifestVariables: variable.variableSet,\n                    destination,\n                });\n            }\n        }\n        postRequest(getUserURL(destination), {\n            key,\n            value,\n            providers,\n        }, options).catch(logger.error);\n    };\n    const handleUser = (key, value, providers, options) => {\n        if (!key || !value) {\n            logger.error('Key or Value is missing in user API.');\n            return;\n        }\n        if (options === null || options === void 0 ? void 0 : options.destination) {\n            processUser(options.destination, key, value, providers, options);\n            return;\n        }\n        getInstances().forEach((destination) => {\n            processUser(destination, key, value, providers, options);\n        });\n    };\n\n    const processKeys = (destination, callback) => {\n        getRequest(getKeysURL(destination))\n            .then((result) => {\n            callback((result === null || result === void 0 ? void 0 : result.result) || []);\n        })\n            .catch(logger.error);\n    };\n    const handleKeys = (callback, options) => {\n        if (options === null || options === void 0 ? void 0 : options.destination) {\n            processKeys(options.destination, callback);\n            return;\n        }\n        const instances = getInstances();\n        if (instances.length > 1) {\n            logger.error('Multiple instances found! Please provide destination.');\n            callback([]);\n            return;\n        }\n        processKeys(instances[0], callback);\n    };\n\n    const processGetConsent = (destination, callback) => {\n        getRequest(getFullConsentURL(destination))\n            .then((result) => {\n            // this will try to return the consent data stored in Edge\n            return result === null || result === void 0 ? void 0 : result.result;\n        })\n            .catch(() => undefined)\n            .then((result) => {\n            var _a, _b;\n            const consent = (_a = result === null || result === void 0 ? void 0 : result.consent) !== null && _a !== void 0 ? _a : getConsent$1(destination); // this is a default value i.e. value from local storage and memory incase Edge doesn't have consent\n            const consentCategories = (_b = result === null || result === void 0 ? void 0 : result.consentCategories) !== null && _b !== void 0 ? _b : getConsentCategories(destination); // this is a default value i.e. value from local storage and memory incase Edge doesn't have consent\n            const consentArgument = consent || null;\n            const consentCategoriesArgument = consentCategories || null;\n            let errorMessage = null;\n            if (!consentArgument) {\n                if (!consentCategories) {\n                    errorMessage =\n                        'Consent and ConsentCategories not found for Current User!';\n                }\n                errorMessage = 'Consent not found for Current User!';\n            }\n            else if (!consentCategories) {\n                errorMessage = 'ConsentCategories not found for Current User!';\n            }\n            const errorArgument = errorMessage ? new Error(errorMessage) : undefined;\n            callback(consentArgument, errorArgument, consentCategoriesArgument);\n        });\n    };\n    const handleGetConsent = (callback, options) => {\n        if (options === null || options === void 0 ? void 0 : options.destination) {\n            processGetConsent(options.destination, callback);\n            return;\n        }\n        const instances = getInstances();\n        if (instances.length > 1) {\n            callback(null, new Error('Multiple instances found! Please provide destination.'), null);\n            return;\n        }\n        processGetConsent(instances[0], callback);\n    };\n\n    const handleIsNewUser = (options) => {\n        if (options === null || options === void 0 ? void 0 : options.destination) {\n            return getSetting(options.destination, 'isNewUser');\n        }\n        const instances = getInstances();\n        if (instances.length > 1) {\n            logger.error('Multiple instances found! Please provide destination.');\n            return undefined;\n        }\n        return getSetting(instances[0], 'isNewUser');\n    };\n\n    const processConfig = (destination, config) => {\n        const existingConfig = getSetting(destination, 'config');\n        setSetting(destination, {\n            config: {\n                ...existingConfig,\n                ...config,\n            },\n        });\n    };\n    const handleConfig = (config, options) => {\n        if (options === null || options === void 0 ? void 0 : options.destination) {\n            processConfig(options.destination, config);\n            return;\n        }\n        getInstances().forEach((destination) => {\n            processConfig(destination, config);\n        });\n    };\n\n    const init = (preferences) => {\n        handleInit(preferences);\n    };\n    const tag = (name, data, providers, options) => {\n        handleTag(name, data, providers, options);\n    };\n    const consent = (consentChannels, consentCategories, options) => {\n        handleConsent(consentChannels, consentCategories, options);\n    };\n    const user = (key, value, providers, options) => {\n        handleUser(key, value, providers, options);\n    };\n    const data = (value, providers, options) => {\n        handleData(value, providers, options);\n    };\n    const getData = (keys, callback, options) => {\n        handleGetData(keys, callback, options);\n    };\n    const keys = (callback, options) => {\n        handleKeys(callback, options);\n    };\n    const getUserId = (options) => {\n        return handleGetUserId(options);\n    };\n    const getConsent = (callback, options) => {\n        handleGetConsent(callback, options);\n    };\n    const isNewUser = (options) => {\n        return handleIsNewUser(options);\n    };\n    const setConfig = (config, options) => {\n        handleConfig(config, options);\n    };\n    const ready = (callback) => {\n        handleReady(callback);\n    };\n\n    // TODO https://github.com/blotoutio/solutions/issues/826\n\n    class API {\n      init(preferences) {\n        init(preferences);\n      }\n\n      tag(name, data, providers, options) {\n        tag(name, data, providers, options);\n      }\n\n      consent(consentString, options) {\n        consent(consentString, options);\n      }\n\n      user(key, value, providers, options) {\n        user(key, value, providers, options);\n      }\n\n      data(data$1, providers, options) {\n        data(data$1, providers, options);\n      }\n\n      getData(keys, callback, options) {\n        getData(keys, callback, options);\n      }\n\n      keys(callback, options) {\n        keys(callback, options);\n      }\n\n      getUserId(options) {\n        return getUserId(options)\n      }\n\n      getConsent(callback, options) {\n        getConsent(callback, options);\n      }\n\n      isNewUser(options) {\n        return isNewUser(options)\n      }\n\n      setConfig(config, options) {\n        setConfig(config, options);\n      }\n\n      ready(callback) {\n        ready(callback);\n      }\n    }\n\n    var library = new API();\n\n    (function () {\n      const getTagDestination = (args) => {\n        if (args?.length < 4) {\n          return\n        }\n\n        return args[3].destination\n      };\n\n      const getInitUrl = (args) => {\n        if (args?.length < 1) {\n          return\n        }\n\n        return args[0].edgeURL\n      };\n\n      const addTagToDestination = (destination, tag) => {\n        if (!window.edgetag.destinations[destination]) {\n          window.edgetag.destinations[destination] = {};\n        }\n\n        if (!window.edgetag.destinations[destination].tags) {\n          window.edgetag.destinations[destination].tags = [];\n        }\n\n        window.edgetag.destinations[destination].tags.push({\n          name: 'tag',\n          arguments: tag,\n        });\n      };\n\n      const handleInit = (args) => {\n        if (!args?.length) {\n          console.error('EdgeTag SDK: Init event is missing arguments');\n          return\n        }\n\n        const destination = args[0]?.edgeURL;\n        if (!destination) {\n          console.error('EdgeTag SDK: edgeURL is required for initialization');\n          return\n        }\n\n        if (!window.edgetag.destinations?.[destination]?.initialized) {\n          window.edgetag.stubs.push(['init', ...args]);\n          return\n        }\n\n        const tags = [];\n\n        if (\n          window.edgetag.destinations?.['all']?.tags &&\n          !window.edgetag.destinations['all']?.resolvedInits?.has(destination)\n        ) {\n          const destinationTags = window.edgetag.destinations['all'].tags.map(\n            (tag) => {\n              const newTag = structuredClone(tag);\n              newTag['arguments'][3] = {\n                ...newTag['arguments'][3],\n                destination,\n              };\n\n              return newTag\n            }\n          );\n          tags.push(...destinationTags);\n          if (!window.edgetag.destinations['all'].resolvedInits) {\n            window.edgetag.destinations['all'].resolvedInits = new Set();\n          }\n          window.edgetag.destinations['all'].resolvedInits.add(destination);\n        }\n\n        if (window.edgetag.destinations[destination].tags) {\n          tags.push(...window.edgetag.destinations[destination].tags);\n          window.edgetag.destinations[destination].tags = [];\n        }\n\n        if (tags.length) {\n          args[0]['afterManifestEvents'] = tags;\n        }\n\n        library.init(...args);\n      };\n\n      const handleTag = (args) => {\n        const destination = getTagDestination(args);\n\n        if (destination && !window.edgetag.destinations[destination]?.initialized) {\n          addTagToDestination(destination, args);\n          return\n        }\n\n        library.tag(...args);\n      };\n\n      const processStub = (name, args) => {\n        try {\n          if (name === 'init') {\n            handleInit(args);\n            return\n          }\n\n          if (name === 'tag') {\n            handleTag(args);\n            return\n          }\n\n          return library[name](...args)\n        } catch (e) {\n          console.error(e);\n        }\n      };\n\n      const handleEvent = (args) => {\n        const sliced = [].slice.call(args);\n        if (!Array.isArray(sliced) || !sliced.length) {\n          return\n        }\n\n        return processStub(sliced[0], sliced.slice(1))\n      };\n\n      let stubs = window.edgetag?.stubs;\n      if (!stubs) {\n        stubs = [];\n      }\n\n      if (!window.edgetag?.live) {\n        const destinations = window.edgetag?.destinations;\n\n        // this needs to be regular function for arguments to work\n        window.edgetag = function () {\n          return handleEvent(arguments)\n        };\n\n        window.edgetag.live = true;\n        window.edgetag.destinations = destinations || {};\n      }\n\n      window.edgetag.stubs = [];\n\n      window.edgetag.handleStubs = () => {\n        if (!window.edgetag.stubs || !Array.isArray(window.edgetag.stubs)) {\n          console.error('EdgeTag SDK: Invalid stubs array');\n          return\n        }\n\n        stubs = window.edgetag.stubs;\n        window.edgetag.stubs = [];\n\n        stubs.forEach((stub) => {\n          handleEvent(stub);\n        });\n      };\n\n      if (!window.edgetag.destinations) {\n        window.edgetag.destinations = {};\n      }\n\n      if (!stubs.length) {\n        return\n      }\n\n      const inits = [];\n      const tags = [];\n      const otherStubs = [];\n\n      stubs.forEach((stub) => {\n        const sliced = [].slice.call(stub);\n        if (!Array.isArray(sliced)) {\n          return\n        }\n\n        const name = sliced[0];\n        const args = sliced.slice(1);\n\n        if (name === 'init') {\n          const destination = getInitUrl(args);\n          if (!window.edgetag.destinations[destination]) {\n            window.edgetag.destinations[destination] = {\n              tags: [],\n            };\n          }\n\n          inits.push(args);\n          return\n        }\n\n        if (name === 'tag') {\n          tags.push(args);\n          return\n        }\n\n        otherStubs.push({\n          name,\n          args,\n        });\n      });\n\n      tags.forEach((tag) => {\n        const destination = getTagDestination(tag);\n        if (destination) {\n          addTagToDestination(destination, tag);\n          return\n        }\n\n        if (!window.edgetag.destinations['all']) {\n          window.edgetag.destinations['all'] = {\n            tags: [],\n            resolvedInits: new Set(),\n          };\n        }\n\n        window.edgetag.destinations['all'].tags.push({\n          name: 'tag',\n          arguments: tag,\n        });\n      });\n\n      inits.forEach((init) => {\n        window.edgetag.stubs.push(['init', ...init]);\n      });\n\n      otherStubs.forEach((stub) => {\n        window.edgetag.stubs.push([stub.name, ...stub.args]);\n      });\n    })();\n\n})();\n"]}