| 'use strict'; | 
| // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` | 
| require('../modules/es.array.iterator'); | 
| require('../modules/es.string.from-code-point'); | 
| var $ = require('../internals/export'); | 
| var globalThis = require('../internals/global-this'); | 
| var safeGetBuiltIn = require('../internals/safe-get-built-in'); | 
| var getBuiltIn = require('../internals/get-built-in'); | 
| var call = require('../internals/function-call'); | 
| var uncurryThis = require('../internals/function-uncurry-this'); | 
| var DESCRIPTORS = require('../internals/descriptors'); | 
| var USE_NATIVE_URL = require('../internals/url-constructor-detection'); | 
| var defineBuiltIn = require('../internals/define-built-in'); | 
| var defineBuiltInAccessor = require('../internals/define-built-in-accessor'); | 
| var defineBuiltIns = require('../internals/define-built-ins'); | 
| var setToStringTag = require('../internals/set-to-string-tag'); | 
| var createIteratorConstructor = require('../internals/iterator-create-constructor'); | 
| var InternalStateModule = require('../internals/internal-state'); | 
| var anInstance = require('../internals/an-instance'); | 
| var isCallable = require('../internals/is-callable'); | 
| var hasOwn = require('../internals/has-own-property'); | 
| var bind = require('../internals/function-bind-context'); | 
| var classof = require('../internals/classof'); | 
| var anObject = require('../internals/an-object'); | 
| var isObject = require('../internals/is-object'); | 
| var $toString = require('../internals/to-string'); | 
| var create = require('../internals/object-create'); | 
| var createPropertyDescriptor = require('../internals/create-property-descriptor'); | 
| var getIterator = require('../internals/get-iterator'); | 
| var getIteratorMethod = require('../internals/get-iterator-method'); | 
| var createIterResultObject = require('../internals/create-iter-result-object'); | 
| var validateArgumentsLength = require('../internals/validate-arguments-length'); | 
| var wellKnownSymbol = require('../internals/well-known-symbol'); | 
| var arraySort = require('../internals/array-sort'); | 
|   | 
| var ITERATOR = wellKnownSymbol('iterator'); | 
| var URL_SEARCH_PARAMS = 'URLSearchParams'; | 
| var URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator'; | 
| var setInternalState = InternalStateModule.set; | 
| var getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS); | 
| var getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR); | 
|   | 
| var nativeFetch = safeGetBuiltIn('fetch'); | 
| var NativeRequest = safeGetBuiltIn('Request'); | 
| var Headers = safeGetBuiltIn('Headers'); | 
| var RequestPrototype = NativeRequest && NativeRequest.prototype; | 
| var HeadersPrototype = Headers && Headers.prototype; | 
| var TypeError = globalThis.TypeError; | 
| var encodeURIComponent = globalThis.encodeURIComponent; | 
| var fromCharCode = String.fromCharCode; | 
| var fromCodePoint = getBuiltIn('String', 'fromCodePoint'); | 
| var $parseInt = parseInt; | 
| var charAt = uncurryThis(''.charAt); | 
| var join = uncurryThis([].join); | 
| var push = uncurryThis([].push); | 
| var replace = uncurryThis(''.replace); | 
| var shift = uncurryThis([].shift); | 
| var splice = uncurryThis([].splice); | 
| var split = uncurryThis(''.split); | 
| var stringSlice = uncurryThis(''.slice); | 
| var exec = uncurryThis(/./.exec); | 
|   | 
| var plus = /\+/g; | 
| var FALLBACK_REPLACER = '\uFFFD'; | 
| var VALID_HEX = /^[0-9a-f]+$/i; | 
|   | 
| var parseHexOctet = function (string, start) { | 
|   var substr = stringSlice(string, start, start + 2); | 
|   if (!exec(VALID_HEX, substr)) return NaN; | 
|   | 
|   return $parseInt(substr, 16); | 
| }; | 
|   | 
| var getLeadingOnes = function (octet) { | 
|   var count = 0; | 
|   for (var mask = 0x80; mask > 0 && (octet & mask) !== 0; mask >>= 1) { | 
|     count++; | 
|   } | 
|   return count; | 
| }; | 
|   | 
| var utf8Decode = function (octets) { | 
|   var codePoint = null; | 
|   | 
|   switch (octets.length) { | 
|     case 1: | 
|       codePoint = octets[0]; | 
|       break; | 
|     case 2: | 
|       codePoint = (octets[0] & 0x1F) << 6 | (octets[1] & 0x3F); | 
|       break; | 
|     case 3: | 
|       codePoint = (octets[0] & 0x0F) << 12 | (octets[1] & 0x3F) << 6 | (octets[2] & 0x3F); | 
|       break; | 
|     case 4: | 
|       codePoint = (octets[0] & 0x07) << 18 | (octets[1] & 0x3F) << 12 | (octets[2] & 0x3F) << 6 | (octets[3] & 0x3F); | 
|       break; | 
|   } | 
|   | 
|   return codePoint > 0x10FFFF ? null : codePoint; | 
| }; | 
|   | 
| var decode = function (input) { | 
|   input = replace(input, plus, ' '); | 
|   var length = input.length; | 
|   var result = ''; | 
|   var i = 0; | 
|   | 
|   while (i < length) { | 
|     var decodedChar = charAt(input, i); | 
|   | 
|     if (decodedChar === '%') { | 
|       if (charAt(input, i + 1) === '%' || i + 3 > length) { | 
|         result += '%'; | 
|         i++; | 
|         continue; | 
|       } | 
|   | 
|       var octet = parseHexOctet(input, i + 1); | 
|   | 
|       // eslint-disable-next-line no-self-compare -- NaN check | 
|       if (octet !== octet) { | 
|         result += decodedChar; | 
|         i++; | 
|         continue; | 
|       } | 
|   | 
|       i += 2; | 
|       var byteSequenceLength = getLeadingOnes(octet); | 
|   | 
|       if (byteSequenceLength === 0) { | 
|         decodedChar = fromCharCode(octet); | 
|       } else { | 
|         if (byteSequenceLength === 1 || byteSequenceLength > 4) { | 
|           result += FALLBACK_REPLACER; | 
|           i++; | 
|           continue; | 
|         } | 
|   | 
|         var octets = [octet]; | 
|         var sequenceIndex = 1; | 
|   | 
|         while (sequenceIndex < byteSequenceLength) { | 
|           i++; | 
|           if (i + 3 > length || charAt(input, i) !== '%') break; | 
|   | 
|           var nextByte = parseHexOctet(input, i + 1); | 
|   | 
|           // eslint-disable-next-line no-self-compare -- NaN check | 
|           if (nextByte !== nextByte) { | 
|             i += 3; | 
|             break; | 
|           } | 
|           if (nextByte > 191 || nextByte < 128) break; | 
|   | 
|           push(octets, nextByte); | 
|           i += 2; | 
|           sequenceIndex++; | 
|         } | 
|   | 
|         if (octets.length !== byteSequenceLength) { | 
|           result += FALLBACK_REPLACER; | 
|           continue; | 
|         } | 
|   | 
|         var codePoint = utf8Decode(octets); | 
|         if (codePoint === null) { | 
|           result += FALLBACK_REPLACER; | 
|         } else { | 
|           decodedChar = fromCodePoint(codePoint); | 
|         } | 
|       } | 
|     } | 
|   | 
|     result += decodedChar; | 
|     i++; | 
|   } | 
|   | 
|   return result; | 
| }; | 
|   | 
| var find = /[!'()~]|%20/g; | 
|   | 
| var replacements = { | 
|   '!': '%21', | 
|   "'": '%27', | 
|   '(': '%28', | 
|   ')': '%29', | 
|   '~': '%7E', | 
|   '%20': '+' | 
| }; | 
|   | 
| var replacer = function (match) { | 
|   return replacements[match]; | 
| }; | 
|   | 
| var serialize = function (it) { | 
|   return replace(encodeURIComponent(it), find, replacer); | 
| }; | 
|   | 
| var URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) { | 
|   setInternalState(this, { | 
|     type: URL_SEARCH_PARAMS_ITERATOR, | 
|     target: getInternalParamsState(params).entries, | 
|     index: 0, | 
|     kind: kind | 
|   }); | 
| }, URL_SEARCH_PARAMS, function next() { | 
|   var state = getInternalIteratorState(this); | 
|   var target = state.target; | 
|   var index = state.index++; | 
|   if (!target || index >= target.length) { | 
|     state.target = null; | 
|     return createIterResultObject(undefined, true); | 
|   } | 
|   var entry = target[index]; | 
|   switch (state.kind) { | 
|     case 'keys': return createIterResultObject(entry.key, false); | 
|     case 'values': return createIterResultObject(entry.value, false); | 
|   } return createIterResultObject([entry.key, entry.value], false); | 
| }, true); | 
|   | 
| var URLSearchParamsState = function (init) { | 
|   this.entries = []; | 
|   this.url = null; | 
|   | 
|   if (init !== undefined) { | 
|     if (isObject(init)) this.parseObject(init); | 
|     else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init)); | 
|   } | 
| }; | 
|   | 
| URLSearchParamsState.prototype = { | 
|   type: URL_SEARCH_PARAMS, | 
|   bindURL: function (url) { | 
|     this.url = url; | 
|     this.update(); | 
|   }, | 
|   parseObject: function (object) { | 
|     var entries = this.entries; | 
|     var iteratorMethod = getIteratorMethod(object); | 
|     var iterator, next, step, entryIterator, entryNext, first, second; | 
|   | 
|     if (iteratorMethod) { | 
|       iterator = getIterator(object, iteratorMethod); | 
|       next = iterator.next; | 
|       while (!(step = call(next, iterator)).done) { | 
|         entryIterator = getIterator(anObject(step.value)); | 
|         entryNext = entryIterator.next; | 
|         if ( | 
|           (first = call(entryNext, entryIterator)).done || | 
|           (second = call(entryNext, entryIterator)).done || | 
|           !call(entryNext, entryIterator).done | 
|         ) throw new TypeError('Expected sequence with length 2'); | 
|         push(entries, { key: $toString(first.value), value: $toString(second.value) }); | 
|       } | 
|     } else for (var key in object) if (hasOwn(object, key)) { | 
|       push(entries, { key: key, value: $toString(object[key]) }); | 
|     } | 
|   }, | 
|   parseQuery: function (query) { | 
|     if (query) { | 
|       var entries = this.entries; | 
|       var attributes = split(query, '&'); | 
|       var index = 0; | 
|       var attribute, entry; | 
|       while (index < attributes.length) { | 
|         attribute = attributes[index++]; | 
|         if (attribute.length) { | 
|           entry = split(attribute, '='); | 
|           push(entries, { | 
|             key: decode(shift(entry)), | 
|             value: decode(join(entry, '=')) | 
|           }); | 
|         } | 
|       } | 
|     } | 
|   }, | 
|   serialize: function () { | 
|     var entries = this.entries; | 
|     var result = []; | 
|     var index = 0; | 
|     var entry; | 
|     while (index < entries.length) { | 
|       entry = entries[index++]; | 
|       push(result, serialize(entry.key) + '=' + serialize(entry.value)); | 
|     } return join(result, '&'); | 
|   }, | 
|   update: function () { | 
|     this.entries.length = 0; | 
|     this.parseQuery(this.url.query); | 
|   }, | 
|   updateURL: function () { | 
|     if (this.url) this.url.update(); | 
|   } | 
| }; | 
|   | 
| // `URLSearchParams` constructor | 
| // https://url.spec.whatwg.org/#interface-urlsearchparams | 
| var URLSearchParamsConstructor = function URLSearchParams(/* init */) { | 
|   anInstance(this, URLSearchParamsPrototype); | 
|   var init = arguments.length > 0 ? arguments[0] : undefined; | 
|   var state = setInternalState(this, new URLSearchParamsState(init)); | 
|   if (!DESCRIPTORS) this.size = state.entries.length; | 
| }; | 
|   | 
| var URLSearchParamsPrototype = URLSearchParamsConstructor.prototype; | 
|   | 
| defineBuiltIns(URLSearchParamsPrototype, { | 
|   // `URLSearchParams.prototype.append` method | 
|   // https://url.spec.whatwg.org/#dom-urlsearchparams-append | 
|   append: function append(name, value) { | 
|     var state = getInternalParamsState(this); | 
|     validateArgumentsLength(arguments.length, 2); | 
|     push(state.entries, { key: $toString(name), value: $toString(value) }); | 
|     if (!DESCRIPTORS) this.length++; | 
|     state.updateURL(); | 
|   }, | 
|   // `URLSearchParams.prototype.delete` method | 
|   // https://url.spec.whatwg.org/#dom-urlsearchparams-delete | 
|   'delete': function (name /* , value */) { | 
|     var state = getInternalParamsState(this); | 
|     var length = validateArgumentsLength(arguments.length, 1); | 
|     var entries = state.entries; | 
|     var key = $toString(name); | 
|     var $value = length < 2 ? undefined : arguments[1]; | 
|     var value = $value === undefined ? $value : $toString($value); | 
|     var index = 0; | 
|     while (index < entries.length) { | 
|       var entry = entries[index]; | 
|       if (entry.key === key && (value === undefined || entry.value === value)) { | 
|         splice(entries, index, 1); | 
|         if (value !== undefined) break; | 
|       } else index++; | 
|     } | 
|     if (!DESCRIPTORS) this.size = entries.length; | 
|     state.updateURL(); | 
|   }, | 
|   // `URLSearchParams.prototype.get` method | 
|   // https://url.spec.whatwg.org/#dom-urlsearchparams-get | 
|   get: function get(name) { | 
|     var entries = getInternalParamsState(this).entries; | 
|     validateArgumentsLength(arguments.length, 1); | 
|     var key = $toString(name); | 
|     var index = 0; | 
|     for (; index < entries.length; index++) { | 
|       if (entries[index].key === key) return entries[index].value; | 
|     } | 
|     return null; | 
|   }, | 
|   // `URLSearchParams.prototype.getAll` method | 
|   // https://url.spec.whatwg.org/#dom-urlsearchparams-getall | 
|   getAll: function getAll(name) { | 
|     var entries = getInternalParamsState(this).entries; | 
|     validateArgumentsLength(arguments.length, 1); | 
|     var key = $toString(name); | 
|     var result = []; | 
|     var index = 0; | 
|     for (; index < entries.length; index++) { | 
|       if (entries[index].key === key) push(result, entries[index].value); | 
|     } | 
|     return result; | 
|   }, | 
|   // `URLSearchParams.prototype.has` method | 
|   // https://url.spec.whatwg.org/#dom-urlsearchparams-has | 
|   has: function has(name /* , value */) { | 
|     var entries = getInternalParamsState(this).entries; | 
|     var length = validateArgumentsLength(arguments.length, 1); | 
|     var key = $toString(name); | 
|     var $value = length < 2 ? undefined : arguments[1]; | 
|     var value = $value === undefined ? $value : $toString($value); | 
|     var index = 0; | 
|     while (index < entries.length) { | 
|       var entry = entries[index++]; | 
|       if (entry.key === key && (value === undefined || entry.value === value)) return true; | 
|     } | 
|     return false; | 
|   }, | 
|   // `URLSearchParams.prototype.set` method | 
|   // https://url.spec.whatwg.org/#dom-urlsearchparams-set | 
|   set: function set(name, value) { | 
|     var state = getInternalParamsState(this); | 
|     validateArgumentsLength(arguments.length, 1); | 
|     var entries = state.entries; | 
|     var found = false; | 
|     var key = $toString(name); | 
|     var val = $toString(value); | 
|     var index = 0; | 
|     var entry; | 
|     for (; index < entries.length; index++) { | 
|       entry = entries[index]; | 
|       if (entry.key === key) { | 
|         if (found) splice(entries, index--, 1); | 
|         else { | 
|           found = true; | 
|           entry.value = val; | 
|         } | 
|       } | 
|     } | 
|     if (!found) push(entries, { key: key, value: val }); | 
|     if (!DESCRIPTORS) this.size = entries.length; | 
|     state.updateURL(); | 
|   }, | 
|   // `URLSearchParams.prototype.sort` method | 
|   // https://url.spec.whatwg.org/#dom-urlsearchparams-sort | 
|   sort: function sort() { | 
|     var state = getInternalParamsState(this); | 
|     arraySort(state.entries, function (a, b) { | 
|       return a.key > b.key ? 1 : -1; | 
|     }); | 
|     state.updateURL(); | 
|   }, | 
|   // `URLSearchParams.prototype.forEach` method | 
|   forEach: function forEach(callback /* , thisArg */) { | 
|     var entries = getInternalParamsState(this).entries; | 
|     var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined); | 
|     var index = 0; | 
|     var entry; | 
|     while (index < entries.length) { | 
|       entry = entries[index++]; | 
|       boundFunction(entry.value, entry.key, this); | 
|     } | 
|   }, | 
|   // `URLSearchParams.prototype.keys` method | 
|   keys: function keys() { | 
|     return new URLSearchParamsIterator(this, 'keys'); | 
|   }, | 
|   // `URLSearchParams.prototype.values` method | 
|   values: function values() { | 
|     return new URLSearchParamsIterator(this, 'values'); | 
|   }, | 
|   // `URLSearchParams.prototype.entries` method | 
|   entries: function entries() { | 
|     return new URLSearchParamsIterator(this, 'entries'); | 
|   } | 
| }, { enumerable: true }); | 
|   | 
| // `URLSearchParams.prototype[@@iterator]` method | 
| defineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' }); | 
|   | 
| // `URLSearchParams.prototype.toString` method | 
| // https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior | 
| defineBuiltIn(URLSearchParamsPrototype, 'toString', function toString() { | 
|   return getInternalParamsState(this).serialize(); | 
| }, { enumerable: true }); | 
|   | 
| // `URLSearchParams.prototype.size` getter | 
| // https://github.com/whatwg/url/pull/734 | 
| if (DESCRIPTORS) defineBuiltInAccessor(URLSearchParamsPrototype, 'size', { | 
|   get: function size() { | 
|     return getInternalParamsState(this).entries.length; | 
|   }, | 
|   configurable: true, | 
|   enumerable: true | 
| }); | 
|   | 
| setToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS); | 
|   | 
| $({ global: true, constructor: true, forced: !USE_NATIVE_URL }, { | 
|   URLSearchParams: URLSearchParamsConstructor | 
| }); | 
|   | 
| // Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams` | 
| if (!USE_NATIVE_URL && isCallable(Headers)) { | 
|   var headersHas = uncurryThis(HeadersPrototype.has); | 
|   var headersSet = uncurryThis(HeadersPrototype.set); | 
|   | 
|   var wrapRequestOptions = function (init) { | 
|     if (isObject(init)) { | 
|       var body = init.body; | 
|       var headers; | 
|       if (classof(body) === URL_SEARCH_PARAMS) { | 
|         headers = init.headers ? new Headers(init.headers) : new Headers(); | 
|         if (!headersHas(headers, 'content-type')) { | 
|           headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8'); | 
|         } | 
|         return create(init, { | 
|           body: createPropertyDescriptor(0, $toString(body)), | 
|           headers: createPropertyDescriptor(0, headers) | 
|         }); | 
|       } | 
|     } return init; | 
|   }; | 
|   | 
|   if (isCallable(nativeFetch)) { | 
|     $({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, { | 
|       fetch: function fetch(input /* , init */) { | 
|         return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {}); | 
|       } | 
|     }); | 
|   } | 
|   | 
|   if (isCallable(NativeRequest)) { | 
|     var RequestConstructor = function Request(input /* , init */) { | 
|       anInstance(this, RequestPrototype); | 
|       return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {}); | 
|     }; | 
|   | 
|     RequestPrototype.constructor = RequestConstructor; | 
|     RequestConstructor.prototype = RequestPrototype; | 
|   | 
|     $({ global: true, constructor: true, dontCallGetSet: true, forced: true }, { | 
|       Request: RequestConstructor | 
|     }); | 
|   } | 
| } | 
|   | 
| module.exports = { | 
|   URLSearchParams: URLSearchParamsConstructor, | 
|   getState: getInternalParamsState | 
| }; |