{"version":3,"file":"static/js/main.cfdf2812.js","mappings":"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","sources":["../node_modules/attr-accept/dist/es/index.js","../node_modules/aws-sdk/clients/acm.js","../node_modules/aws-sdk/clients/amp.js","../node_modules/aws-sdk/clients/apigateway.js","../node_modules/aws-sdk/clients/applicationautoscaling.js","../node_modules/aws-sdk/clients/athena.js","../node_modules/aws-sdk/clients/autoscaling.js","../node_modules/aws-sdk/clients/browser_default.js","../node_modules/aws-sdk/clients/cloudformation.js","../node_modules/aws-sdk/clients/cloudfront.js","../node_modules/aws-sdk/clients/cloudhsm.js","../node_modules/aws-sdk/clients/cloudhsmv2.js","../node_modules/aws-sdk/clients/cloudtrail.js","../node_modules/aws-sdk/clients/cloudwatch.js","../node_modules/aws-sdk/clients/cloudwatchevents.js","../node_modules/aws-sdk/clients/cloudwatchlogs.js","../node_modules/aws-sdk/clients/codebuild.js","../node_modules/aws-sdk/clients/codecommit.js","../node_modules/aws-sdk/clients/codedeploy.js","../node_modules/aws-sdk/clients/codepipeline.js","../node_modules/aws-sdk/clients/cognitoidentity.js","../node_modules/aws-sdk/clients/cognitoidentityserviceprovider.js","../node_modules/aws-sdk/clients/cognitosync.js","../node_modules/aws-sdk/clients/comprehend.js","../node_modules/aws-sdk/clients/comprehendmedical.js","../node_modules/aws-sdk/clients/configservice.js","../node_modules/aws-sdk/clients/connect.js","../node_modules/aws-sdk/clients/costexplorer.js","../node_modules/aws-sdk/clients/cur.js","../node_modules/aws-sdk/clients/devicefarm.js","../node_modules/aws-sdk/clients/directconnect.js","../node_modules/aws-sdk/clients/dynamodb.js","../node_modules/aws-sdk/clients/dynamodbstreams.js","../node_modules/aws-sdk/clients/ec2.js","../node_modules/aws-sdk/clients/ecr.js","../node_modules/aws-sdk/clients/ecs.js","../node_modules/aws-sdk/clients/efs.js","../node_modules/aws-sdk/clients/elasticache.js","../node_modules/aws-sdk/clients/elasticbeanstalk.js","../node_modules/aws-sdk/clients/elastictranscoder.js","../node_modules/aws-sdk/clients/elb.js","../node_modules/aws-sdk/clients/elbv2.js","../node_modules/aws-sdk/clients/emr.js","../node_modules/aws-sdk/clients/firehose.js","../node_modules/aws-sdk/clients/forecastqueryservice.js","../node_modules/aws-sdk/clients/forecastservice.js","../node_modules/aws-sdk/clients/gamelift.js","../node_modules/aws-sdk/clients/iam.js","../node_modules/aws-sdk/clients/inspector.js","../node_modules/aws-sdk/clients/iot.js","../node_modules/aws-sdk/clients/iotanalytics.js","../node_modules/aws-sdk/clients/iotdata.js","../node_modules/aws-sdk/clients/kinesis.js","../node_modules/aws-sdk/clients/kinesisvideo.js","../node_modules/aws-sdk/clients/kinesisvideoarchivedmedia.js","../node_modules/aws-sdk/clients/kinesisvideomedia.js","../node_modules/aws-sdk/clients/kinesisvideosignalingchannels.js","../node_modules/aws-sdk/clients/kms.js","../node_modules/aws-sdk/clients/lambda.js","../node_modules/aws-sdk/clients/lexmodelbuildingservice.js","../node_modules/aws-sdk/clients/lexruntime.js","../node_modules/aws-sdk/clients/lexruntimev2.js","../node_modules/aws-sdk/clients/location.js","../node_modules/aws-sdk/clients/machinelearning.js","../node_modules/aws-sdk/clients/marketplacecatalog.js","../node_modules/aws-sdk/clients/marketplacecommerceanalytics.js","../node_modules/aws-sdk/clients/mediastoredata.js","../node_modules/aws-sdk/clients/mobileanalytics.js","../node_modules/aws-sdk/clients/mturk.js","../node_modules/aws-sdk/clients/opsworks.js","../node_modules/aws-sdk/clients/personalize.js","../node_modules/aws-sdk/clients/personalizeevents.js","../node_modules/aws-sdk/clients/personalizeruntime.js","../node_modules/aws-sdk/clients/polly.js","../node_modules/aws-sdk/clients/pricing.js","../node_modules/aws-sdk/clients/rds.js","../node_modules/aws-sdk/clients/redshift.js","../node_modules/aws-sdk/clients/rekognition.js","../node_modules/aws-sdk/clients/resourcegroups.js","../node_modules/aws-sdk/clients/route53.js","../node_modules/aws-sdk/clients/route53domains.js","../node_modules/aws-sdk/clients/s3.js","../node_modules/aws-sdk/clients/secretsmanager.js","../node_modules/aws-sdk/clients/servicecatalog.js","../node_modules/aws-sdk/clients/ses.js","../node_modules/aws-sdk/clients/sns.js","../node_modules/aws-sdk/clients/sqs.js","../node_modules/aws-sdk/clients/ssm.js","../node_modules/aws-sdk/clients/storagegateway.js","../node_modules/aws-sdk/clients/sts.js","../node_modules/aws-sdk/clients/translate.js","../node_modules/aws-sdk/clients/waf.js","../node_modules/aws-sdk/clients/workdocs.js","../node_modules/aws-sdk/clients/xray.js","../node_modules/aws-sdk/lib/api_loader.js","../node_modules/aws-sdk/lib/browser.js","../node_modules/aws-sdk/lib/browserCryptoLib.js","../node_modules/aws-sdk/lib/browserHashUtils.js","../node_modules/aws-sdk/lib/browserHmac.js","../node_modules/aws-sdk/lib/browserMd5.js","../node_modules/aws-sdk/lib/browserSha1.js","../node_modules/aws-sdk/lib/browserSha256.js","../node_modules/aws-sdk/lib/browser_loader.js","../node_modules/aws-sdk/lib/cloudfront/signer.js","../node_modules/aws-sdk/lib/config.js","../node_modules/aws-sdk/lib/config_regional_endpoint.js","../node_modules/aws-sdk/lib/core.js","../node_modules/aws-sdk/lib/credentials.js","../node_modules/aws-sdk/lib/credentials/chainable_temporary_credentials.js","../node_modules/aws-sdk/lib/credentials/cognito_identity_credentials.js","../node_modules/aws-sdk/lib/credentials/credential_provider_chain.js","../node_modules/aws-sdk/lib/credentials/saml_credentials.js","../node_modules/aws-sdk/lib/credentials/temporary_credentials.js","../node_modules/aws-sdk/lib/credentials/web_identity_credentials.js","../node_modules/aws-sdk/lib/discover_endpoint.js","../node_modules/aws-sdk/lib/dynamodb/converter.js","../node_modules/aws-sdk/lib/dynamodb/document_client.js","../node_modules/aws-sdk/lib/dynamodb/numberValue.js","../node_modules/aws-sdk/lib/dynamodb/set.js","../node_modules/aws-sdk/lib/dynamodb/translator.js","../node_modules/aws-sdk/lib/dynamodb/types.js","../node_modules/aws-sdk/lib/event-stream/buffered-create-event-stream.js","../node_modules/aws-sdk/lib/event-stream/event-message-chunker.js","../node_modules/aws-sdk/lib/event-stream/int64.js","../node_modules/aws-sdk/lib/event-stream/parse-event.js","../node_modules/aws-sdk/lib/event-stream/parse-message.js","../node_modules/aws-sdk/lib/event-stream/split-message.js","../node_modules/aws-sdk/lib/event_listeners.js","../node_modules/aws-sdk/lib/http.js","../node_modules/aws-sdk/lib/http/xhr.js","../node_modules/aws-sdk/lib/json/builder.js","../node_modules/aws-sdk/lib/json/parser.js","../node_modules/aws-sdk/lib/maintenance_mode_message.js","../node_modules/aws-sdk/lib/model/api.js","../node_modules/aws-sdk/lib/model/collection.js","../node_modules/aws-sdk/lib/model/operation.js","../node_modules/aws-sdk/lib/model/paginator.js","../node_modules/aws-sdk/lib/model/resource_waiter.js","../node_modules/aws-sdk/lib/model/shape.js","../node_modules/aws-sdk/lib/param_validator.js","../node_modules/aws-sdk/lib/polly/presigner.js","../node_modules/aws-sdk/lib/protocol/helpers.js","../node_modules/aws-sdk/lib/protocol/json.js","../node_modules/aws-sdk/lib/protocol/query.js","../node_modules/aws-sdk/lib/protocol/rest.js","../node_modules/aws-sdk/lib/protocol/rest_json.js","../node_modules/aws-sdk/lib/protocol/rest_xml.js","../node_modules/aws-sdk/lib/query/query_param_serializer.js","../node_modules/aws-sdk/lib/rds/signer.js","../node_modules/aws-sdk/lib/realclock/browserClock.js","../node_modules/aws-sdk/lib/region/utils.js","../node_modules/aws-sdk/lib/region_config.js","../node_modules/aws-sdk/lib/request.js","../node_modules/aws-sdk/lib/resource_waiter.js","../node_modules/aws-sdk/lib/response.js","../node_modules/aws-sdk/lib/s3/managed_upload.js","../node_modules/aws-sdk/lib/sequential_executor.js","../node_modules/aws-sdk/lib/service.js","../node_modules/aws-sdk/lib/services/apigateway.js","../node_modules/aws-sdk/lib/services/cloudfront.js","../node_modules/aws-sdk/lib/services/dynamodb.js","../node_modules/aws-sdk/lib/services/ec2.js","../node_modules/aws-sdk/lib/services/iotdata.js","../node_modules/aws-sdk/lib/services/lambda.js","../node_modules/aws-sdk/lib/services/machinelearning.js","../node_modules/aws-sdk/lib/services/polly.js","../node_modules/aws-sdk/lib/services/rds.js","../node_modules/aws-sdk/lib/services/rdsutil.js","../node_modules/aws-sdk/lib/services/route53.js","../node_modules/aws-sdk/lib/services/s3.js","../node_modules/aws-sdk/lib/services/s3util.js","../node_modules/aws-sdk/lib/services/sqs.js","../node_modules/aws-sdk/lib/services/sts.js","../node_modules/aws-sdk/lib/signers/bearer.js","../node_modules/aws-sdk/lib/signers/presign.js","../node_modules/aws-sdk/lib/signers/request_signer.js","../node_modules/aws-sdk/lib/signers/s3.js","../node_modules/aws-sdk/lib/signers/v2.js","../node_modules/aws-sdk/lib/signers/v3.js","../node_modules/aws-sdk/lib/signers/v3https.js","../node_modules/aws-sdk/lib/signers/v4.js","../node_modules/aws-sdk/lib/signers/v4_credentials.js","../node_modules/aws-sdk/lib/state_machine.js","../node_modules/aws-sdk/lib/util.js","../node_modules/aws-sdk/lib/xml/browser_parser.js","../node_modules/aws-sdk/lib/xml/builder.js","../node_modules/aws-sdk/lib/xml/escape-attribute.js","../node_modules/aws-sdk/lib/xml/escape-element.js","../node_modules/aws-sdk/lib/xml/xml-node.js","../node_modules/aws-sdk/lib/xml/xml-text.js","../node_modules/aws-sdk/node_modules/events/events.js","../node_modules/aws-sdk/node_modules/uuid/dist/bytesToUuid.js","../node_modules/aws-sdk/node_modules/uuid/dist/index.js","../node_modules/aws-sdk/node_modules/uuid/dist/md5-browser.js","../node_modules/aws-sdk/node_modules/uuid/dist/rng-browser.js","../node_modules/aws-sdk/node_modules/uuid/dist/sha1-browser.js","../node_modules/aws-sdk/node_modules/uuid/dist/v1.js","../node_modules/aws-sdk/node_modules/uuid/dist/v3.js","../node_modules/aws-sdk/node_modules/uuid/dist/v35.js","../node_modules/aws-sdk/node_modules/uuid/dist/v4.js","../node_modules/aws-sdk/node_modules/uuid/dist/v5.js","../node_modules/aws-sdk/vendor/endpoint-cache/index.js","../node_modules/aws-sdk/vendor/endpoint-cache/utils/LRU.js","../node_modules/base64-js/index.js","../node_modules/buffer/index.js","../node_modules/buffer/node_modules/isarray/index.js","../node_modules/call-bind/callBound.js","../node_modules/call-bind/index.js","../node_modules/define-data-property/index.js","../node_modules/es-define-property/index.js","../node_modules/es-errors/eval.js","../node_modules/es-errors/index.js","../node_modules/es-errors/range.js","../node_modules/es-errors/ref.js","../node_modules/es-errors/syntax.js","../node_modules/es-errors/type.js","../node_modules/es-errors/uri.js","../node_modules/for-each/index.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/get-intrinsic/index.js","../node_modules/gopd/index.js","../node_modules/has-property-descriptors/index.js","../node_modules/has-proto/index.js","../node_modules/has-symbols/index.js","../node_modules/has-symbols/shams.js","../node_modules/has-tostringtag/shams.js","../node_modules/hasown/index.js","../node_modules/ieee754/index.js","../node_modules/inherits/inherits_browser.js","../node_modules/is-arguments/index.js","../node_modules/is-callable/index.js","../node_modules/is-generator-function/index.js","../node_modules/is-typed-array/index.js","../node_modules/jmespath/jmespath.js","../node_modules/possible-typed-array-names/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/querystring/decode.js","../node_modules/querystring/encode.js","../node_modules/querystring/index.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/set-function-length/index.js","../node_modules/url/node_modules/punycode/punycode.js","../node_modules/url/url.js","../node_modules/util/support/isBufferBrowser.js","../node_modules/util/support/types.js","../node_modules/util/util.js","../node_modules/warning/warning.js","../node_modules/which-typed-array/index.js","../node_modules/available-typed-arrays/index.js","../node_modules/classnames/index.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","components/TermsOfServiceFooter.js","../node_modules/tslib/tslib.es6.mjs","../node_modules/file-selector/src/file.ts","../node_modules/file-selector/src/file-selector.ts","../node_modules/react-dropzone/dist/es/utils/index.js","../node_modules/react-dropzone/dist/es/index.js","components/UploadFiles.js","../node_modules/react-icons/lib/iconsManifest.mjs","../node_modules/react-icons/lib/iconContext.mjs","../node_modules/react-icons/lib/iconBase.mjs","../node_modules/react-icons/bs/index.mjs","../node_modules/@restart/ui/esm/Button.js","../node_modules/react-bootstrap/esm/ThemeProvider.js","../node_modules/react-bootstrap/esm/Button.js","../node_modules/@restart/hooks/esm/useWillUnmount.js","../node_modules/@restart/hooks/esm/useUpdatedRef.js","../node_modules/@restart/hooks/esm/useTimeout.js","../node_modules/@restart/hooks/esm/useMounted.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/dom-helpers/esm/ownerWindow.js","../node_modules/dom-helpers/esm/ownerDocument.js","../node_modules/dom-helpers/esm/hyphenate.js","../node_modules/dom-helpers/esm/hyphenateStyle.js","../node_modules/dom-helpers/esm/isTransform.js","../node_modules/dom-helpers/esm/css.js","../node_modules/dom-helpers/esm/getComputedStyle.js","../node_modules/dom-helpers/esm/canUseDOM.js","../node_modules/dom-helpers/esm/addEventListener.js","../node_modules/dom-helpers/esm/removeEventListener.js","../node_modules/dom-helpers/esm/listen.js","../node_modules/dom-helpers/esm/transitionEnd.js","../node_modules/dom-helpers/esm/triggerEvent.js","../node_modules/react-bootstrap/esm/transitionEndListener.js","../node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/react-bootstrap/esm/TransitionWrapper.js","../node_modules/react-bootstrap/esm/safeFindDOMNode.js","../node_modules/react-bootstrap/esm/Fade.js","../node_modules/react-bootstrap/esm/triggerBrowserReflow.js","../node_modules/react-bootstrap/esm/ToastFade.js","../node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/react-bootstrap/esm/CloseButton.js","../node_modules/react-bootstrap/esm/ToastContext.js","../node_modules/react-bootstrap/esm/ToastHeader.js","../node_modules/@restart/hooks/esm/useEventCallback.js","../node_modules/react-bootstrap/esm/ToastBody.js","../node_modules/react-bootstrap/esm/Toast.js","../node_modules/react-bootstrap/esm/ToastContainer.js","../node_modules/react-bootstrap/esm/Row.js","components/VideoPlayer.js","../node_modules/react-bootstrap/esm/Col.js","../node_modules/react-icons/fa6/index.mjs","components/RecommendationsRow.js","../node_modules/react-bootstrap/esm/Feedback.js","../node_modules/react-bootstrap/esm/FormContext.js","../node_modules/react-bootstrap/esm/FormCheckInput.js","../node_modules/react-bootstrap/esm/FormCheckLabel.js","../node_modules/react-bootstrap/esm/FormCheck.js","../node_modules/react-bootstrap/esm/ElementChildren.js","../node_modules/react-bootstrap/esm/FormControl.js","../node_modules/react-bootstrap/esm/FormFloating.js","../node_modules/react-bootstrap/esm/FormGroup.js","../node_modules/react-bootstrap/esm/FormLabel.js","../node_modules/react-bootstrap/esm/FormRange.js","../node_modules/react-bootstrap/esm/FormSelect.js","../node_modules/react-bootstrap/esm/FormText.js","../node_modules/react-bootstrap/esm/Switch.js","../node_modules/react-bootstrap/esm/FloatingLabel.js","../node_modules/react-bootstrap/esm/Form.js","components/Recommendations.js","components/MainWebSite.js","App.js","reportWebVitals.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/regex.js","../node_modules/uuid/dist/esm-browser/validate.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/v4.js","index.js","services/LoggingService.js"],"sourcesContent":["\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (file, acceptedFiles) {\n if (file && acceptedFiles) {\n var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n var fileName = file.name || '';\n var mimeType = (file.type || '').toLowerCase();\n var baseMimeType = mimeType.replace(/\\/.*$/, '');\n return acceptedFilesArray.some(function (type) {\n var validType = type.trim().toLowerCase();\n\n if (validType.charAt(0) === '.') {\n return fileName.toLowerCase().endsWith(validType);\n } else if (validType.endsWith('/*')) {\n // This is something like a image/* mime type\n return baseMimeType === validType.replace(/\\/.*$/, '');\n }\n\n return mimeType === validType;\n });\n }\n\n return true;\n};","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['acm'] = {};\nAWS.ACM = Service.defineService('acm', ['2015-12-08']);\nObject.defineProperty(apiLoader.services['acm'], '2015-12-08', {\n get: function get() {\n var model = require('../apis/acm-2015-12-08.min.json');\n model.paginators = require('../apis/acm-2015-12-08.paginators.json').pagination;\n model.waiters = require('../apis/acm-2015-12-08.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ACM;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['amp'] = {};\nAWS.Amp = Service.defineService('amp', ['2020-08-01']);\nObject.defineProperty(apiLoader.services['amp'], '2020-08-01', {\n get: function get() {\n var model = require('../apis/amp-2020-08-01.min.json');\n model.paginators = require('../apis/amp-2020-08-01.paginators.json').pagination;\n model.waiters = require('../apis/amp-2020-08-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Amp;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['apigateway'] = {};\nAWS.APIGateway = Service.defineService('apigateway', ['2015-07-09']);\nrequire('../lib/services/apigateway');\nObject.defineProperty(apiLoader.services['apigateway'], '2015-07-09', {\n get: function get() {\n var model = require('../apis/apigateway-2015-07-09.min.json');\n model.paginators = require('../apis/apigateway-2015-07-09.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.APIGateway;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['applicationautoscaling'] = {};\nAWS.ApplicationAutoScaling = Service.defineService('applicationautoscaling', ['2016-02-06']);\nObject.defineProperty(apiLoader.services['applicationautoscaling'], '2016-02-06', {\n get: function get() {\n var model = require('../apis/application-autoscaling-2016-02-06.min.json');\n model.paginators = require('../apis/application-autoscaling-2016-02-06.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ApplicationAutoScaling;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['athena'] = {};\nAWS.Athena = Service.defineService('athena', ['2017-05-18']);\nObject.defineProperty(apiLoader.services['athena'], '2017-05-18', {\n get: function get() {\n var model = require('../apis/athena-2017-05-18.min.json');\n model.paginators = require('../apis/athena-2017-05-18.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Athena;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['autoscaling'] = {};\nAWS.AutoScaling = Service.defineService('autoscaling', ['2011-01-01']);\nObject.defineProperty(apiLoader.services['autoscaling'], '2011-01-01', {\n get: function get() {\n var model = require('../apis/autoscaling-2011-01-01.min.json');\n model.paginators = require('../apis/autoscaling-2011-01-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.AutoScaling;\n","require('../lib/node_loader');\nmodule.exports = {\n ACM: require('./acm'),\n APIGateway: require('./apigateway'),\n ApplicationAutoScaling: require('./applicationautoscaling'),\n AutoScaling: require('./autoscaling'),\n CloudFormation: require('./cloudformation'),\n CloudFront: require('./cloudfront'),\n CloudHSM: require('./cloudhsm'),\n CloudTrail: require('./cloudtrail'),\n CloudWatch: require('./cloudwatch'),\n CloudWatchEvents: require('./cloudwatchevents'),\n CloudWatchLogs: require('./cloudwatchlogs'),\n CodeBuild: require('./codebuild'),\n CodeCommit: require('./codecommit'),\n CodeDeploy: require('./codedeploy'),\n CodePipeline: require('./codepipeline'),\n CognitoIdentity: require('./cognitoidentity'),\n CognitoIdentityServiceProvider: require('./cognitoidentityserviceprovider'),\n CognitoSync: require('./cognitosync'),\n ConfigService: require('./configservice'),\n CUR: require('./cur'),\n DeviceFarm: require('./devicefarm'),\n DirectConnect: require('./directconnect'),\n DynamoDB: require('./dynamodb'),\n DynamoDBStreams: require('./dynamodbstreams'),\n EC2: require('./ec2'),\n ECR: require('./ecr'),\n ECS: require('./ecs'),\n EFS: require('./efs'),\n ElastiCache: require('./elasticache'),\n ElasticBeanstalk: require('./elasticbeanstalk'),\n ELB: require('./elb'),\n ELBv2: require('./elbv2'),\n EMR: require('./emr'),\n ElasticTranscoder: require('./elastictranscoder'),\n Firehose: require('./firehose'),\n GameLift: require('./gamelift'),\n IAM: require('./iam'),\n Inspector: require('./inspector'),\n Iot: require('./iot'),\n IotData: require('./iotdata'),\n Kinesis: require('./kinesis'),\n KMS: require('./kms'),\n Lambda: require('./lambda'),\n LexRuntime: require('./lexruntime'),\n MachineLearning: require('./machinelearning'),\n MarketplaceCommerceAnalytics: require('./marketplacecommerceanalytics'),\n MTurk: require('./mturk'),\n MobileAnalytics: require('./mobileanalytics'),\n OpsWorks: require('./opsworks'),\n Polly: require('./polly'),\n RDS: require('./rds'),\n Redshift: require('./redshift'),\n Rekognition: require('./rekognition'),\n Route53: require('./route53'),\n Route53Domains: require('./route53domains'),\n S3: require('./s3'),\n ServiceCatalog: require('./servicecatalog'),\n SES: require('./ses'),\n SNS: require('./sns'),\n SQS: require('./sqs'),\n SSM: require('./ssm'),\n StorageGateway: require('./storagegateway'),\n STS: require('./sts'),\n XRay: require('./xray'),\n WAF: require('./waf'),\n WorkDocs: require('./workdocs'),\n LexModelBuildingService: require('./lexmodelbuildingservice'),\n Athena: require('./athena'),\n CloudHSMV2: require('./cloudhsmv2'),\n Pricing: require('./pricing'),\n CostExplorer: require('./costexplorer'),\n MediaStoreData: require('./mediastoredata'),\n Comprehend: require('./comprehend'),\n KinesisVideoArchivedMedia: require('./kinesisvideoarchivedmedia'),\n KinesisVideoMedia: require('./kinesisvideomedia'),\n KinesisVideo: require('./kinesisvideo'),\n Translate: require('./translate'),\n ResourceGroups: require('./resourcegroups'),\n Connect: require('./connect'),\n SecretsManager: require('./secretsmanager'),\n IoTAnalytics: require('./iotanalytics'),\n ComprehendMedical: require('./comprehendmedical'),\n Personalize: require('./personalize'),\n PersonalizeEvents: require('./personalizeevents'),\n PersonalizeRuntime: require('./personalizeruntime'),\n ForecastService: require('./forecastservice'),\n ForecastQueryService: require('./forecastqueryservice'),\n MarketplaceCatalog: require('./marketplacecatalog'),\n KinesisVideoSignalingChannels: require('./kinesisvideosignalingchannels'),\n Amp: require('./amp'),\n Location: require('./location'),\n LexRuntimeV2: require('./lexruntimev2')\n};","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudformation'] = {};\nAWS.CloudFormation = Service.defineService('cloudformation', ['2010-05-15']);\nObject.defineProperty(apiLoader.services['cloudformation'], '2010-05-15', {\n get: function get() {\n var model = require('../apis/cloudformation-2010-05-15.min.json');\n model.paginators = require('../apis/cloudformation-2010-05-15.paginators.json').pagination;\n model.waiters = require('../apis/cloudformation-2010-05-15.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudFormation;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudfront'] = {};\nAWS.CloudFront = Service.defineService('cloudfront', ['2013-05-12*', '2013-11-11*', '2014-05-31*', '2014-10-21*', '2014-11-06*', '2015-04-17*', '2015-07-27*', '2015-09-17*', '2016-01-13*', '2016-01-28*', '2016-08-01*', '2016-08-20*', '2016-09-07*', '2016-09-29*', '2016-11-25', '2016-11-25*', '2017-03-25', '2017-03-25*', '2017-10-30', '2017-10-30*', '2018-06-18', '2018-06-18*', '2018-11-05', '2018-11-05*', '2019-03-26', '2019-03-26*', '2020-05-31']);\nrequire('../lib/services/cloudfront');\nObject.defineProperty(apiLoader.services['cloudfront'], '2016-11-25', {\n get: function get() {\n var model = require('../apis/cloudfront-2016-11-25.min.json');\n model.paginators = require('../apis/cloudfront-2016-11-25.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2016-11-25.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2017-03-25', {\n get: function get() {\n var model = require('../apis/cloudfront-2017-03-25.min.json');\n model.paginators = require('../apis/cloudfront-2017-03-25.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2017-03-25.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2017-10-30', {\n get: function get() {\n var model = require('../apis/cloudfront-2017-10-30.min.json');\n model.paginators = require('../apis/cloudfront-2017-10-30.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2017-10-30.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2018-06-18', {\n get: function get() {\n var model = require('../apis/cloudfront-2018-06-18.min.json');\n model.paginators = require('../apis/cloudfront-2018-06-18.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2018-06-18.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2018-11-05', {\n get: function get() {\n var model = require('../apis/cloudfront-2018-11-05.min.json');\n model.paginators = require('../apis/cloudfront-2018-11-05.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2018-11-05.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2019-03-26', {\n get: function get() {\n var model = require('../apis/cloudfront-2019-03-26.min.json');\n model.paginators = require('../apis/cloudfront-2019-03-26.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2019-03-26.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2020-05-31', {\n get: function get() {\n var model = require('../apis/cloudfront-2020-05-31.min.json');\n model.paginators = require('../apis/cloudfront-2020-05-31.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2020-05-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudFront;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudhsm'] = {};\nAWS.CloudHSM = Service.defineService('cloudhsm', ['2014-05-30']);\nObject.defineProperty(apiLoader.services['cloudhsm'], '2014-05-30', {\n get: function get() {\n var model = require('../apis/cloudhsm-2014-05-30.min.json');\n model.paginators = require('../apis/cloudhsm-2014-05-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudHSM;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudhsmv2'] = {};\nAWS.CloudHSMV2 = Service.defineService('cloudhsmv2', ['2017-04-28']);\nObject.defineProperty(apiLoader.services['cloudhsmv2'], '2017-04-28', {\n get: function get() {\n var model = require('../apis/cloudhsmv2-2017-04-28.min.json');\n model.paginators = require('../apis/cloudhsmv2-2017-04-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudHSMV2;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudtrail'] = {};\nAWS.CloudTrail = Service.defineService('cloudtrail', ['2013-11-01']);\nObject.defineProperty(apiLoader.services['cloudtrail'], '2013-11-01', {\n get: function get() {\n var model = require('../apis/cloudtrail-2013-11-01.min.json');\n model.paginators = require('../apis/cloudtrail-2013-11-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudTrail;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudwatch'] = {};\nAWS.CloudWatch = Service.defineService('cloudwatch', ['2010-08-01']);\nObject.defineProperty(apiLoader.services['cloudwatch'], '2010-08-01', {\n get: function get() {\n var model = require('../apis/monitoring-2010-08-01.min.json');\n model.paginators = require('../apis/monitoring-2010-08-01.paginators.json').pagination;\n model.waiters = require('../apis/monitoring-2010-08-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudWatch;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudwatchevents'] = {};\nAWS.CloudWatchEvents = Service.defineService('cloudwatchevents', ['2014-02-03*', '2015-10-07']);\nObject.defineProperty(apiLoader.services['cloudwatchevents'], '2015-10-07', {\n get: function get() {\n var model = require('../apis/events-2015-10-07.min.json');\n model.paginators = require('../apis/events-2015-10-07.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudWatchEvents;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudwatchlogs'] = {};\nAWS.CloudWatchLogs = Service.defineService('cloudwatchlogs', ['2014-03-28']);\nObject.defineProperty(apiLoader.services['cloudwatchlogs'], '2014-03-28', {\n get: function get() {\n var model = require('../apis/logs-2014-03-28.min.json');\n model.paginators = require('../apis/logs-2014-03-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudWatchLogs;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codebuild'] = {};\nAWS.CodeBuild = Service.defineService('codebuild', ['2016-10-06']);\nObject.defineProperty(apiLoader.services['codebuild'], '2016-10-06', {\n get: function get() {\n var model = require('../apis/codebuild-2016-10-06.min.json');\n model.paginators = require('../apis/codebuild-2016-10-06.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodeBuild;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codecommit'] = {};\nAWS.CodeCommit = Service.defineService('codecommit', ['2015-04-13']);\nObject.defineProperty(apiLoader.services['codecommit'], '2015-04-13', {\n get: function get() {\n var model = require('../apis/codecommit-2015-04-13.min.json');\n model.paginators = require('../apis/codecommit-2015-04-13.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodeCommit;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codedeploy'] = {};\nAWS.CodeDeploy = Service.defineService('codedeploy', ['2014-10-06']);\nObject.defineProperty(apiLoader.services['codedeploy'], '2014-10-06', {\n get: function get() {\n var model = require('../apis/codedeploy-2014-10-06.min.json');\n model.paginators = require('../apis/codedeploy-2014-10-06.paginators.json').pagination;\n model.waiters = require('../apis/codedeploy-2014-10-06.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodeDeploy;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codepipeline'] = {};\nAWS.CodePipeline = Service.defineService('codepipeline', ['2015-07-09']);\nObject.defineProperty(apiLoader.services['codepipeline'], '2015-07-09', {\n get: function get() {\n var model = require('../apis/codepipeline-2015-07-09.min.json');\n model.paginators = require('../apis/codepipeline-2015-07-09.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodePipeline;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cognitoidentity'] = {};\nAWS.CognitoIdentity = Service.defineService('cognitoidentity', ['2014-06-30']);\nObject.defineProperty(apiLoader.services['cognitoidentity'], '2014-06-30', {\n get: function get() {\n var model = require('../apis/cognito-identity-2014-06-30.min.json');\n model.paginators = require('../apis/cognito-identity-2014-06-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CognitoIdentity;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cognitoidentityserviceprovider'] = {};\nAWS.CognitoIdentityServiceProvider = Service.defineService('cognitoidentityserviceprovider', ['2016-04-18']);\nObject.defineProperty(apiLoader.services['cognitoidentityserviceprovider'], '2016-04-18', {\n get: function get() {\n var model = require('../apis/cognito-idp-2016-04-18.min.json');\n model.paginators = require('../apis/cognito-idp-2016-04-18.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CognitoIdentityServiceProvider;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cognitosync'] = {};\nAWS.CognitoSync = Service.defineService('cognitosync', ['2014-06-30']);\nObject.defineProperty(apiLoader.services['cognitosync'], '2014-06-30', {\n get: function get() {\n var model = require('../apis/cognito-sync-2014-06-30.min.json');\n model.paginators = require('../apis/cognito-sync-2014-06-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CognitoSync;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['comprehend'] = {};\nAWS.Comprehend = Service.defineService('comprehend', ['2017-11-27']);\nObject.defineProperty(apiLoader.services['comprehend'], '2017-11-27', {\n get: function get() {\n var model = require('../apis/comprehend-2017-11-27.min.json');\n model.paginators = require('../apis/comprehend-2017-11-27.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Comprehend;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['comprehendmedical'] = {};\nAWS.ComprehendMedical = Service.defineService('comprehendmedical', ['2018-10-30']);\nObject.defineProperty(apiLoader.services['comprehendmedical'], '2018-10-30', {\n get: function get() {\n var model = require('../apis/comprehendmedical-2018-10-30.min.json');\n model.paginators = require('../apis/comprehendmedical-2018-10-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ComprehendMedical;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['configservice'] = {};\nAWS.ConfigService = Service.defineService('configservice', ['2014-11-12']);\nObject.defineProperty(apiLoader.services['configservice'], '2014-11-12', {\n get: function get() {\n var model = require('../apis/config-2014-11-12.min.json');\n model.paginators = require('../apis/config-2014-11-12.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ConfigService;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['connect'] = {};\nAWS.Connect = Service.defineService('connect', ['2017-08-08']);\nObject.defineProperty(apiLoader.services['connect'], '2017-08-08', {\n get: function get() {\n var model = require('../apis/connect-2017-08-08.min.json');\n model.paginators = require('../apis/connect-2017-08-08.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Connect;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['costexplorer'] = {};\nAWS.CostExplorer = Service.defineService('costexplorer', ['2017-10-25']);\nObject.defineProperty(apiLoader.services['costexplorer'], '2017-10-25', {\n get: function get() {\n var model = require('../apis/ce-2017-10-25.min.json');\n model.paginators = require('../apis/ce-2017-10-25.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CostExplorer;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cur'] = {};\nAWS.CUR = Service.defineService('cur', ['2017-01-06']);\nObject.defineProperty(apiLoader.services['cur'], '2017-01-06', {\n get: function get() {\n var model = require('../apis/cur-2017-01-06.min.json');\n model.paginators = require('../apis/cur-2017-01-06.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CUR;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['devicefarm'] = {};\nAWS.DeviceFarm = Service.defineService('devicefarm', ['2015-06-23']);\nObject.defineProperty(apiLoader.services['devicefarm'], '2015-06-23', {\n get: function get() {\n var model = require('../apis/devicefarm-2015-06-23.min.json');\n model.paginators = require('../apis/devicefarm-2015-06-23.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DeviceFarm;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['directconnect'] = {};\nAWS.DirectConnect = Service.defineService('directconnect', ['2012-10-25']);\nObject.defineProperty(apiLoader.services['directconnect'], '2012-10-25', {\n get: function get() {\n var model = require('../apis/directconnect-2012-10-25.min.json');\n model.paginators = require('../apis/directconnect-2012-10-25.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DirectConnect;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['dynamodb'] = {};\nAWS.DynamoDB = Service.defineService('dynamodb', ['2011-12-05', '2012-08-10']);\nrequire('../lib/services/dynamodb');\nObject.defineProperty(apiLoader.services['dynamodb'], '2011-12-05', {\n get: function get() {\n var model = require('../apis/dynamodb-2011-12-05.min.json');\n model.paginators = require('../apis/dynamodb-2011-12-05.paginators.json').pagination;\n model.waiters = require('../apis/dynamodb-2011-12-05.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['dynamodb'], '2012-08-10', {\n get: function get() {\n var model = require('../apis/dynamodb-2012-08-10.min.json');\n model.paginators = require('../apis/dynamodb-2012-08-10.paginators.json').pagination;\n model.waiters = require('../apis/dynamodb-2012-08-10.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DynamoDB;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['dynamodbstreams'] = {};\nAWS.DynamoDBStreams = Service.defineService('dynamodbstreams', ['2012-08-10']);\nObject.defineProperty(apiLoader.services['dynamodbstreams'], '2012-08-10', {\n get: function get() {\n var model = require('../apis/streams.dynamodb-2012-08-10.min.json');\n model.paginators = require('../apis/streams.dynamodb-2012-08-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DynamoDBStreams;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ec2'] = {};\nAWS.EC2 = Service.defineService('ec2', ['2013-06-15*', '2013-10-15*', '2014-02-01*', '2014-05-01*', '2014-06-15*', '2014-09-01*', '2014-10-01*', '2015-03-01*', '2015-04-15*', '2015-10-01*', '2016-04-01*', '2016-09-15*', '2016-11-15']);\nrequire('../lib/services/ec2');\nObject.defineProperty(apiLoader.services['ec2'], '2016-11-15', {\n get: function get() {\n var model = require('../apis/ec2-2016-11-15.min.json');\n model.paginators = require('../apis/ec2-2016-11-15.paginators.json').pagination;\n model.waiters = require('../apis/ec2-2016-11-15.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.EC2;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ecr'] = {};\nAWS.ECR = Service.defineService('ecr', ['2015-09-21']);\nObject.defineProperty(apiLoader.services['ecr'], '2015-09-21', {\n get: function get() {\n var model = require('../apis/ecr-2015-09-21.min.json');\n model.paginators = require('../apis/ecr-2015-09-21.paginators.json').pagination;\n model.waiters = require('../apis/ecr-2015-09-21.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ECR;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ecs'] = {};\nAWS.ECS = Service.defineService('ecs', ['2014-11-13']);\nObject.defineProperty(apiLoader.services['ecs'], '2014-11-13', {\n get: function get() {\n var model = require('../apis/ecs-2014-11-13.min.json');\n model.paginators = require('../apis/ecs-2014-11-13.paginators.json').pagination;\n model.waiters = require('../apis/ecs-2014-11-13.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ECS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['efs'] = {};\nAWS.EFS = Service.defineService('efs', ['2015-02-01']);\nObject.defineProperty(apiLoader.services['efs'], '2015-02-01', {\n get: function get() {\n var model = require('../apis/elasticfilesystem-2015-02-01.min.json');\n model.paginators = require('../apis/elasticfilesystem-2015-02-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.EFS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elasticache'] = {};\nAWS.ElastiCache = Service.defineService('elasticache', ['2012-11-15*', '2014-03-24*', '2014-07-15*', '2014-09-30*', '2015-02-02']);\nObject.defineProperty(apiLoader.services['elasticache'], '2015-02-02', {\n get: function get() {\n var model = require('../apis/elasticache-2015-02-02.min.json');\n model.paginators = require('../apis/elasticache-2015-02-02.paginators.json').pagination;\n model.waiters = require('../apis/elasticache-2015-02-02.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ElastiCache;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elasticbeanstalk'] = {};\nAWS.ElasticBeanstalk = Service.defineService('elasticbeanstalk', ['2010-12-01']);\nObject.defineProperty(apiLoader.services['elasticbeanstalk'], '2010-12-01', {\n get: function get() {\n var model = require('../apis/elasticbeanstalk-2010-12-01.min.json');\n model.paginators = require('../apis/elasticbeanstalk-2010-12-01.paginators.json').pagination;\n model.waiters = require('../apis/elasticbeanstalk-2010-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ElasticBeanstalk;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elastictranscoder'] = {};\nAWS.ElasticTranscoder = Service.defineService('elastictranscoder', ['2012-09-25']);\nObject.defineProperty(apiLoader.services['elastictranscoder'], '2012-09-25', {\n get: function get() {\n var model = require('../apis/elastictranscoder-2012-09-25.min.json');\n model.paginators = require('../apis/elastictranscoder-2012-09-25.paginators.json').pagination;\n model.waiters = require('../apis/elastictranscoder-2012-09-25.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ElasticTranscoder;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elb'] = {};\nAWS.ELB = Service.defineService('elb', ['2012-06-01']);\nObject.defineProperty(apiLoader.services['elb'], '2012-06-01', {\n get: function get() {\n var model = require('../apis/elasticloadbalancing-2012-06-01.min.json');\n model.paginators = require('../apis/elasticloadbalancing-2012-06-01.paginators.json').pagination;\n model.waiters = require('../apis/elasticloadbalancing-2012-06-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ELB;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elbv2'] = {};\nAWS.ELBv2 = Service.defineService('elbv2', ['2015-12-01']);\nObject.defineProperty(apiLoader.services['elbv2'], '2015-12-01', {\n get: function get() {\n var model = require('../apis/elasticloadbalancingv2-2015-12-01.min.json');\n model.paginators = require('../apis/elasticloadbalancingv2-2015-12-01.paginators.json').pagination;\n model.waiters = require('../apis/elasticloadbalancingv2-2015-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ELBv2;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['emr'] = {};\nAWS.EMR = Service.defineService('emr', ['2009-03-31']);\nObject.defineProperty(apiLoader.services['emr'], '2009-03-31', {\n get: function get() {\n var model = require('../apis/elasticmapreduce-2009-03-31.min.json');\n model.paginators = require('../apis/elasticmapreduce-2009-03-31.paginators.json').pagination;\n model.waiters = require('../apis/elasticmapreduce-2009-03-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.EMR;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['firehose'] = {};\nAWS.Firehose = Service.defineService('firehose', ['2015-08-04']);\nObject.defineProperty(apiLoader.services['firehose'], '2015-08-04', {\n get: function get() {\n var model = require('../apis/firehose-2015-08-04.min.json');\n model.paginators = require('../apis/firehose-2015-08-04.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Firehose;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['forecastqueryservice'] = {};\nAWS.ForecastQueryService = Service.defineService('forecastqueryservice', ['2018-06-26']);\nObject.defineProperty(apiLoader.services['forecastqueryservice'], '2018-06-26', {\n get: function get() {\n var model = require('../apis/forecastquery-2018-06-26.min.json');\n model.paginators = require('../apis/forecastquery-2018-06-26.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ForecastQueryService;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['forecastservice'] = {};\nAWS.ForecastService = Service.defineService('forecastservice', ['2018-06-26']);\nObject.defineProperty(apiLoader.services['forecastservice'], '2018-06-26', {\n get: function get() {\n var model = require('../apis/forecast-2018-06-26.min.json');\n model.paginators = require('../apis/forecast-2018-06-26.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ForecastService;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['gamelift'] = {};\nAWS.GameLift = Service.defineService('gamelift', ['2015-10-01']);\nObject.defineProperty(apiLoader.services['gamelift'], '2015-10-01', {\n get: function get() {\n var model = require('../apis/gamelift-2015-10-01.min.json');\n model.paginators = require('../apis/gamelift-2015-10-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.GameLift;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iam'] = {};\nAWS.IAM = Service.defineService('iam', ['2010-05-08']);\nObject.defineProperty(apiLoader.services['iam'], '2010-05-08', {\n get: function get() {\n var model = require('../apis/iam-2010-05-08.min.json');\n model.paginators = require('../apis/iam-2010-05-08.paginators.json').pagination;\n model.waiters = require('../apis/iam-2010-05-08.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.IAM;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['inspector'] = {};\nAWS.Inspector = Service.defineService('inspector', ['2015-08-18*', '2016-02-16']);\nObject.defineProperty(apiLoader.services['inspector'], '2016-02-16', {\n get: function get() {\n var model = require('../apis/inspector-2016-02-16.min.json');\n model.paginators = require('../apis/inspector-2016-02-16.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Inspector;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iot'] = {};\nAWS.Iot = Service.defineService('iot', ['2015-05-28']);\nObject.defineProperty(apiLoader.services['iot'], '2015-05-28', {\n get: function get() {\n var model = require('../apis/iot-2015-05-28.min.json');\n model.paginators = require('../apis/iot-2015-05-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Iot;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iotanalytics'] = {};\nAWS.IoTAnalytics = Service.defineService('iotanalytics', ['2017-11-27']);\nObject.defineProperty(apiLoader.services['iotanalytics'], '2017-11-27', {\n get: function get() {\n var model = require('../apis/iotanalytics-2017-11-27.min.json');\n model.paginators = require('../apis/iotanalytics-2017-11-27.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.IoTAnalytics;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iotdata'] = {};\nAWS.IotData = Service.defineService('iotdata', ['2015-05-28']);\nrequire('../lib/services/iotdata');\nObject.defineProperty(apiLoader.services['iotdata'], '2015-05-28', {\n get: function get() {\n var model = require('../apis/iot-data-2015-05-28.min.json');\n model.paginators = require('../apis/iot-data-2015-05-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.IotData;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesis'] = {};\nAWS.Kinesis = Service.defineService('kinesis', ['2013-12-02']);\nObject.defineProperty(apiLoader.services['kinesis'], '2013-12-02', {\n get: function get() {\n var model = require('../apis/kinesis-2013-12-02.min.json');\n model.paginators = require('../apis/kinesis-2013-12-02.paginators.json').pagination;\n model.waiters = require('../apis/kinesis-2013-12-02.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Kinesis;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideo'] = {};\nAWS.KinesisVideo = Service.defineService('kinesisvideo', ['2017-09-30']);\nObject.defineProperty(apiLoader.services['kinesisvideo'], '2017-09-30', {\n get: function get() {\n var model = require('../apis/kinesisvideo-2017-09-30.min.json');\n model.paginators = require('../apis/kinesisvideo-2017-09-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideo;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideoarchivedmedia'] = {};\nAWS.KinesisVideoArchivedMedia = Service.defineService('kinesisvideoarchivedmedia', ['2017-09-30']);\nObject.defineProperty(apiLoader.services['kinesisvideoarchivedmedia'], '2017-09-30', {\n get: function get() {\n var model = require('../apis/kinesis-video-archived-media-2017-09-30.min.json');\n model.paginators = require('../apis/kinesis-video-archived-media-2017-09-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideoArchivedMedia;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideomedia'] = {};\nAWS.KinesisVideoMedia = Service.defineService('kinesisvideomedia', ['2017-09-30']);\nObject.defineProperty(apiLoader.services['kinesisvideomedia'], '2017-09-30', {\n get: function get() {\n var model = require('../apis/kinesis-video-media-2017-09-30.min.json');\n model.paginators = require('../apis/kinesis-video-media-2017-09-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideoMedia;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideosignalingchannels'] = {};\nAWS.KinesisVideoSignalingChannels = Service.defineService('kinesisvideosignalingchannels', ['2019-12-04']);\nObject.defineProperty(apiLoader.services['kinesisvideosignalingchannels'], '2019-12-04', {\n get: function get() {\n var model = require('../apis/kinesis-video-signaling-2019-12-04.min.json');\n model.paginators = require('../apis/kinesis-video-signaling-2019-12-04.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideoSignalingChannels;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kms'] = {};\nAWS.KMS = Service.defineService('kms', ['2014-11-01']);\nObject.defineProperty(apiLoader.services['kms'], '2014-11-01', {\n get: function get() {\n var model = require('../apis/kms-2014-11-01.min.json');\n model.paginators = require('../apis/kms-2014-11-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KMS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lambda'] = {};\nAWS.Lambda = Service.defineService('lambda', ['2014-11-11', '2015-03-31']);\nrequire('../lib/services/lambda');\nObject.defineProperty(apiLoader.services['lambda'], '2014-11-11', {\n get: function get() {\n var model = require('../apis/lambda-2014-11-11.min.json');\n model.paginators = require('../apis/lambda-2014-11-11.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['lambda'], '2015-03-31', {\n get: function get() {\n var model = require('../apis/lambda-2015-03-31.min.json');\n model.paginators = require('../apis/lambda-2015-03-31.paginators.json').pagination;\n model.waiters = require('../apis/lambda-2015-03-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Lambda;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lexmodelbuildingservice'] = {};\nAWS.LexModelBuildingService = Service.defineService('lexmodelbuildingservice', ['2017-04-19']);\nObject.defineProperty(apiLoader.services['lexmodelbuildingservice'], '2017-04-19', {\n get: function get() {\n var model = require('../apis/lex-models-2017-04-19.min.json');\n model.paginators = require('../apis/lex-models-2017-04-19.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.LexModelBuildingService;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lexruntime'] = {};\nAWS.LexRuntime = Service.defineService('lexruntime', ['2016-11-28']);\nObject.defineProperty(apiLoader.services['lexruntime'], '2016-11-28', {\n get: function get() {\n var model = require('../apis/runtime.lex-2016-11-28.min.json');\n model.paginators = require('../apis/runtime.lex-2016-11-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.LexRuntime;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lexruntimev2'] = {};\nAWS.LexRuntimeV2 = Service.defineService('lexruntimev2', ['2020-08-07']);\nObject.defineProperty(apiLoader.services['lexruntimev2'], '2020-08-07', {\n get: function get() {\n var model = require('../apis/runtime.lex.v2-2020-08-07.min.json');\n model.paginators = require('../apis/runtime.lex.v2-2020-08-07.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.LexRuntimeV2;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['location'] = {};\nAWS.Location = Service.defineService('location', ['2020-11-19']);\nObject.defineProperty(apiLoader.services['location'], '2020-11-19', {\n get: function get() {\n var model = require('../apis/location-2020-11-19.min.json');\n model.paginators = require('../apis/location-2020-11-19.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Location;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['machinelearning'] = {};\nAWS.MachineLearning = Service.defineService('machinelearning', ['2014-12-12']);\nrequire('../lib/services/machinelearning');\nObject.defineProperty(apiLoader.services['machinelearning'], '2014-12-12', {\n get: function get() {\n var model = require('../apis/machinelearning-2014-12-12.min.json');\n model.paginators = require('../apis/machinelearning-2014-12-12.paginators.json').pagination;\n model.waiters = require('../apis/machinelearning-2014-12-12.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MachineLearning;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['marketplacecatalog'] = {};\nAWS.MarketplaceCatalog = Service.defineService('marketplacecatalog', ['2018-09-17']);\nObject.defineProperty(apiLoader.services['marketplacecatalog'], '2018-09-17', {\n get: function get() {\n var model = require('../apis/marketplace-catalog-2018-09-17.min.json');\n model.paginators = require('../apis/marketplace-catalog-2018-09-17.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MarketplaceCatalog;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['marketplacecommerceanalytics'] = {};\nAWS.MarketplaceCommerceAnalytics = Service.defineService('marketplacecommerceanalytics', ['2015-07-01']);\nObject.defineProperty(apiLoader.services['marketplacecommerceanalytics'], '2015-07-01', {\n get: function get() {\n var model = require('../apis/marketplacecommerceanalytics-2015-07-01.min.json');\n model.paginators = require('../apis/marketplacecommerceanalytics-2015-07-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MarketplaceCommerceAnalytics;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['mediastoredata'] = {};\nAWS.MediaStoreData = Service.defineService('mediastoredata', ['2017-09-01']);\nObject.defineProperty(apiLoader.services['mediastoredata'], '2017-09-01', {\n get: function get() {\n var model = require('../apis/mediastore-data-2017-09-01.min.json');\n model.paginators = require('../apis/mediastore-data-2017-09-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MediaStoreData;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['mobileanalytics'] = {};\nAWS.MobileAnalytics = Service.defineService('mobileanalytics', ['2014-06-05']);\nObject.defineProperty(apiLoader.services['mobileanalytics'], '2014-06-05', {\n get: function get() {\n var model = require('../apis/mobileanalytics-2014-06-05.min.json');\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MobileAnalytics;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['mturk'] = {};\nAWS.MTurk = Service.defineService('mturk', ['2017-01-17']);\nObject.defineProperty(apiLoader.services['mturk'], '2017-01-17', {\n get: function get() {\n var model = require('../apis/mturk-requester-2017-01-17.min.json');\n model.paginators = require('../apis/mturk-requester-2017-01-17.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MTurk;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['opsworks'] = {};\nAWS.OpsWorks = Service.defineService('opsworks', ['2013-02-18']);\nObject.defineProperty(apiLoader.services['opsworks'], '2013-02-18', {\n get: function get() {\n var model = require('../apis/opsworks-2013-02-18.min.json');\n model.paginators = require('../apis/opsworks-2013-02-18.paginators.json').pagination;\n model.waiters = require('../apis/opsworks-2013-02-18.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.OpsWorks;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['personalize'] = {};\nAWS.Personalize = Service.defineService('personalize', ['2018-05-22']);\nObject.defineProperty(apiLoader.services['personalize'], '2018-05-22', {\n get: function get() {\n var model = require('../apis/personalize-2018-05-22.min.json');\n model.paginators = require('../apis/personalize-2018-05-22.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Personalize;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['personalizeevents'] = {};\nAWS.PersonalizeEvents = Service.defineService('personalizeevents', ['2018-03-22']);\nObject.defineProperty(apiLoader.services['personalizeevents'], '2018-03-22', {\n get: function get() {\n var model = require('../apis/personalize-events-2018-03-22.min.json');\n model.paginators = require('../apis/personalize-events-2018-03-22.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.PersonalizeEvents;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['personalizeruntime'] = {};\nAWS.PersonalizeRuntime = Service.defineService('personalizeruntime', ['2018-05-22']);\nObject.defineProperty(apiLoader.services['personalizeruntime'], '2018-05-22', {\n get: function get() {\n var model = require('../apis/personalize-runtime-2018-05-22.min.json');\n model.paginators = require('../apis/personalize-runtime-2018-05-22.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.PersonalizeRuntime;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['polly'] = {};\nAWS.Polly = Service.defineService('polly', ['2016-06-10']);\nrequire('../lib/services/polly');\nObject.defineProperty(apiLoader.services['polly'], '2016-06-10', {\n get: function get() {\n var model = require('../apis/polly-2016-06-10.min.json');\n model.paginators = require('../apis/polly-2016-06-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Polly;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['pricing'] = {};\nAWS.Pricing = Service.defineService('pricing', ['2017-10-15']);\nObject.defineProperty(apiLoader.services['pricing'], '2017-10-15', {\n get: function get() {\n var model = require('../apis/pricing-2017-10-15.min.json');\n model.paginators = require('../apis/pricing-2017-10-15.paginators.json').pagination;\n model.waiters = require('../apis/pricing-2017-10-15.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Pricing;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['rds'] = {};\nAWS.RDS = Service.defineService('rds', ['2013-01-10', '2013-02-12', '2013-09-09', '2014-09-01', '2014-09-01*', '2014-10-31']);\nrequire('../lib/services/rds');\nObject.defineProperty(apiLoader.services['rds'], '2013-01-10', {\n get: function get() {\n var model = require('../apis/rds-2013-01-10.min.json');\n model.paginators = require('../apis/rds-2013-01-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2013-02-12', {\n get: function get() {\n var model = require('../apis/rds-2013-02-12.min.json');\n model.paginators = require('../apis/rds-2013-02-12.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2013-09-09', {\n get: function get() {\n var model = require('../apis/rds-2013-09-09.min.json');\n model.paginators = require('../apis/rds-2013-09-09.paginators.json').pagination;\n model.waiters = require('../apis/rds-2013-09-09.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2014-09-01', {\n get: function get() {\n var model = require('../apis/rds-2014-09-01.min.json');\n model.paginators = require('../apis/rds-2014-09-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2014-10-31', {\n get: function get() {\n var model = require('../apis/rds-2014-10-31.min.json');\n model.paginators = require('../apis/rds-2014-10-31.paginators.json').pagination;\n model.waiters = require('../apis/rds-2014-10-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.RDS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['redshift'] = {};\nAWS.Redshift = Service.defineService('redshift', ['2012-12-01']);\nObject.defineProperty(apiLoader.services['redshift'], '2012-12-01', {\n get: function get() {\n var model = require('../apis/redshift-2012-12-01.min.json');\n model.paginators = require('../apis/redshift-2012-12-01.paginators.json').pagination;\n model.waiters = require('../apis/redshift-2012-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Redshift;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['rekognition'] = {};\nAWS.Rekognition = Service.defineService('rekognition', ['2016-06-27']);\nObject.defineProperty(apiLoader.services['rekognition'], '2016-06-27', {\n get: function get() {\n var model = require('../apis/rekognition-2016-06-27.min.json');\n model.paginators = require('../apis/rekognition-2016-06-27.paginators.json').pagination;\n model.waiters = require('../apis/rekognition-2016-06-27.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Rekognition;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['resourcegroups'] = {};\nAWS.ResourceGroups = Service.defineService('resourcegroups', ['2017-11-27']);\nObject.defineProperty(apiLoader.services['resourcegroups'], '2017-11-27', {\n get: function get() {\n var model = require('../apis/resource-groups-2017-11-27.min.json');\n model.paginators = require('../apis/resource-groups-2017-11-27.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ResourceGroups;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['route53'] = {};\nAWS.Route53 = Service.defineService('route53', ['2013-04-01']);\nrequire('../lib/services/route53');\nObject.defineProperty(apiLoader.services['route53'], '2013-04-01', {\n get: function get() {\n var model = require('../apis/route53-2013-04-01.min.json');\n model.paginators = require('../apis/route53-2013-04-01.paginators.json').pagination;\n model.waiters = require('../apis/route53-2013-04-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Route53;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['route53domains'] = {};\nAWS.Route53Domains = Service.defineService('route53domains', ['2014-05-15']);\nObject.defineProperty(apiLoader.services['route53domains'], '2014-05-15', {\n get: function get() {\n var model = require('../apis/route53domains-2014-05-15.min.json');\n model.paginators = require('../apis/route53domains-2014-05-15.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Route53Domains;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['s3'] = {};\nAWS.S3 = Service.defineService('s3', ['2006-03-01']);\nrequire('../lib/services/s3');\nObject.defineProperty(apiLoader.services['s3'], '2006-03-01', {\n get: function get() {\n var model = require('../apis/s3-2006-03-01.min.json');\n model.paginators = require('../apis/s3-2006-03-01.paginators.json').pagination;\n model.waiters = require('../apis/s3-2006-03-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.S3;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['secretsmanager'] = {};\nAWS.SecretsManager = Service.defineService('secretsmanager', ['2017-10-17']);\nObject.defineProperty(apiLoader.services['secretsmanager'], '2017-10-17', {\n get: function get() {\n var model = require('../apis/secretsmanager-2017-10-17.min.json');\n model.paginators = require('../apis/secretsmanager-2017-10-17.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SecretsManager;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['servicecatalog'] = {};\nAWS.ServiceCatalog = Service.defineService('servicecatalog', ['2015-12-10']);\nObject.defineProperty(apiLoader.services['servicecatalog'], '2015-12-10', {\n get: function get() {\n var model = require('../apis/servicecatalog-2015-12-10.min.json');\n model.paginators = require('../apis/servicecatalog-2015-12-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ServiceCatalog;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ses'] = {};\nAWS.SES = Service.defineService('ses', ['2010-12-01']);\nObject.defineProperty(apiLoader.services['ses'], '2010-12-01', {\n get: function get() {\n var model = require('../apis/email-2010-12-01.min.json');\n model.paginators = require('../apis/email-2010-12-01.paginators.json').pagination;\n model.waiters = require('../apis/email-2010-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SES;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['sns'] = {};\nAWS.SNS = Service.defineService('sns', ['2010-03-31']);\nObject.defineProperty(apiLoader.services['sns'], '2010-03-31', {\n get: function get() {\n var model = require('../apis/sns-2010-03-31.min.json');\n model.paginators = require('../apis/sns-2010-03-31.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SNS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['sqs'] = {};\nAWS.SQS = Service.defineService('sqs', ['2012-11-05']);\nrequire('../lib/services/sqs');\nObject.defineProperty(apiLoader.services['sqs'], '2012-11-05', {\n get: function get() {\n var model = require('../apis/sqs-2012-11-05.min.json');\n model.paginators = require('../apis/sqs-2012-11-05.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SQS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ssm'] = {};\nAWS.SSM = Service.defineService('ssm', ['2014-11-06']);\nObject.defineProperty(apiLoader.services['ssm'], '2014-11-06', {\n get: function get() {\n var model = require('../apis/ssm-2014-11-06.min.json');\n model.paginators = require('../apis/ssm-2014-11-06.paginators.json').pagination;\n model.waiters = require('../apis/ssm-2014-11-06.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SSM;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['storagegateway'] = {};\nAWS.StorageGateway = Service.defineService('storagegateway', ['2013-06-30']);\nObject.defineProperty(apiLoader.services['storagegateway'], '2013-06-30', {\n get: function get() {\n var model = require('../apis/storagegateway-2013-06-30.min.json');\n model.paginators = require('../apis/storagegateway-2013-06-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.StorageGateway;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['sts'] = {};\nAWS.STS = Service.defineService('sts', ['2011-06-15']);\nrequire('../lib/services/sts');\nObject.defineProperty(apiLoader.services['sts'], '2011-06-15', {\n get: function get() {\n var model = require('../apis/sts-2011-06-15.min.json');\n model.paginators = require('../apis/sts-2011-06-15.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.STS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['translate'] = {};\nAWS.Translate = Service.defineService('translate', ['2017-07-01']);\nObject.defineProperty(apiLoader.services['translate'], '2017-07-01', {\n get: function get() {\n var model = require('../apis/translate-2017-07-01.min.json');\n model.paginators = require('../apis/translate-2017-07-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Translate;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['waf'] = {};\nAWS.WAF = Service.defineService('waf', ['2015-08-24']);\nObject.defineProperty(apiLoader.services['waf'], '2015-08-24', {\n get: function get() {\n var model = require('../apis/waf-2015-08-24.min.json');\n model.paginators = require('../apis/waf-2015-08-24.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.WAF;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['workdocs'] = {};\nAWS.WorkDocs = Service.defineService('workdocs', ['2016-05-01']);\nObject.defineProperty(apiLoader.services['workdocs'], '2016-05-01', {\n get: function get() {\n var model = require('../apis/workdocs-2016-05-01.min.json');\n model.paginators = require('../apis/workdocs-2016-05-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.WorkDocs;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['xray'] = {};\nAWS.XRay = Service.defineService('xray', ['2016-04-12']);\nObject.defineProperty(apiLoader.services['xray'], '2016-04-12', {\n get: function get() {\n var model = require('../apis/xray-2016-04-12.min.json');\n model.paginators = require('../apis/xray-2016-04-12.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.XRay;\n","function apiLoader(svc, version) {\n if (!apiLoader.services.hasOwnProperty(svc)) {\n throw new Error('InvalidService: Failed to load api for ' + svc);\n }\n return apiLoader.services[svc][version];\n}\n\n/**\n * @api private\n *\n * This member of AWS.apiLoader is private, but changing it will necessitate a\n * change to ../scripts/services-table-generator.ts\n */\napiLoader.services = {};\n\n/**\n * @api private\n */\nmodule.exports = apiLoader;\n","require('./browser_loader');\n\nvar AWS = require('./core');\n\nif (typeof window !== 'undefined') window.AWS = AWS;\nif (typeof module !== 'undefined') {\n /**\n * @api private\n */\n module.exports = AWS;\n}\nif (typeof self !== 'undefined') self.AWS = AWS;\n\n/**\n * @private\n * DO NOT REMOVE\n * browser builder will strip out this line if services are supplied on the command line.\n */\nrequire('../clients/browser_default');\n","var Hmac = require('./browserHmac');\nvar Md5 = require('./browserMd5');\nvar Sha1 = require('./browserSha1');\nvar Sha256 = require('./browserSha256');\n\n/**\n * @api private\n */\nmodule.exports = exports = {\n createHash: function createHash(alg) {\n alg = alg.toLowerCase();\n if (alg === 'md5') {\n return new Md5();\n } else if (alg === 'sha256') {\n return new Sha256();\n } else if (alg === 'sha1') {\n return new Sha1();\n }\n\n throw new Error('Hash algorithm ' + alg + ' is not supported in the browser SDK');\n },\n createHmac: function createHmac(alg, key) {\n alg = alg.toLowerCase();\n if (alg === 'md5') {\n return new Hmac(Md5, key);\n } else if (alg === 'sha256') {\n return new Hmac(Sha256, key);\n } else if (alg === 'sha1') {\n return new Hmac(Sha1, key);\n }\n\n throw new Error('HMAC algorithm ' + alg + ' is not supported in the browser SDK');\n },\n createSign: function() {\n throw new Error('createSign is not implemented in the browser');\n }\n };\n","var Buffer = require('buffer/').Buffer;\n\n/**\n * This is a polyfill for the static method `isView` of `ArrayBuffer`, which is\n * e.g. missing in IE 10.\n *\n * @api private\n */\nif (\n typeof ArrayBuffer !== 'undefined' &&\n typeof ArrayBuffer.isView === 'undefined'\n) {\n ArrayBuffer.isView = function(arg) {\n return viewStrings.indexOf(Object.prototype.toString.call(arg)) > -1;\n };\n}\n\n/**\n * @api private\n */\nvar viewStrings = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]',\n '[object DataView]',\n];\n\n/**\n * @api private\n */\nfunction isEmptyData(data) {\n if (typeof data === 'string') {\n return data.length === 0;\n }\n return data.byteLength === 0;\n}\n\n/**\n * @api private\n */\nfunction convertToBuffer(data) {\n if (typeof data === 'string') {\n data = new Buffer(data, 'utf8');\n }\n\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n }\n\n return new Uint8Array(data);\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = {\n isEmptyData: isEmptyData,\n convertToBuffer: convertToBuffer,\n};\n","var hashUtils = require('./browserHashUtils');\n\n/**\n * @api private\n */\nfunction Hmac(hashCtor, secret) {\n this.hash = new hashCtor();\n this.outer = new hashCtor();\n\n var inner = bufferFromSecret(hashCtor, secret);\n var outer = new Uint8Array(hashCtor.BLOCK_SIZE);\n outer.set(inner);\n\n for (var i = 0; i < hashCtor.BLOCK_SIZE; i++) {\n inner[i] ^= 0x36;\n outer[i] ^= 0x5c;\n }\n\n this.hash.update(inner);\n this.outer.update(outer);\n\n // Zero out the copied key buffer.\n for (var i = 0; i < inner.byteLength; i++) {\n inner[i] = 0;\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Hmac;\n\nHmac.prototype.update = function (toHash) {\n if (hashUtils.isEmptyData(toHash) || this.error) {\n return this;\n }\n\n try {\n this.hash.update(hashUtils.convertToBuffer(toHash));\n } catch (e) {\n this.error = e;\n }\n\n return this;\n};\n\nHmac.prototype.digest = function (encoding) {\n if (!this.outer.finished) {\n this.outer.update(this.hash.digest());\n }\n\n return this.outer.digest(encoding);\n};\n\nfunction bufferFromSecret(hashCtor, secret) {\n var input = hashUtils.convertToBuffer(secret);\n if (input.byteLength > hashCtor.BLOCK_SIZE) {\n var bufferHash = new hashCtor;\n bufferHash.update(input);\n input = bufferHash.digest();\n }\n var buffer = new Uint8Array(hashCtor.BLOCK_SIZE);\n buffer.set(input);\n return buffer;\n}\n","var hashUtils = require('./browserHashUtils');\nvar Buffer = require('buffer/').Buffer;\n\nvar BLOCK_SIZE = 64;\n\nvar DIGEST_LENGTH = 16;\n\nvar INIT = [\n 0x67452301,\n 0xefcdab89,\n 0x98badcfe,\n 0x10325476,\n];\n\n/**\n * @api private\n */\nfunction Md5() {\n this.state = [\n 0x67452301,\n 0xefcdab89,\n 0x98badcfe,\n 0x10325476,\n ];\n this.buffer = new DataView(new ArrayBuffer(BLOCK_SIZE));\n this.bufferLength = 0;\n this.bytesHashed = 0;\n this.finished = false;\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Md5;\n\nMd5.BLOCK_SIZE = BLOCK_SIZE;\n\nMd5.prototype.update = function (sourceData) {\n if (hashUtils.isEmptyData(sourceData)) {\n return this;\n } else if (this.finished) {\n throw new Error('Attempted to update an already finished hash.');\n }\n\n var data = hashUtils.convertToBuffer(sourceData);\n var position = 0;\n var byteLength = data.byteLength;\n this.bytesHashed += byteLength;\n while (byteLength > 0) {\n this.buffer.setUint8(this.bufferLength++, data[position++]);\n byteLength--;\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n\n return this;\n};\n\nMd5.prototype.digest = function (encoding) {\n if (!this.finished) {\n var _a = this, buffer = _a.buffer, undecoratedLength = _a.bufferLength, bytesHashed = _a.bytesHashed;\n var bitsHashed = bytesHashed * 8;\n buffer.setUint8(this.bufferLength++, 128);\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (var i = this.bufferLength; i < BLOCK_SIZE; i++) {\n buffer.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n for (var i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n buffer.setUint8(i, 0);\n }\n buffer.setUint32(BLOCK_SIZE - 8, bitsHashed >>> 0, true);\n buffer.setUint32(BLOCK_SIZE - 4, Math.floor(bitsHashed / 0x100000000), true);\n this.hashBuffer();\n this.finished = true;\n }\n var out = new DataView(new ArrayBuffer(DIGEST_LENGTH));\n for (var i = 0; i < 4; i++) {\n out.setUint32(i * 4, this.state[i], true);\n }\n var buff = new Buffer(out.buffer, out.byteOffset, out.byteLength);\n return encoding ? buff.toString(encoding) : buff;\n};\n\nMd5.prototype.hashBuffer = function () {\n var _a = this, buffer = _a.buffer, state = _a.state;\n var a = state[0], b = state[1], c = state[2], d = state[3];\n a = ff(a, b, c, d, buffer.getUint32(0, true), 7, 0xd76aa478);\n d = ff(d, a, b, c, buffer.getUint32(4, true), 12, 0xe8c7b756);\n c = ff(c, d, a, b, buffer.getUint32(8, true), 17, 0x242070db);\n b = ff(b, c, d, a, buffer.getUint32(12, true), 22, 0xc1bdceee);\n a = ff(a, b, c, d, buffer.getUint32(16, true), 7, 0xf57c0faf);\n d = ff(d, a, b, c, buffer.getUint32(20, true), 12, 0x4787c62a);\n c = ff(c, d, a, b, buffer.getUint32(24, true), 17, 0xa8304613);\n b = ff(b, c, d, a, buffer.getUint32(28, true), 22, 0xfd469501);\n a = ff(a, b, c, d, buffer.getUint32(32, true), 7, 0x698098d8);\n d = ff(d, a, b, c, buffer.getUint32(36, true), 12, 0x8b44f7af);\n c = ff(c, d, a, b, buffer.getUint32(40, true), 17, 0xffff5bb1);\n b = ff(b, c, d, a, buffer.getUint32(44, true), 22, 0x895cd7be);\n a = ff(a, b, c, d, buffer.getUint32(48, true), 7, 0x6b901122);\n d = ff(d, a, b, c, buffer.getUint32(52, true), 12, 0xfd987193);\n c = ff(c, d, a, b, buffer.getUint32(56, true), 17, 0xa679438e);\n b = ff(b, c, d, a, buffer.getUint32(60, true), 22, 0x49b40821);\n a = gg(a, b, c, d, buffer.getUint32(4, true), 5, 0xf61e2562);\n d = gg(d, a, b, c, buffer.getUint32(24, true), 9, 0xc040b340);\n c = gg(c, d, a, b, buffer.getUint32(44, true), 14, 0x265e5a51);\n b = gg(b, c, d, a, buffer.getUint32(0, true), 20, 0xe9b6c7aa);\n a = gg(a, b, c, d, buffer.getUint32(20, true), 5, 0xd62f105d);\n d = gg(d, a, b, c, buffer.getUint32(40, true), 9, 0x02441453);\n c = gg(c, d, a, b, buffer.getUint32(60, true), 14, 0xd8a1e681);\n b = gg(b, c, d, a, buffer.getUint32(16, true), 20, 0xe7d3fbc8);\n a = gg(a, b, c, d, buffer.getUint32(36, true), 5, 0x21e1cde6);\n d = gg(d, a, b, c, buffer.getUint32(56, true), 9, 0xc33707d6);\n c = gg(c, d, a, b, buffer.getUint32(12, true), 14, 0xf4d50d87);\n b = gg(b, c, d, a, buffer.getUint32(32, true), 20, 0x455a14ed);\n a = gg(a, b, c, d, buffer.getUint32(52, true), 5, 0xa9e3e905);\n d = gg(d, a, b, c, buffer.getUint32(8, true), 9, 0xfcefa3f8);\n c = gg(c, d, a, b, buffer.getUint32(28, true), 14, 0x676f02d9);\n b = gg(b, c, d, a, buffer.getUint32(48, true), 20, 0x8d2a4c8a);\n a = hh(a, b, c, d, buffer.getUint32(20, true), 4, 0xfffa3942);\n d = hh(d, a, b, c, buffer.getUint32(32, true), 11, 0x8771f681);\n c = hh(c, d, a, b, buffer.getUint32(44, true), 16, 0x6d9d6122);\n b = hh(b, c, d, a, buffer.getUint32(56, true), 23, 0xfde5380c);\n a = hh(a, b, c, d, buffer.getUint32(4, true), 4, 0xa4beea44);\n d = hh(d, a, b, c, buffer.getUint32(16, true), 11, 0x4bdecfa9);\n c = hh(c, d, a, b, buffer.getUint32(28, true), 16, 0xf6bb4b60);\n b = hh(b, c, d, a, buffer.getUint32(40, true), 23, 0xbebfbc70);\n a = hh(a, b, c, d, buffer.getUint32(52, true), 4, 0x289b7ec6);\n d = hh(d, a, b, c, buffer.getUint32(0, true), 11, 0xeaa127fa);\n c = hh(c, d, a, b, buffer.getUint32(12, true), 16, 0xd4ef3085);\n b = hh(b, c, d, a, buffer.getUint32(24, true), 23, 0x04881d05);\n a = hh(a, b, c, d, buffer.getUint32(36, true), 4, 0xd9d4d039);\n d = hh(d, a, b, c, buffer.getUint32(48, true), 11, 0xe6db99e5);\n c = hh(c, d, a, b, buffer.getUint32(60, true), 16, 0x1fa27cf8);\n b = hh(b, c, d, a, buffer.getUint32(8, true), 23, 0xc4ac5665);\n a = ii(a, b, c, d, buffer.getUint32(0, true), 6, 0xf4292244);\n d = ii(d, a, b, c, buffer.getUint32(28, true), 10, 0x432aff97);\n c = ii(c, d, a, b, buffer.getUint32(56, true), 15, 0xab9423a7);\n b = ii(b, c, d, a, buffer.getUint32(20, true), 21, 0xfc93a039);\n a = ii(a, b, c, d, buffer.getUint32(48, true), 6, 0x655b59c3);\n d = ii(d, a, b, c, buffer.getUint32(12, true), 10, 0x8f0ccc92);\n c = ii(c, d, a, b, buffer.getUint32(40, true), 15, 0xffeff47d);\n b = ii(b, c, d, a, buffer.getUint32(4, true), 21, 0x85845dd1);\n a = ii(a, b, c, d, buffer.getUint32(32, true), 6, 0x6fa87e4f);\n d = ii(d, a, b, c, buffer.getUint32(60, true), 10, 0xfe2ce6e0);\n c = ii(c, d, a, b, buffer.getUint32(24, true), 15, 0xa3014314);\n b = ii(b, c, d, a, buffer.getUint32(52, true), 21, 0x4e0811a1);\n a = ii(a, b, c, d, buffer.getUint32(16, true), 6, 0xf7537e82);\n d = ii(d, a, b, c, buffer.getUint32(44, true), 10, 0xbd3af235);\n c = ii(c, d, a, b, buffer.getUint32(8, true), 15, 0x2ad7d2bb);\n b = ii(b, c, d, a, buffer.getUint32(36, true), 21, 0xeb86d391);\n state[0] = (a + state[0]) & 0xFFFFFFFF;\n state[1] = (b + state[1]) & 0xFFFFFFFF;\n state[2] = (c + state[2]) & 0xFFFFFFFF;\n state[3] = (d + state[3]) & 0xFFFFFFFF;\n};\n\nfunction cmn(q, a, b, x, s, t) {\n a = (((a + q) & 0xFFFFFFFF) + ((x + t) & 0xFFFFFFFF)) & 0xFFFFFFFF;\n return (((a << s) | (a >>> (32 - s))) + b) & 0xFFFFFFFF;\n}\n\nfunction ff(a, b, c, d, x, s, t) {\n return cmn((b & c) | ((~b) & d), a, b, x, s, t);\n}\n\nfunction gg(a, b, c, d, x, s, t) {\n return cmn((b & d) | (c & (~d)), a, b, x, s, t);\n}\n\nfunction hh(a, b, c, d, x, s, t) {\n return cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction ii(a, b, c, d, x, s, t) {\n return cmn(c ^ (b | (~d)), a, b, x, s, t);\n}\n","var Buffer = require('buffer/').Buffer;\nvar hashUtils = require('./browserHashUtils');\n\nvar BLOCK_SIZE = 64;\n\nvar DIGEST_LENGTH = 20;\n\nvar KEY = new Uint32Array([\n 0x5a827999,\n 0x6ed9eba1,\n 0x8f1bbcdc | 0,\n 0xca62c1d6 | 0\n]);\n\nvar INIT = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19,\n];\n\nvar MAX_HASHABLE_LENGTH = Math.pow(2, 53) - 1;\n\n/**\n * @api private\n */\nfunction Sha1() {\n this.h0 = 0x67452301;\n this.h1 = 0xEFCDAB89;\n this.h2 = 0x98BADCFE;\n this.h3 = 0x10325476;\n this.h4 = 0xC3D2E1F0;\n // The first 64 bytes (16 words) is the data chunk\n this.block = new Uint32Array(80);\n this.offset = 0;\n this.shift = 24;\n this.totalLength = 0;\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Sha1;\n\nSha1.BLOCK_SIZE = BLOCK_SIZE;\n\nSha1.prototype.update = function (data) {\n if (this.finished) {\n throw new Error('Attempted to update an already finished hash.');\n }\n\n if (hashUtils.isEmptyData(data)) {\n return this;\n }\n\n data = hashUtils.convertToBuffer(data);\n\n var length = data.length;\n this.totalLength += length * 8;\n for (var i = 0; i < length; i++) {\n this.write(data[i]);\n }\n\n return this;\n};\n\nSha1.prototype.write = function write(byte) {\n this.block[this.offset] |= (byte & 0xff) << this.shift;\n if (this.shift) {\n this.shift -= 8;\n } else {\n this.offset++;\n this.shift = 24;\n }\n\n if (this.offset === 16) this.processBlock();\n};\n\nSha1.prototype.digest = function (encoding) {\n // Pad\n this.write(0x80);\n if (this.offset > 14 || (this.offset === 14 && this.shift < 24)) {\n this.processBlock();\n }\n this.offset = 14;\n this.shift = 24;\n\n // 64-bit length big-endian\n this.write(0x00); // numbers this big aren't accurate in javascript anyway\n this.write(0x00); // ..So just hard-code to zero.\n this.write(this.totalLength > 0xffffffffff ? this.totalLength / 0x10000000000 : 0x00);\n this.write(this.totalLength > 0xffffffff ? this.totalLength / 0x100000000 : 0x00);\n for (var s = 24; s >= 0; s -= 8) {\n this.write(this.totalLength >> s);\n }\n // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n var out = new Buffer(DIGEST_LENGTH);\n var outView = new DataView(out.buffer);\n outView.setUint32(0, this.h0, false);\n outView.setUint32(4, this.h1, false);\n outView.setUint32(8, this.h2, false);\n outView.setUint32(12, this.h3, false);\n outView.setUint32(16, this.h4, false);\n\n return encoding ? out.toString(encoding) : out;\n};\n\nSha1.prototype.processBlock = function processBlock() {\n // Extend the sixteen 32-bit words into eighty 32-bit words:\n for (var i = 16; i < 80; i++) {\n var w = this.block[i - 3] ^ this.block[i - 8] ^ this.block[i - 14] ^ this.block[i - 16];\n this.block[i] = (w << 1) | (w >>> 31);\n }\n\n // Initialize hash value for this chunk:\n var a = this.h0;\n var b = this.h1;\n var c = this.h2;\n var d = this.h3;\n var e = this.h4;\n var f, k;\n\n // Main loop:\n for (i = 0; i < 80; i++) {\n if (i < 20) {\n f = d ^ (b & (c ^ d));\n k = 0x5A827999;\n }\n else if (i < 40) {\n f = b ^ c ^ d;\n k = 0x6ED9EBA1;\n }\n else if (i < 60) {\n f = (b & c) | (d & (b | c));\n k = 0x8F1BBCDC;\n }\n else {\n f = b ^ c ^ d;\n k = 0xCA62C1D6;\n }\n var temp = (a << 5 | a >>> 27) + f + e + k + (this.block[i]|0);\n e = d;\n d = c;\n c = (b << 30 | b >>> 2);\n b = a;\n a = temp;\n }\n\n // Add this chunk's hash to result so far:\n this.h0 = (this.h0 + a) | 0;\n this.h1 = (this.h1 + b) | 0;\n this.h2 = (this.h2 + c) | 0;\n this.h3 = (this.h3 + d) | 0;\n this.h4 = (this.h4 + e) | 0;\n\n // The block is now reusable.\n this.offset = 0;\n for (i = 0; i < 16; i++) {\n this.block[i] = 0;\n }\n};\n","var Buffer = require('buffer/').Buffer;\nvar hashUtils = require('./browserHashUtils');\n\nvar BLOCK_SIZE = 64;\n\nvar DIGEST_LENGTH = 32;\n\nvar KEY = new Uint32Array([\n 0x428a2f98,\n 0x71374491,\n 0xb5c0fbcf,\n 0xe9b5dba5,\n 0x3956c25b,\n 0x59f111f1,\n 0x923f82a4,\n 0xab1c5ed5,\n 0xd807aa98,\n 0x12835b01,\n 0x243185be,\n 0x550c7dc3,\n 0x72be5d74,\n 0x80deb1fe,\n 0x9bdc06a7,\n 0xc19bf174,\n 0xe49b69c1,\n 0xefbe4786,\n 0x0fc19dc6,\n 0x240ca1cc,\n 0x2de92c6f,\n 0x4a7484aa,\n 0x5cb0a9dc,\n 0x76f988da,\n 0x983e5152,\n 0xa831c66d,\n 0xb00327c8,\n 0xbf597fc7,\n 0xc6e00bf3,\n 0xd5a79147,\n 0x06ca6351,\n 0x14292967,\n 0x27b70a85,\n 0x2e1b2138,\n 0x4d2c6dfc,\n 0x53380d13,\n 0x650a7354,\n 0x766a0abb,\n 0x81c2c92e,\n 0x92722c85,\n 0xa2bfe8a1,\n 0xa81a664b,\n 0xc24b8b70,\n 0xc76c51a3,\n 0xd192e819,\n 0xd6990624,\n 0xf40e3585,\n 0x106aa070,\n 0x19a4c116,\n 0x1e376c08,\n 0x2748774c,\n 0x34b0bcb5,\n 0x391c0cb3,\n 0x4ed8aa4a,\n 0x5b9cca4f,\n 0x682e6ff3,\n 0x748f82ee,\n 0x78a5636f,\n 0x84c87814,\n 0x8cc70208,\n 0x90befffa,\n 0xa4506ceb,\n 0xbef9a3f7,\n 0xc67178f2\n]);\n\nvar INIT = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19,\n];\n\nvar MAX_HASHABLE_LENGTH = Math.pow(2, 53) - 1;\n\n/**\n * @private\n */\nfunction Sha256() {\n this.state = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19,\n ];\n this.temp = new Int32Array(64);\n this.buffer = new Uint8Array(64);\n this.bufferLength = 0;\n this.bytesHashed = 0;\n /**\n * @private\n */\n this.finished = false;\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Sha256;\n\nSha256.BLOCK_SIZE = BLOCK_SIZE;\n\nSha256.prototype.update = function (data) {\n if (this.finished) {\n throw new Error('Attempted to update an already finished hash.');\n }\n\n if (hashUtils.isEmptyData(data)) {\n return this;\n }\n\n data = hashUtils.convertToBuffer(data);\n\n var position = 0;\n var byteLength = data.byteLength;\n this.bytesHashed += byteLength;\n if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) {\n throw new Error('Cannot hash more than 2^53 - 1 bits');\n }\n\n while (byteLength > 0) {\n this.buffer[this.bufferLength++] = data[position++];\n byteLength--;\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n\n return this;\n};\n\nSha256.prototype.digest = function (encoding) {\n if (!this.finished) {\n var bitsHashed = this.bytesHashed * 8;\n var bufferView = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n var undecoratedLength = this.bufferLength;\n bufferView.setUint8(this.bufferLength++, 0x80);\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (var i = this.bufferLength; i < BLOCK_SIZE; i++) {\n bufferView.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n for (var i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n bufferView.setUint8(i, 0);\n }\n bufferView.setUint32(BLOCK_SIZE - 8, Math.floor(bitsHashed / 0x100000000), true);\n bufferView.setUint32(BLOCK_SIZE - 4, bitsHashed);\n this.hashBuffer();\n this.finished = true;\n }\n // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n var out = new Buffer(DIGEST_LENGTH);\n for (var i = 0; i < 8; i++) {\n out[i * 4] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n return encoding ? out.toString(encoding) : out;\n};\n\nSha256.prototype.hashBuffer = function () {\n var _a = this,\n buffer = _a.buffer,\n state = _a.state;\n var state0 = state[0],\n state1 = state[1],\n state2 = state[2],\n state3 = state[3],\n state4 = state[4],\n state5 = state[5],\n state6 = state[6],\n state7 = state[7];\n for (var i = 0; i < BLOCK_SIZE; i++) {\n if (i < 16) {\n this.temp[i] = (((buffer[i * 4] & 0xff) << 24) |\n ((buffer[(i * 4) + 1] & 0xff) << 16) |\n ((buffer[(i * 4) + 2] & 0xff) << 8) |\n (buffer[(i * 4) + 3] & 0xff));\n }\n else {\n var u = this.temp[i - 2];\n var t1_1 = (u >>> 17 | u << 15) ^\n (u >>> 19 | u << 13) ^\n (u >>> 10);\n u = this.temp[i - 15];\n var t2_1 = (u >>> 7 | u << 25) ^\n (u >>> 18 | u << 14) ^\n (u >>> 3);\n this.temp[i] = (t1_1 + this.temp[i - 7] | 0) +\n (t2_1 + this.temp[i - 16] | 0);\n }\n var t1 = (((((state4 >>> 6 | state4 << 26) ^\n (state4 >>> 11 | state4 << 21) ^\n (state4 >>> 25 | state4 << 7))\n + ((state4 & state5) ^ (~state4 & state6))) | 0)\n + ((state7 + ((KEY[i] + this.temp[i]) | 0)) | 0)) | 0;\n var t2 = (((state0 >>> 2 | state0 << 30) ^\n (state0 >>> 13 | state0 << 19) ^\n (state0 >>> 22 | state0 << 10)) + ((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) | 0;\n state7 = state6;\n state6 = state5;\n state5 = state4;\n state4 = (state3 + t1) | 0;\n state3 = state2;\n state2 = state1;\n state1 = state0;\n state0 = (t1 + t2) | 0;\n }\n state[0] += state0;\n state[1] += state1;\n state[2] += state2;\n state[3] += state3;\n state[4] += state4;\n state[5] += state5;\n state[6] += state6;\n state[7] += state7;\n};\n","var util = require('./util');\n\n// browser specific modules\nutil.crypto.lib = require('./browserCryptoLib');\nutil.Buffer = require('buffer/').Buffer;\nutil.url = require('url/');\nutil.querystring = require('querystring/');\nutil.realClock = require('./realclock/browserClock');\nutil.environment = 'js';\nutil.createEventStream = require('./event-stream/buffered-create-event-stream').createEventStream;\nutil.isBrowser = function() { return true; };\nutil.isNode = function() { return false; };\n\nvar AWS = require('./core');\n\n/**\n * @api private\n */\nmodule.exports = AWS;\n\nrequire('./credentials');\nrequire('./credentials/credential_provider_chain');\nrequire('./credentials/temporary_credentials');\nrequire('./credentials/chainable_temporary_credentials');\nrequire('./credentials/web_identity_credentials');\nrequire('./credentials/cognito_identity_credentials');\nrequire('./credentials/saml_credentials');\n\n// Load the DOMParser XML parser\nAWS.XML.Parser = require('./xml/browser_parser');\n\n// Load the XHR HttpClient\nrequire('./http/xhr');\n\nif (typeof process === 'undefined') {\n var process = {\n browser: true\n };\n}\n","var AWS = require('../core'),\n url = AWS.util.url,\n crypto = AWS.util.crypto.lib,\n base64Encode = AWS.util.base64.encode,\n inherit = AWS.util.inherit;\n\nvar queryEncode = function (string) {\n var replacements = {\n '+': '-',\n '=': '_',\n '/': '~'\n };\n return string.replace(/[\\+=\\/]/g, function (match) {\n return replacements[match];\n });\n};\n\nvar signPolicy = function (policy, privateKey) {\n var sign = crypto.createSign('RSA-SHA1');\n sign.write(policy);\n return queryEncode(sign.sign(privateKey, 'base64'));\n};\n\nvar signWithCannedPolicy = function (url, expires, keyPairId, privateKey) {\n var policy = JSON.stringify({\n Statement: [\n {\n Resource: url,\n Condition: { DateLessThan: { 'AWS:EpochTime': expires } }\n }\n ]\n });\n\n return {\n Expires: expires,\n 'Key-Pair-Id': keyPairId,\n Signature: signPolicy(policy.toString(), privateKey)\n };\n};\n\nvar signWithCustomPolicy = function (policy, keyPairId, privateKey) {\n policy = policy.replace(/\\s/mg, '');\n\n return {\n Policy: queryEncode(base64Encode(policy)),\n 'Key-Pair-Id': keyPairId,\n Signature: signPolicy(policy, privateKey)\n };\n};\n\nvar determineScheme = function (url) {\n var parts = url.split('://');\n if (parts.length < 2) {\n throw new Error('Invalid URL.');\n }\n\n return parts[0].replace('*', '');\n};\n\nvar getRtmpUrl = function (rtmpUrl) {\n var parsed = url.parse(rtmpUrl);\n return parsed.path.replace(/^\\//, '') + (parsed.hash || '');\n};\n\nvar getResource = function (url) {\n switch (determineScheme(url)) {\n case 'http':\n case 'https':\n return url;\n case 'rtmp':\n return getRtmpUrl(url);\n default:\n throw new Error('Invalid URI scheme. Scheme must be one of'\n + ' http, https, or rtmp');\n }\n};\n\nvar handleError = function (err, callback) {\n if (!callback || typeof callback !== 'function') {\n throw err;\n }\n\n callback(err);\n};\n\nvar handleSuccess = function (result, callback) {\n if (!callback || typeof callback !== 'function') {\n return result;\n }\n\n callback(null, result);\n};\n\nAWS.CloudFront.Signer = inherit({\n /**\n * A signer object can be used to generate signed URLs and cookies for granting\n * access to content on restricted CloudFront distributions.\n *\n * @see http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html\n *\n * @param keyPairId [String] (Required) The ID of the CloudFront key pair\n * being used.\n * @param privateKey [String] (Required) A private key in RSA format.\n */\n constructor: function Signer(keyPairId, privateKey) {\n if (keyPairId === void 0 || privateKey === void 0) {\n throw new Error('A key pair ID and private key are required');\n }\n\n this.keyPairId = keyPairId;\n this.privateKey = privateKey;\n },\n\n /**\n * Create a signed Amazon CloudFront Cookie.\n *\n * @param options [Object] The options to create a signed cookie.\n * @option options url [String] The URL to which the signature will grant\n * access. Required unless you pass in a full\n * policy.\n * @option options expires [Number] A Unix UTC timestamp indicating when the\n * signature should expire. Required unless you\n * pass in a full policy.\n * @option options policy [String] A CloudFront JSON policy. Required unless\n * you pass in a url and an expiry time.\n *\n * @param cb [Function] if a callback is provided, this function will\n * pass the hash as the second parameter (after the error parameter) to\n * the callback function.\n *\n * @return [Object] if called synchronously (with no callback), returns the\n * signed cookie parameters.\n * @return [null] nothing is returned if a callback is provided.\n */\n getSignedCookie: function (options, cb) {\n var signatureHash = 'policy' in options\n ? signWithCustomPolicy(options.policy, this.keyPairId, this.privateKey)\n : signWithCannedPolicy(options.url, options.expires, this.keyPairId, this.privateKey);\n\n var cookieHash = {};\n for (var key in signatureHash) {\n if (Object.prototype.hasOwnProperty.call(signatureHash, key)) {\n cookieHash['CloudFront-' + key] = signatureHash[key];\n }\n }\n\n return handleSuccess(cookieHash, cb);\n },\n\n /**\n * Create a signed Amazon CloudFront URL.\n *\n * Keep in mind that URLs meant for use in media/flash players may have\n * different requirements for URL formats (e.g. some require that the\n * extension be removed, some require the file name to be prefixed\n * - mp4:, some require you to add \"/cfx/st\" into your URL).\n *\n * @param options [Object] The options to create a signed URL.\n * @option options url [String] The URL to which the signature will grant\n * access. Any query params included with\n * the URL should be encoded. Required.\n * @option options expires [Number] A Unix UTC timestamp indicating when the\n * signature should expire. Required unless you\n * pass in a full policy.\n * @option options policy [String] A CloudFront JSON policy. Required unless\n * you pass in a url and an expiry time.\n *\n * @param cb [Function] if a callback is provided, this function will\n * pass the URL as the second parameter (after the error parameter) to\n * the callback function.\n *\n * @return [String] if called synchronously (with no callback), returns the\n * signed URL.\n * @return [null] nothing is returned if a callback is provided.\n */\n getSignedUrl: function (options, cb) {\n try {\n var resource = getResource(options.url);\n } catch (err) {\n return handleError(err, cb);\n }\n\n var parsedUrl = url.parse(options.url, true),\n signatureHash = Object.prototype.hasOwnProperty.call(options, 'policy')\n ? signWithCustomPolicy(options.policy, this.keyPairId, this.privateKey)\n : signWithCannedPolicy(resource, options.expires, this.keyPairId, this.privateKey);\n\n parsedUrl.search = null;\n for (var key in signatureHash) {\n if (Object.prototype.hasOwnProperty.call(signatureHash, key)) {\n parsedUrl.query[key] = signatureHash[key];\n }\n }\n\n try {\n var signedUrl = determineScheme(options.url) === 'rtmp'\n ? getRtmpUrl(url.format(parsedUrl))\n : url.format(parsedUrl);\n } catch (err) {\n return handleError(err, cb);\n }\n\n return handleSuccess(signedUrl, cb);\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.CloudFront.Signer;\n","var AWS = require('./core');\nrequire('./credentials');\nrequire('./credentials/credential_provider_chain');\nvar PromisesDependency;\n\n/**\n * The main configuration class used by all service objects to set\n * the region, credentials, and other options for requests.\n *\n * By default, credentials and region settings are left unconfigured.\n * This should be configured by the application before using any\n * AWS service APIs.\n *\n * In order to set global configuration options, properties should\n * be assigned to the global {AWS.config} object.\n *\n * @see AWS.config\n *\n * @!group General Configuration Options\n *\n * @!attribute credentials\n * @return [AWS.Credentials] the AWS credentials to sign requests with.\n *\n * @!attribute region\n * @example Set the global region setting to us-west-2\n * AWS.config.update({region: 'us-west-2'});\n * @return [AWS.Credentials] The region to send service requests to.\n * @see http://docs.amazonwebservices.com/general/latest/gr/rande.html\n * A list of available endpoints for each AWS service\n *\n * @!attribute maxRetries\n * @return [Integer] the maximum amount of retries to perform for a\n * service request. By default this value is calculated by the specific\n * service object that the request is being made to.\n *\n * @!attribute maxRedirects\n * @return [Integer] the maximum amount of redirects to follow for a\n * service request. Defaults to 10.\n *\n * @!attribute paramValidation\n * @return [Boolean|map] whether input parameters should be validated against\n * the operation description before sending the request. Defaults to true.\n * Pass a map to enable any of the following specific validation features:\n *\n * * **min** [Boolean] — Validates that a value meets the min\n * constraint. This is enabled by default when paramValidation is set\n * to `true`.\n * * **max** [Boolean] — Validates that a value meets the max\n * constraint.\n * * **pattern** [Boolean] — Validates that a string value matches a\n * regular expression.\n * * **enum** [Boolean] — Validates that a string value matches one\n * of the allowable enum values.\n *\n * @!attribute computeChecksums\n * @return [Boolean] whether to compute checksums for payload bodies when\n * the service accepts it (currently supported in S3 and SQS only).\n *\n * @!attribute convertResponseTypes\n * @return [Boolean] whether types are converted when parsing response data.\n * Currently only supported for JSON based services. Turning this off may\n * improve performance on large response payloads. Defaults to `true`.\n *\n * @!attribute correctClockSkew\n * @return [Boolean] whether to apply a clock skew correction and retry\n * requests that fail because of an skewed client clock. Defaults to\n * `false`.\n *\n * @!attribute sslEnabled\n * @return [Boolean] whether SSL is enabled for requests\n *\n * @!attribute s3ForcePathStyle\n * @return [Boolean] whether to force path style URLs for S3 objects\n *\n * @!attribute s3BucketEndpoint\n * @note Setting this configuration option requires an `endpoint` to be\n * provided explicitly to the service constructor.\n * @return [Boolean] whether the provided endpoint addresses an individual\n * bucket (false if it addresses the root API endpoint).\n *\n * @!attribute s3DisableBodySigning\n * @return [Boolean] whether to disable S3 body signing when using signature version `v4`.\n * Body signing can only be disabled when using https. Defaults to `true`.\n *\n * @!attribute s3UsEast1RegionalEndpoint\n * @return ['legacy'|'regional'] when region is set to 'us-east-1', whether to send s3\n * request to global endpoints or 'us-east-1' regional endpoints. This config is only\n * applicable to S3 client;\n * Defaults to 'legacy'\n * @!attribute s3UseArnRegion\n * @return [Boolean] whether to override the request region with the region inferred\n * from requested resource's ARN. Only available for S3 buckets\n * Defaults to `true`\n *\n * @!attribute useAccelerateEndpoint\n * @note This configuration option is only compatible with S3 while accessing\n * dns-compatible buckets.\n * @return [Boolean] Whether to use the Accelerate endpoint with the S3 service.\n * Defaults to `false`.\n *\n * @!attribute retryDelayOptions\n * @example Set the base retry delay for all services to 300 ms\n * AWS.config.update({retryDelayOptions: {base: 300}});\n * // Delays with maxRetries = 3: 300, 600, 1200\n * @example Set a custom backoff function to provide delay values on retries\n * AWS.config.update({retryDelayOptions: {customBackoff: function(retryCount, err) {\n * // returns delay in ms\n * }}});\n * @return [map] A set of options to configure the retry delay on retryable errors.\n * Currently supported options are:\n *\n * * **base** [Integer] — The base number of milliseconds to use in the\n * exponential backoff for operation retries. Defaults to 100 ms for all services except\n * DynamoDB, where it defaults to 50ms.\n *\n * * **customBackoff ** [function] — A custom function that accepts a\n * retry count and error and returns the amount of time to delay in\n * milliseconds. If the result is a non-zero negative value, no further\n * retry attempts will be made. The `base` option will be ignored if this\n * option is supplied. The function is only called for retryable errors.\n *\n * @!attribute httpOptions\n * @return [map] A set of options to pass to the low-level HTTP request.\n * Currently supported options are:\n *\n * * **proxy** [String] — the URL to proxy requests through\n * * **agent** [http.Agent, https.Agent] — the Agent object to perform\n * HTTP requests with. Used for connection pooling. Note that for\n * SSL connections, a special Agent object is used in order to enable\n * peer certificate verification. This feature is only supported in the\n * Node.js environment.\n * * **connectTimeout** [Integer] — Sets the socket to timeout after\n * failing to establish a connection with the server after\n * `connectTimeout` milliseconds. This timeout has no effect once a socket\n * connection has been established.\n * * **timeout** [Integer] — The number of milliseconds a request can\n * take before automatically being terminated.\n * Defaults to two minutes (120000).\n * * **xhrAsync** [Boolean] — Whether the SDK will send asynchronous\n * HTTP requests. Used in the browser environment only. Set to false to\n * send requests synchronously. Defaults to true (async on).\n * * **xhrWithCredentials** [Boolean] — Sets the \"withCredentials\"\n * property of an XMLHttpRequest object. Used in the browser environment\n * only. Defaults to false.\n * @!attribute logger\n * @return [#write,#log] an object that responds to .write() (like a stream)\n * or .log() (like the console object) in order to log information about\n * requests\n *\n * @!attribute systemClockOffset\n * @return [Number] an offset value in milliseconds to apply to all signing\n * times. Use this to compensate for clock skew when your system may be\n * out of sync with the service time. Note that this configuration option\n * can only be applied to the global `AWS.config` object and cannot be\n * overridden in service-specific configuration. Defaults to 0 milliseconds.\n *\n * @!attribute signatureVersion\n * @return [String] the signature version to sign requests with (overriding\n * the API configuration). Possible values are: 'v2', 'v3', 'v4'.\n *\n * @!attribute signatureCache\n * @return [Boolean] whether the signature to sign requests with (overriding\n * the API configuration) is cached. Only applies to the signature version 'v4'.\n * Defaults to `true`.\n *\n * @!attribute endpointDiscoveryEnabled\n * @return [Boolean|undefined] whether to call operations with endpoints\n * given by service dynamically. Setting this config to `true` will enable\n * endpoint discovery for all applicable operations. Setting it to `false`\n * will explicitly disable endpoint discovery even though operations that\n * require endpoint discovery will presumably fail. Leaving it to\n * `undefined` means SDK only do endpoint discovery when it's required.\n * Defaults to `undefined`\n *\n * @!attribute endpointCacheSize\n * @return [Number] the size of the global cache storing endpoints from endpoint\n * discovery operations. Once endpoint cache is created, updating this setting\n * cannot change existing cache size.\n * Defaults to 1000\n *\n * @!attribute hostPrefixEnabled\n * @return [Boolean] whether to marshal request parameters to the prefix of\n * hostname. Defaults to `true`.\n *\n * @!attribute stsRegionalEndpoints\n * @return ['legacy'|'regional'] whether to send sts request to global endpoints or\n * regional endpoints.\n * Defaults to 'legacy'.\n *\n * @!attribute useFipsEndpoint\n * @return [Boolean] Enables FIPS compatible endpoints. Defaults to `false`.\n *\n * @!attribute useDualstackEndpoint\n * @return [Boolean] Enables IPv6 dualstack endpoint. Defaults to `false`.\n */\nAWS.Config = AWS.util.inherit({\n /**\n * @!endgroup\n */\n\n /**\n * Creates a new configuration object. This is the object that passes\n * option data along to service requests, including credentials, security,\n * region information, and some service specific settings.\n *\n * @example Creating a new configuration object with credentials and region\n * var config = new AWS.Config({\n * accessKeyId: 'AKID', secretAccessKey: 'SECRET', region: 'us-west-2'\n * });\n * @option options accessKeyId [String] your AWS access key ID.\n * @option options secretAccessKey [String] your AWS secret access key.\n * @option options sessionToken [AWS.Credentials] the optional AWS\n * session token to sign requests with.\n * @option options credentials [AWS.Credentials] the AWS credentials\n * to sign requests with. You can either specify this object, or\n * specify the accessKeyId and secretAccessKey options directly.\n * @option options credentialProvider [AWS.CredentialProviderChain] the\n * provider chain used to resolve credentials if no static `credentials`\n * property is set.\n * @option options region [String] the region to send service requests to.\n * See {region} for more information.\n * @option options maxRetries [Integer] the maximum amount of retries to\n * attempt with a request. See {maxRetries} for more information.\n * @option options maxRedirects [Integer] the maximum amount of redirects to\n * follow with a request. See {maxRedirects} for more information.\n * @option options sslEnabled [Boolean] whether to enable SSL for\n * requests.\n * @option options paramValidation [Boolean|map] whether input parameters\n * should be validated against the operation description before sending\n * the request. Defaults to true. Pass a map to enable any of the\n * following specific validation features:\n *\n * * **min** [Boolean] — Validates that a value meets the min\n * constraint. This is enabled by default when paramValidation is set\n * to `true`.\n * * **max** [Boolean] — Validates that a value meets the max\n * constraint.\n * * **pattern** [Boolean] — Validates that a string value matches a\n * regular expression.\n * * **enum** [Boolean] — Validates that a string value matches one\n * of the allowable enum values.\n * @option options computeChecksums [Boolean] whether to compute checksums\n * for payload bodies when the service accepts it (currently supported\n * in S3 only)\n * @option options convertResponseTypes [Boolean] whether types are converted\n * when parsing response data. Currently only supported for JSON based\n * services. Turning this off may improve performance on large response\n * payloads. Defaults to `true`.\n * @option options correctClockSkew [Boolean] whether to apply a clock skew\n * correction and retry requests that fail because of an skewed client\n * clock. Defaults to `false`.\n * @option options s3ForcePathStyle [Boolean] whether to force path\n * style URLs for S3 objects.\n * @option options s3BucketEndpoint [Boolean] whether the provided endpoint\n * addresses an individual bucket (false if it addresses the root API\n * endpoint). Note that setting this configuration option requires an\n * `endpoint` to be provided explicitly to the service constructor.\n * @option options s3DisableBodySigning [Boolean] whether S3 body signing\n * should be disabled when using signature version `v4`. Body signing\n * can only be disabled when using https. Defaults to `true`.\n * @option options s3UsEast1RegionalEndpoint ['legacy'|'regional'] when region\n * is set to 'us-east-1', whether to send s3 request to global endpoints or\n * 'us-east-1' regional endpoints. This config is only applicable to S3 client.\n * Defaults to `legacy`\n * @option options s3UseArnRegion [Boolean] whether to override the request region\n * with the region inferred from requested resource's ARN. Only available for S3 buckets\n * Defaults to `true`\n *\n * @option options retryDelayOptions [map] A set of options to configure\n * the retry delay on retryable errors. Currently supported options are:\n *\n * * **base** [Integer] — The base number of milliseconds to use in the\n * exponential backoff for operation retries. Defaults to 100 ms for all\n * services except DynamoDB, where it defaults to 50ms.\n * * **customBackoff ** [function] — A custom function that accepts a\n * retry count and error and returns the amount of time to delay in\n * milliseconds. If the result is a non-zero negative value, no further\n * retry attempts will be made. The `base` option will be ignored if this\n * option is supplied. The function is only called for retryable errors.\n * @option options httpOptions [map] A set of options to pass to the low-level\n * HTTP request. Currently supported options are:\n *\n * * **proxy** [String] — the URL to proxy requests through\n * * **agent** [http.Agent, https.Agent] — the Agent object to perform\n * HTTP requests with. Used for connection pooling. Defaults to the global\n * agent (`http.globalAgent`) for non-SSL connections. Note that for\n * SSL connections, a special Agent object is used in order to enable\n * peer certificate verification. This feature is only available in the\n * Node.js environment.\n * * **connectTimeout** [Integer] — Sets the socket to timeout after\n * failing to establish a connection with the server after\n * `connectTimeout` milliseconds. This timeout has no effect once a socket\n * connection has been established.\n * * **timeout** [Integer] — Sets the socket to timeout after timeout\n * milliseconds of inactivity on the socket. Defaults to two minutes\n * (120000).\n * * **xhrAsync** [Boolean] — Whether the SDK will send asynchronous\n * HTTP requests. Used in the browser environment only. Set to false to\n * send requests synchronously. Defaults to true (async on).\n * * **xhrWithCredentials** [Boolean] — Sets the \"withCredentials\"\n * property of an XMLHttpRequest object. Used in the browser environment\n * only. Defaults to false.\n * @option options apiVersion [String, Date] a String in YYYY-MM-DD format\n * (or a date) that represents the latest possible API version that can be\n * used in all services (unless overridden by `apiVersions`). Specify\n * 'latest' to use the latest possible version.\n * @option options apiVersions [map] a map of service\n * identifiers (the lowercase service class name) with the API version to\n * use when instantiating a service. Specify 'latest' for each individual\n * that can use the latest available version.\n * @option options logger [#write,#log] an object that responds to .write()\n * (like a stream) or .log() (like the console object) in order to log\n * information about requests\n * @option options systemClockOffset [Number] an offset value in milliseconds\n * to apply to all signing times. Use this to compensate for clock skew\n * when your system may be out of sync with the service time. Note that\n * this configuration option can only be applied to the global `AWS.config`\n * object and cannot be overridden in service-specific configuration.\n * Defaults to 0 milliseconds.\n * @option options signatureVersion [String] the signature version to sign\n * requests with (overriding the API configuration). Possible values are:\n * 'v2', 'v3', 'v4'.\n * @option options signatureCache [Boolean] whether the signature to sign\n * requests with (overriding the API configuration) is cached. Only applies\n * to the signature version 'v4'. Defaults to `true`.\n * @option options dynamoDbCrc32 [Boolean] whether to validate the CRC32\n * checksum of HTTP response bodies returned by DynamoDB. Default: `true`.\n * @option options useAccelerateEndpoint [Boolean] Whether to use the\n * S3 Transfer Acceleration endpoint with the S3 service. Default: `false`.\n * @option options clientSideMonitoring [Boolean] whether to collect and\n * publish this client's performance metrics of all its API requests.\n * @option options endpointDiscoveryEnabled [Boolean|undefined] whether to\n * call operations with endpoints given by service dynamically. Setting this\n * config to `true` will enable endpoint discovery for all applicable operations.\n * Setting it to `false` will explicitly disable endpoint discovery even though\n * operations that require endpoint discovery will presumably fail. Leaving it\n * to `undefined` means SDK will only do endpoint discovery when it's required.\n * Defaults to `undefined`\n * @option options endpointCacheSize [Number] the size of the global cache storing\n * endpoints from endpoint discovery operations. Once endpoint cache is created,\n * updating this setting cannot change existing cache size.\n * Defaults to 1000\n * @option options hostPrefixEnabled [Boolean] whether to marshal request\n * parameters to the prefix of hostname.\n * Defaults to `true`.\n * @option options stsRegionalEndpoints ['legacy'|'regional'] whether to send sts request\n * to global endpoints or regional endpoints.\n * Defaults to 'legacy'.\n * @option options useFipsEndpoint [Boolean] Enables FIPS compatible endpoints.\n * Defaults to `false`.\n * @option options useDualstackEndpoint [Boolean] Enables IPv6 dualstack endpoint.\n * Defaults to `false`.\n */\n constructor: function Config(options) {\n if (options === undefined) options = {};\n options = this.extractCredentials(options);\n\n AWS.util.each.call(this, this.keys, function (key, value) {\n this.set(key, options[key], value);\n });\n },\n\n /**\n * @!group Managing Credentials\n */\n\n /**\n * Loads credentials from the configuration object. This is used internally\n * by the SDK to ensure that refreshable {Credentials} objects are properly\n * refreshed and loaded when sending a request. If you want to ensure that\n * your credentials are loaded prior to a request, you can use this method\n * directly to provide accurate credential data stored in the object.\n *\n * @note If you configure the SDK with static or environment credentials,\n * the credential data should already be present in {credentials} attribute.\n * This method is primarily necessary to load credentials from asynchronous\n * sources, or sources that can refresh credentials periodically.\n * @example Getting your access key\n * AWS.config.getCredentials(function(err) {\n * if (err) console.log(err.stack); // credentials not loaded\n * else console.log(\"Access Key:\", AWS.config.credentials.accessKeyId);\n * })\n * @callback callback function(err)\n * Called when the {credentials} have been properly set on the configuration\n * object.\n *\n * @param err [Error] if this is set, credentials were not successfully\n * loaded and this error provides information why.\n * @see credentials\n * @see Credentials\n */\n getCredentials: function getCredentials(callback) {\n var self = this;\n\n function finish(err) {\n callback(err, err ? null : self.credentials);\n }\n\n function credError(msg, err) {\n return new AWS.util.error(err || new Error(), {\n code: 'CredentialsError',\n message: msg,\n name: 'CredentialsError'\n });\n }\n\n function getAsyncCredentials() {\n self.credentials.get(function(err) {\n if (err) {\n var msg = 'Could not load credentials from ' +\n self.credentials.constructor.name;\n err = credError(msg, err);\n }\n finish(err);\n });\n }\n\n function getStaticCredentials() {\n var err = null;\n if (!self.credentials.accessKeyId || !self.credentials.secretAccessKey) {\n err = credError('Missing credentials');\n }\n finish(err);\n }\n\n if (self.credentials) {\n if (typeof self.credentials.get === 'function') {\n getAsyncCredentials();\n } else { // static credentials\n getStaticCredentials();\n }\n } else if (self.credentialProvider) {\n self.credentialProvider.resolve(function(err, creds) {\n if (err) {\n err = credError('Could not load credentials from any providers', err);\n }\n self.credentials = creds;\n finish(err);\n });\n } else {\n finish(credError('No credentials to load'));\n }\n },\n\n /**\n * Loads token from the configuration object. This is used internally\n * by the SDK to ensure that refreshable {Token} objects are properly\n * refreshed and loaded when sending a request. If you want to ensure that\n * your token is loaded prior to a request, you can use this method\n * directly to provide accurate token data stored in the object.\n *\n * @note If you configure the SDK with static token, the token data should\n * already be present in {token} attribute. This method is primarily necessary\n * to load token from asynchronous sources, or sources that can refresh\n * token periodically.\n * @example Getting your access token\n * AWS.config.getToken(function(err) {\n * if (err) console.log(err.stack); // token not loaded\n * else console.log(\"Token:\", AWS.config.token.token);\n * })\n * @callback callback function(err)\n * Called when the {token} have been properly set on the configuration object.\n *\n * @param err [Error] if this is set, token was not successfully loaded and\n * this error provides information why.\n * @see token\n */\n getToken: function getToken(callback) {\n var self = this;\n\n function finish(err) {\n callback(err, err ? null : self.token);\n }\n\n function tokenError(msg, err) {\n return new AWS.util.error(err || new Error(), {\n code: 'TokenError',\n message: msg,\n name: 'TokenError'\n });\n }\n\n function getAsyncToken() {\n self.token.get(function(err) {\n if (err) {\n var msg = 'Could not load token from ' +\n self.token.constructor.name;\n err = tokenError(msg, err);\n }\n finish(err);\n });\n }\n\n function getStaticToken() {\n var err = null;\n if (!self.token.token) {\n err = tokenError('Missing token');\n }\n finish(err);\n }\n\n if (self.token) {\n if (typeof self.token.get === 'function') {\n getAsyncToken();\n } else { // static token\n getStaticToken();\n }\n } else if (self.tokenProvider) {\n self.tokenProvider.resolve(function(err, token) {\n if (err) {\n err = tokenError('Could not load token from any providers', err);\n }\n self.token = token;\n finish(err);\n });\n } else {\n finish(tokenError('No token to load'));\n }\n },\n\n /**\n * @!group Loading and Setting Configuration Options\n */\n\n /**\n * @overload update(options, allowUnknownKeys = false)\n * Updates the current configuration object with new options.\n *\n * @example Update maxRetries property of a configuration object\n * config.update({maxRetries: 10});\n * @param [Object] options a map of option keys and values.\n * @param [Boolean] allowUnknownKeys whether unknown keys can be set on\n * the configuration object. Defaults to `false`.\n * @see constructor\n */\n update: function update(options, allowUnknownKeys) {\n allowUnknownKeys = allowUnknownKeys || false;\n options = this.extractCredentials(options);\n AWS.util.each.call(this, options, function (key, value) {\n if (allowUnknownKeys || Object.prototype.hasOwnProperty.call(this.keys, key) ||\n AWS.Service.hasService(key)) {\n this.set(key, value);\n }\n });\n },\n\n /**\n * Loads configuration data from a JSON file into this config object.\n * @note Loading configuration will reset all existing configuration\n * on the object.\n * @!macro nobrowser\n * @param path [String] the path relative to your process's current\n * working directory to load configuration from.\n * @return [AWS.Config] the same configuration object\n */\n loadFromPath: function loadFromPath(path) {\n this.clear();\n\n var options = JSON.parse(AWS.util.readFileSync(path));\n var fileSystemCreds = new AWS.FileSystemCredentials(path);\n var chain = new AWS.CredentialProviderChain();\n chain.providers.unshift(fileSystemCreds);\n chain.resolve(function (err, creds) {\n if (err) throw err;\n else options.credentials = creds;\n });\n\n this.constructor(options);\n\n return this;\n },\n\n /**\n * Clears configuration data on this object\n *\n * @api private\n */\n clear: function clear() {\n /*jshint forin:false */\n AWS.util.each.call(this, this.keys, function (key) {\n delete this[key];\n });\n\n // reset credential provider\n this.set('credentials', undefined);\n this.set('credentialProvider', undefined);\n },\n\n /**\n * Sets a property on the configuration object, allowing for a\n * default value\n * @api private\n */\n set: function set(property, value, defaultValue) {\n if (value === undefined) {\n if (defaultValue === undefined) {\n defaultValue = this.keys[property];\n }\n if (typeof defaultValue === 'function') {\n this[property] = defaultValue.call(this);\n } else {\n this[property] = defaultValue;\n }\n } else if (property === 'httpOptions' && this[property]) {\n // deep merge httpOptions\n this[property] = AWS.util.merge(this[property], value);\n } else {\n this[property] = value;\n }\n },\n\n /**\n * All of the keys with their default values.\n *\n * @constant\n * @api private\n */\n keys: {\n credentials: null,\n credentialProvider: null,\n region: null,\n logger: null,\n apiVersions: {},\n apiVersion: null,\n endpoint: undefined,\n httpOptions: {\n timeout: 120000\n },\n maxRetries: undefined,\n maxRedirects: 10,\n paramValidation: true,\n sslEnabled: true,\n s3ForcePathStyle: false,\n s3BucketEndpoint: false,\n s3DisableBodySigning: true,\n s3UsEast1RegionalEndpoint: 'legacy',\n s3UseArnRegion: undefined,\n computeChecksums: true,\n convertResponseTypes: true,\n correctClockSkew: false,\n customUserAgent: null,\n dynamoDbCrc32: true,\n systemClockOffset: 0,\n signatureVersion: null,\n signatureCache: true,\n retryDelayOptions: {},\n useAccelerateEndpoint: false,\n clientSideMonitoring: false,\n endpointDiscoveryEnabled: undefined,\n endpointCacheSize: 1000,\n hostPrefixEnabled: true,\n stsRegionalEndpoints: 'legacy',\n useFipsEndpoint: false,\n useDualstackEndpoint: false,\n token: null\n },\n\n /**\n * Extracts accessKeyId, secretAccessKey and sessionToken\n * from a configuration hash.\n *\n * @api private\n */\n extractCredentials: function extractCredentials(options) {\n if (options.accessKeyId && options.secretAccessKey) {\n options = AWS.util.copy(options);\n options.credentials = new AWS.Credentials(options);\n }\n return options;\n },\n\n /**\n * Sets the promise dependency the SDK will use wherever Promises are returned.\n * Passing `null` will force the SDK to use native Promises if they are available.\n * If native Promises are not available, passing `null` will have no effect.\n * @param [Constructor] dep A reference to a Promise constructor\n */\n setPromisesDependency: function setPromisesDependency(dep) {\n PromisesDependency = dep;\n // if null was passed in, we should try to use native promises\n if (dep === null && typeof Promise === 'function') {\n PromisesDependency = Promise;\n }\n var constructors = [AWS.Request, AWS.Credentials, AWS.CredentialProviderChain];\n if (AWS.S3) {\n constructors.push(AWS.S3);\n if (AWS.S3.ManagedUpload) {\n constructors.push(AWS.S3.ManagedUpload);\n }\n }\n AWS.util.addPromises(constructors, PromisesDependency);\n },\n\n /**\n * Gets the promise dependency set by `AWS.config.setPromisesDependency`.\n */\n getPromisesDependency: function getPromisesDependency() {\n return PromisesDependency;\n }\n});\n\n/**\n * @return [AWS.Config] The global configuration object singleton instance\n * @readonly\n * @see AWS.Config\n */\nAWS.config = new AWS.Config();\n","var AWS = require('./core');\n/**\n * @api private\n */\nfunction validateRegionalEndpointsFlagValue(configValue, errorOptions) {\n if (typeof configValue !== 'string') return undefined;\n else if (['legacy', 'regional'].indexOf(configValue.toLowerCase()) >= 0) {\n return configValue.toLowerCase();\n } else {\n throw AWS.util.error(new Error(), errorOptions);\n }\n}\n\n/**\n * Resolve the configuration value for regional endpoint from difference sources: client\n * config, environmental variable, shared config file. Value can be case-insensitive\n * 'legacy' or 'reginal'.\n * @param originalConfig user-supplied config object to resolve\n * @param options a map of config property names from individual configuration source\n * - env: name of environmental variable that refers to the config\n * - sharedConfig: name of shared configuration file property that refers to the config\n * - clientConfig: name of client configuration property that refers to the config\n *\n * @api private\n */\nfunction resolveRegionalEndpointsFlag(originalConfig, options) {\n originalConfig = originalConfig || {};\n //validate config value\n var resolved;\n if (originalConfig[options.clientConfig]) {\n resolved = validateRegionalEndpointsFlagValue(originalConfig[options.clientConfig], {\n code: 'InvalidConfiguration',\n message: 'invalid \"' + options.clientConfig + '\" configuration. Expect \"legacy\" ' +\n ' or \"regional\". Got \"' + originalConfig[options.clientConfig] + '\".'\n });\n if (resolved) return resolved;\n }\n if (!AWS.util.isNode()) return resolved;\n //validate environmental variable\n if (Object.prototype.hasOwnProperty.call(process.env, options.env)) {\n var envFlag = process.env[options.env];\n resolved = validateRegionalEndpointsFlagValue(envFlag, {\n code: 'InvalidEnvironmentalVariable',\n message: 'invalid ' + options.env + ' environmental variable. Expect \"legacy\" ' +\n ' or \"regional\". Got \"' + process.env[options.env] + '\".'\n });\n if (resolved) return resolved;\n }\n //validate shared config file\n var profile = {};\n try {\n var profiles = AWS.util.getProfilesFromSharedConfig(AWS.util.iniLoader);\n profile = profiles[process.env.AWS_PROFILE || AWS.util.defaultProfile];\n } catch (e) {};\n if (profile && Object.prototype.hasOwnProperty.call(profile, options.sharedConfig)) {\n var fileFlag = profile[options.sharedConfig];\n resolved = validateRegionalEndpointsFlagValue(fileFlag, {\n code: 'InvalidConfiguration',\n message: 'invalid ' + options.sharedConfig + ' profile config. Expect \"legacy\" ' +\n ' or \"regional\". Got \"' + profile[options.sharedConfig] + '\".'\n });\n if (resolved) return resolved;\n }\n return resolved;\n}\n\nmodule.exports = resolveRegionalEndpointsFlag;\n","/**\n * The main AWS namespace\n */\nvar AWS = { util: require('./util') };\n\n/**\n * @api private\n * @!macro [new] nobrowser\n * @note This feature is not supported in the browser environment of the SDK.\n */\nvar _hidden = {}; _hidden.toString(); // hack to parse macro\n\n/**\n * @api private\n */\nmodule.exports = AWS;\n\nAWS.util.update(AWS, {\n\n /**\n * @constant\n */\n VERSION: '2.1659.0',\n\n /**\n * @api private\n */\n Signers: {},\n\n /**\n * @api private\n */\n Protocol: {\n Json: require('./protocol/json'),\n Query: require('./protocol/query'),\n Rest: require('./protocol/rest'),\n RestJson: require('./protocol/rest_json'),\n RestXml: require('./protocol/rest_xml')\n },\n\n /**\n * @api private\n */\n XML: {\n Builder: require('./xml/builder'),\n Parser: null // conditionally set based on environment\n },\n\n /**\n * @api private\n */\n JSON: {\n Builder: require('./json/builder'),\n Parser: require('./json/parser')\n },\n\n /**\n * @api private\n */\n Model: {\n Api: require('./model/api'),\n Operation: require('./model/operation'),\n Shape: require('./model/shape'),\n Paginator: require('./model/paginator'),\n ResourceWaiter: require('./model/resource_waiter')\n },\n\n /**\n * @api private\n */\n apiLoader: require('./api_loader'),\n\n /**\n * @api private\n */\n EndpointCache: require('../vendor/endpoint-cache').EndpointCache\n});\nrequire('./sequential_executor');\nrequire('./service');\nrequire('./config');\nrequire('./http');\nrequire('./event_listeners');\nrequire('./request');\nrequire('./response');\nrequire('./resource_waiter');\nrequire('./signers/request_signer');\nrequire('./param_validator');\nrequire('./maintenance_mode_message');\n\n/**\n * @readonly\n * @return [AWS.SequentialExecutor] a collection of global event listeners that\n * are attached to every sent request.\n * @see AWS.Request AWS.Request for a list of events to listen for\n * @example Logging the time taken to send a request\n * AWS.events.on('send', function startSend(resp) {\n * resp.startTime = new Date().getTime();\n * }).on('complete', function calculateTime(resp) {\n * var time = (new Date().getTime() - resp.startTime) / 1000;\n * console.log('Request took ' + time + ' seconds');\n * });\n *\n * new AWS.S3().listBuckets(); // prints 'Request took 0.285 seconds'\n */\nAWS.events = new AWS.SequentialExecutor();\n\n//create endpoint cache lazily\nAWS.util.memoizedProperty(AWS, 'endpointCache', function() {\n return new AWS.EndpointCache(AWS.config.endpointCacheSize);\n}, true);\n","var AWS = require('./core');\n\n/**\n * Represents your AWS security credentials, specifically the\n * {accessKeyId}, {secretAccessKey}, and optional {sessionToken}.\n * Creating a `Credentials` object allows you to pass around your\n * security information to configuration and service objects.\n *\n * Note that this class typically does not need to be constructed manually,\n * as the {AWS.Config} and {AWS.Service} classes both accept simple\n * options hashes with the three keys. These structures will be converted\n * into Credentials objects automatically.\n *\n * ## Expiring and Refreshing Credentials\n *\n * Occasionally credentials can expire in the middle of a long-running\n * application. In this case, the SDK will automatically attempt to\n * refresh the credentials from the storage location if the Credentials\n * class implements the {refresh} method.\n *\n * If you are implementing a credential storage location, you\n * will want to create a subclass of the `Credentials` class and\n * override the {refresh} method. This method allows credentials to be\n * retrieved from the backing store, be it a file system, database, or\n * some network storage. The method should reset the credential attributes\n * on the object.\n *\n * @!attribute expired\n * @return [Boolean] whether the credentials have been expired and\n * require a refresh. Used in conjunction with {expireTime}.\n * @!attribute expireTime\n * @return [Date] a time when credentials should be considered expired. Used\n * in conjunction with {expired}.\n * @!attribute accessKeyId\n * @return [String] the AWS access key ID\n * @!attribute secretAccessKey\n * @return [String] the AWS secret access key\n * @!attribute sessionToken\n * @return [String] an optional AWS session token\n */\nAWS.Credentials = AWS.util.inherit({\n /**\n * A credentials object can be created using positional arguments or an options\n * hash.\n *\n * @overload AWS.Credentials(accessKeyId, secretAccessKey, sessionToken=null)\n * Creates a Credentials object with a given set of credential information\n * as positional arguments.\n * @param accessKeyId [String] the AWS access key ID\n * @param secretAccessKey [String] the AWS secret access key\n * @param sessionToken [String] the optional AWS session token\n * @example Create a credentials object with AWS credentials\n * var creds = new AWS.Credentials('akid', 'secret', 'session');\n * @overload AWS.Credentials(options)\n * Creates a Credentials object with a given set of credential information\n * as an options hash.\n * @option options accessKeyId [String] the AWS access key ID\n * @option options secretAccessKey [String] the AWS secret access key\n * @option options sessionToken [String] the optional AWS session token\n * @example Create a credentials object with AWS credentials\n * var creds = new AWS.Credentials({\n * accessKeyId: 'akid', secretAccessKey: 'secret', sessionToken: 'session'\n * });\n */\n constructor: function Credentials() {\n // hide secretAccessKey from being displayed with util.inspect\n AWS.util.hideProperties(this, ['secretAccessKey']);\n\n this.expired = false;\n this.expireTime = null;\n this.refreshCallbacks = [];\n if (arguments.length === 1 && typeof arguments[0] === 'object') {\n var creds = arguments[0].credentials || arguments[0];\n this.accessKeyId = creds.accessKeyId;\n this.secretAccessKey = creds.secretAccessKey;\n this.sessionToken = creds.sessionToken;\n } else {\n this.accessKeyId = arguments[0];\n this.secretAccessKey = arguments[1];\n this.sessionToken = arguments[2];\n }\n },\n\n /**\n * @return [Integer] the number of seconds before {expireTime} during which\n * the credentials will be considered expired.\n */\n expiryWindow: 15,\n\n /**\n * @return [Boolean] whether the credentials object should call {refresh}\n * @note Subclasses should override this method to provide custom refresh\n * logic.\n */\n needsRefresh: function needsRefresh() {\n var currentTime = AWS.util.date.getDate().getTime();\n var adjustedTime = new Date(currentTime + this.expiryWindow * 1000);\n\n if (this.expireTime && adjustedTime > this.expireTime) {\n return true;\n } else {\n return this.expired || !this.accessKeyId || !this.secretAccessKey;\n }\n },\n\n /**\n * Gets the existing credentials, refreshing them if they are not yet loaded\n * or have expired. Users should call this method before using {refresh},\n * as this will not attempt to reload credentials when they are already\n * loaded into the object.\n *\n * @callback callback function(err)\n * When this callback is called with no error, it means either credentials\n * do not need to be refreshed or refreshed credentials information has\n * been loaded into the object (as the `accessKeyId`, `secretAccessKey`,\n * and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n */\n get: function get(callback) {\n var self = this;\n if (this.needsRefresh()) {\n this.refresh(function(err) {\n if (!err) self.expired = false; // reset expired flag\n if (callback) callback(err);\n });\n } else if (callback) {\n callback();\n }\n },\n\n /**\n * @!method getPromise()\n * Returns a 'thenable' promise.\n * Gets the existing credentials, refreshing them if they are not yet loaded\n * or have expired. Users should call this method before using {refresh},\n * as this will not attempt to reload credentials when they are already\n * loaded into the object.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function()\n * Called if the promise is fulfilled. When this callback is called, it\n * means either credentials do not need to be refreshed or refreshed\n * credentials information has been loaded into the object (as the\n * `accessKeyId`, `secretAccessKey`, and `sessionToken` properties).\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] if an error occurred, this value will be filled\n * @return [Promise] A promise that represents the state of the `get` call.\n * @example Calling the `getPromise` method.\n * var promise = credProvider.getPromise();\n * promise.then(function() { ... }, function(err) { ... });\n */\n\n /**\n * @!method refreshPromise()\n * Returns a 'thenable' promise.\n * Refreshes the credentials. Users should call {get} before attempting\n * to forcibly refresh credentials.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function()\n * Called if the promise is fulfilled. When this callback is called, it\n * means refreshed credentials information has been loaded into the object\n * (as the `accessKeyId`, `secretAccessKey`, and `sessionToken` properties).\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] if an error occurred, this value will be filled\n * @return [Promise] A promise that represents the state of the `refresh` call.\n * @example Calling the `refreshPromise` method.\n * var promise = credProvider.refreshPromise();\n * promise.then(function() { ... }, function(err) { ... });\n */\n\n /**\n * Refreshes the credentials. Users should call {get} before attempting\n * to forcibly refresh credentials.\n *\n * @callback callback function(err)\n * When this callback is called with no error, it means refreshed\n * credentials information has been loaded into the object (as the\n * `accessKeyId`, `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @note Subclasses should override this class to reset the\n * {accessKeyId}, {secretAccessKey} and optional {sessionToken}\n * on the credentials object and then call the callback with\n * any error information.\n * @see get\n */\n refresh: function refresh(callback) {\n this.expired = false;\n callback();\n },\n\n /**\n * @api private\n * @param callback\n */\n coalesceRefresh: function coalesceRefresh(callback, sync) {\n var self = this;\n if (self.refreshCallbacks.push(callback) === 1) {\n self.load(function onLoad(err) {\n AWS.util.arrayEach(self.refreshCallbacks, function(callback) {\n if (sync) {\n callback(err);\n } else {\n // callback could throw, so defer to ensure all callbacks are notified\n AWS.util.defer(function () {\n callback(err);\n });\n }\n });\n self.refreshCallbacks.length = 0;\n });\n }\n },\n\n /**\n * @api private\n * @param callback\n */\n load: function load(callback) {\n callback();\n }\n});\n\n/**\n * @api private\n */\nAWS.Credentials.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.getPromise = AWS.util.promisifyMethod('get', PromiseDependency);\n this.prototype.refreshPromise = AWS.util.promisifyMethod('refresh', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.Credentials.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.getPromise;\n delete this.prototype.refreshPromise;\n};\n\nAWS.util.addPromises(AWS.Credentials);\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents temporary credentials retrieved from {AWS.STS}. Without any\n * extra parameters, credentials will be fetched from the\n * {AWS.STS.getSessionToken} operation. If an IAM role is provided, the\n * {AWS.STS.assumeRole} operation will be used to fetch credentials for the\n * role instead.\n *\n * AWS.ChainableTemporaryCredentials differs from AWS.TemporaryCredentials in\n * the way masterCredentials and refreshes are handled.\n * AWS.ChainableTemporaryCredentials refreshes expired credentials using the\n * masterCredentials passed by the user to support chaining of STS credentials.\n * However, AWS.TemporaryCredentials recursively collapses the masterCredentials\n * during instantiation, precluding the ability to refresh credentials which\n * require intermediate, temporary credentials.\n *\n * For example, if the application should use RoleA, which must be assumed from\n * RoleB, and the environment provides credentials which can assume RoleB, then\n * AWS.ChainableTemporaryCredentials must be used to support refreshing the\n * temporary credentials for RoleA:\n *\n * ```javascript\n * var roleACreds = new AWS.ChainableTemporaryCredentials({\n * params: {RoleArn: 'RoleA'},\n * masterCredentials: new AWS.ChainableTemporaryCredentials({\n * params: {RoleArn: 'RoleB'},\n * masterCredentials: new AWS.EnvironmentCredentials('AWS')\n * })\n * });\n * ```\n *\n * If AWS.TemporaryCredentials had been used in the previous example,\n * `roleACreds` would fail to refresh because `roleACreds` would\n * use the environment credentials for the AssumeRole request.\n *\n * Another difference is that AWS.ChainableTemporaryCredentials creates the STS\n * service instance during instantiation while AWS.TemporaryCredentials creates\n * the STS service instance during the first refresh. Creating the service\n * instance during instantiation effectively captures the master credentials\n * from the global config, so that subsequent changes to the global config do\n * not affect the master credentials used to refresh the temporary credentials.\n *\n * This allows an instance of AWS.ChainableTemporaryCredentials to be assigned\n * to AWS.config.credentials:\n *\n * ```javascript\n * var envCreds = new AWS.EnvironmentCredentials('AWS');\n * AWS.config.credentials = envCreds;\n * // masterCredentials will be envCreds\n * AWS.config.credentials = new AWS.ChainableTemporaryCredentials({\n * params: {RoleArn: '...'}\n * });\n * ```\n *\n * Similarly, to use the CredentialProviderChain's default providers as the\n * master credentials, simply create a new instance of\n * AWS.ChainableTemporaryCredentials:\n *\n * ```javascript\n * AWS.config.credentials = new ChainableTemporaryCredentials({\n * params: {RoleArn: '...'}\n * });\n * ```\n *\n * @!attribute service\n * @return [AWS.STS] the STS service instance used to\n * get and refresh temporary credentials from AWS STS.\n * @note (see constructor)\n */\nAWS.ChainableTemporaryCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new temporary credentials object.\n *\n * @param options [map] a set of options\n * @option options params [map] ({}) a map of options that are passed to the\n * {AWS.STS.assumeRole} or {AWS.STS.getSessionToken} operations.\n * If a `RoleArn` parameter is passed in, credentials will be based on the\n * IAM role. If a `SerialNumber` parameter is passed in, {tokenCodeFn} must\n * also be passed in or an error will be thrown.\n * @option options masterCredentials [AWS.Credentials] the master credentials\n * used to get and refresh temporary credentials from AWS STS. By default,\n * AWS.config.credentials or AWS.config.credentialProvider will be used.\n * @option options tokenCodeFn [Function] (null) Function to provide\n * `TokenCode`, if `SerialNumber` is provided for profile in {params}. Function\n * is called with value of `SerialNumber` and `callback`, and should provide\n * the `TokenCode` or an error to the callback in the format\n * `callback(err, token)`.\n * @example Creating a new credentials object for generic temporary credentials\n * AWS.config.credentials = new AWS.ChainableTemporaryCredentials();\n * @example Creating a new credentials object for an IAM role\n * AWS.config.credentials = new AWS.ChainableTemporaryCredentials({\n * params: {\n * RoleArn: 'arn:aws:iam::1234567890:role/TemporaryCredentials'\n * }\n * });\n * @see AWS.STS.assumeRole\n * @see AWS.STS.getSessionToken\n */\n constructor: function ChainableTemporaryCredentials(options) {\n AWS.Credentials.call(this);\n options = options || {};\n this.errorCode = 'ChainableTemporaryCredentialsProviderFailure';\n this.expired = true;\n this.tokenCodeFn = null;\n\n var params = AWS.util.copy(options.params) || {};\n if (params.RoleArn) {\n params.RoleSessionName = params.RoleSessionName || 'temporary-credentials';\n }\n if (params.SerialNumber) {\n if (!options.tokenCodeFn || (typeof options.tokenCodeFn !== 'function')) {\n throw new AWS.util.error(\n new Error('tokenCodeFn must be a function when params.SerialNumber is given'),\n {code: this.errorCode}\n );\n } else {\n this.tokenCodeFn = options.tokenCodeFn;\n }\n }\n var config = AWS.util.merge(\n {\n params: params,\n credentials: options.masterCredentials || AWS.config.credentials\n },\n options.stsConfig || {}\n );\n this.service = new STS(config);\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRole} or\n * {AWS.STS.getSessionToken}, depending on whether an IAM role ARN was passed\n * to the credentials {constructor}.\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see AWS.Credentials.get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n * @param callback\n */\n load: function load(callback) {\n var self = this;\n var operation = self.service.config.params.RoleArn ? 'assumeRole' : 'getSessionToken';\n this.getTokenCode(function (err, tokenCode) {\n var params = {};\n if (err) {\n callback(err);\n return;\n }\n if (tokenCode) {\n params.TokenCode = tokenCode;\n }\n self.service[operation](params, function (err, data) {\n if (!err) {\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n });\n },\n\n /**\n * @api private\n */\n getTokenCode: function getTokenCode(callback) {\n var self = this;\n if (this.tokenCodeFn) {\n this.tokenCodeFn(this.service.config.params.SerialNumber, function (err, token) {\n if (err) {\n var message = err;\n if (err instanceof Error) {\n message = err.message;\n }\n callback(\n AWS.util.error(\n new Error('Error fetching MFA token: ' + message),\n { code: self.errorCode}\n )\n );\n return;\n }\n callback(null, token);\n });\n } else {\n callback(null);\n }\n }\n});\n","var AWS = require('../core');\nvar CognitoIdentity = require('../../clients/cognitoidentity');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents credentials retrieved from STS Web Identity Federation using\n * the Amazon Cognito Identity service.\n *\n * By default this provider gets credentials using the\n * {AWS.CognitoIdentity.getCredentialsForIdentity} service operation, which\n * requires either an `IdentityId` or an `IdentityPoolId` (Amazon Cognito\n * Identity Pool ID), which is used to call {AWS.CognitoIdentity.getId} to\n * obtain an `IdentityId`. If the identity or identity pool is not configured in\n * the Amazon Cognito Console to use IAM roles with the appropriate permissions,\n * then additionally a `RoleArn` is required containing the ARN of the IAM trust\n * policy for the Amazon Cognito role that the user will log into. If a `RoleArn`\n * is provided, then this provider gets credentials using the\n * {AWS.STS.assumeRoleWithWebIdentity} service operation, after first getting an\n * Open ID token from {AWS.CognitoIdentity.getOpenIdToken}.\n *\n * In addition, if this credential provider is used to provide authenticated\n * login, the `Logins` map may be set to the tokens provided by the respective\n * identity providers. See {constructor} for an example on creating a credentials\n * object with proper property values.\n *\n * DISCLAIMER: This convenience method leverages the Enhanced (simplified) Authflow. The underlying\n * implementation calls Cognito's `getId()` and `GetCredentialsForIdentity()`.\n * In this flow there is no way to explicitly set a session policy, resulting in\n * STS attaching the default policy and limiting the permissions of the federated role.\n * To be able to explicitly set a session policy, do not use this convenience method.\n * Instead, you can use the Cognito client to call `getId()`, `GetOpenIdToken()` and then use\n * that token with your desired session policy to call STS's `AssumeRoleWithWebIdentity()`\n * For further reading refer to: https://docs.aws.amazon.com/cognito/latest/developerguide/authentication-flow.html\n *\n * ## Refreshing Credentials from Identity Service\n *\n * In addition to AWS credentials expiring after a given amount of time, the\n * login token from the identity provider will also expire. Once this token\n * expires, it will not be usable to refresh AWS credentials, and another\n * token will be needed. The SDK does not manage refreshing of the token value,\n * but this can be done through a \"refresh token\" supported by most identity\n * providers. Consult the documentation for the identity provider for refreshing\n * tokens. Once the refreshed token is acquired, you should make sure to update\n * this new token in the credentials object's {params} property. The following\n * code will update the WebIdentityToken, assuming you have retrieved an updated\n * token from the identity provider:\n *\n * ```javascript\n * AWS.config.credentials.params.Logins['graph.facebook.com'] = updatedToken;\n * ```\n *\n * Future calls to `credentials.refresh()` will now use the new token.\n *\n * @!attribute params\n * @return [map] the map of params passed to\n * {AWS.CognitoIdentity.getId},\n * {AWS.CognitoIdentity.getOpenIdToken}, and\n * {AWS.STS.assumeRoleWithWebIdentity}. To update the token, set the\n * `params.WebIdentityToken` property.\n * @!attribute data\n * @return [map] the raw data response from the call to\n * {AWS.CognitoIdentity.getCredentialsForIdentity}, or\n * {AWS.STS.assumeRoleWithWebIdentity}. Use this if you want to get\n * access to other properties from the response.\n * @!attribute identityId\n * @return [String] the Cognito ID returned by the last call to\n * {AWS.CognitoIdentity.getOpenIdToken}. This ID represents the actual\n * final resolved identity ID from Amazon Cognito.\n */\nAWS.CognitoIdentityCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * @api private\n */\n localStorageKey: {\n id: 'aws.cognito.identity-id.',\n providers: 'aws.cognito.identity-providers.'\n },\n\n /**\n * Creates a new credentials object.\n * @example Creating a new credentials object\n * AWS.config.credentials = new AWS.CognitoIdentityCredentials({\n *\n * // either IdentityPoolId or IdentityId is required\n * // See the IdentityPoolId param for AWS.CognitoIdentity.getID (linked below)\n * // See the IdentityId param for AWS.CognitoIdentity.getCredentialsForIdentity\n * // or AWS.CognitoIdentity.getOpenIdToken (linked below)\n * IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030',\n * IdentityId: 'us-east-1:128d0a74-c82f-4553-916d-90053e4a8b0f'\n *\n * // optional, only necessary when the identity pool is not configured\n * // to use IAM roles in the Amazon Cognito Console\n * // See the RoleArn param for AWS.STS.assumeRoleWithWebIdentity (linked below)\n * RoleArn: 'arn:aws:iam::1234567890:role/MYAPP-CognitoIdentity',\n *\n * // optional tokens, used for authenticated login\n * // See the Logins param for AWS.CognitoIdentity.getID (linked below)\n * Logins: {\n * 'graph.facebook.com': 'FBTOKEN',\n * 'www.amazon.com': 'AMAZONTOKEN',\n * 'accounts.google.com': 'GOOGLETOKEN',\n * 'api.twitter.com': 'TWITTERTOKEN',\n * 'www.digits.com': 'DIGITSTOKEN'\n * },\n *\n * // optional name, defaults to web-identity\n * // See the RoleSessionName param for AWS.STS.assumeRoleWithWebIdentity (linked below)\n * RoleSessionName: 'web',\n *\n * // optional, only necessary when application runs in a browser\n * // and multiple users are signed in at once, used for caching\n * LoginId: 'example@gmail.com'\n *\n * }, {\n * // optionally provide configuration to apply to the underlying service clients\n * // if configuration is not provided, then configuration will be pulled from AWS.config\n *\n * // region should match the region your identity pool is located in\n * region: 'us-east-1',\n *\n * // specify timeout options\n * httpOptions: {\n * timeout: 100\n * }\n * });\n * @see AWS.CognitoIdentity.getId\n * @see AWS.CognitoIdentity.getCredentialsForIdentity\n * @see AWS.STS.assumeRoleWithWebIdentity\n * @see AWS.CognitoIdentity.getOpenIdToken\n * @see AWS.Config\n * @note If a region is not provided in the global AWS.config, or\n * specified in the `clientConfig` to the CognitoIdentityCredentials\n * constructor, you may encounter a 'Missing credentials in config' error\n * when calling making a service call.\n */\n constructor: function CognitoIdentityCredentials(params, clientConfig) {\n AWS.Credentials.call(this);\n this.expired = true;\n this.params = params;\n this.data = null;\n this._identityId = null;\n this._clientConfig = AWS.util.copy(clientConfig || {});\n this.loadCachedId();\n var self = this;\n Object.defineProperty(this, 'identityId', {\n get: function() {\n self.loadCachedId();\n return self._identityId || self.params.IdentityId;\n },\n set: function(identityId) {\n self._identityId = identityId;\n }\n });\n },\n\n /**\n * Refreshes credentials using {AWS.CognitoIdentity.getCredentialsForIdentity},\n * or {AWS.STS.assumeRoleWithWebIdentity}.\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see AWS.Credentials.get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n * @param callback\n */\n load: function load(callback) {\n var self = this;\n self.createClients();\n self.data = null;\n self._identityId = null;\n self.getId(function(err) {\n if (!err) {\n if (!self.params.RoleArn) {\n self.getCredentialsForIdentity(callback);\n } else {\n self.getCredentialsFromSTS(callback);\n }\n } else {\n self.clearIdOnNotAuthorized(err);\n callback(err);\n }\n });\n },\n\n /**\n * Clears the cached Cognito ID associated with the currently configured\n * identity pool ID. Use this to manually invalidate your cache if\n * the identity pool ID was deleted.\n */\n clearCachedId: function clearCache() {\n this._identityId = null;\n delete this.params.IdentityId;\n\n var poolId = this.params.IdentityPoolId;\n var loginId = this.params.LoginId || '';\n delete this.storage[this.localStorageKey.id + poolId + loginId];\n delete this.storage[this.localStorageKey.providers + poolId + loginId];\n },\n\n /**\n * @api private\n */\n clearIdOnNotAuthorized: function clearIdOnNotAuthorized(err) {\n var self = this;\n if (err.code == 'NotAuthorizedException') {\n self.clearCachedId();\n }\n },\n\n /**\n * Retrieves a Cognito ID, loading from cache if it was already retrieved\n * on this device.\n *\n * @callback callback function(err, identityId)\n * @param err [Error, null] an error object if the call failed or null if\n * it succeeded.\n * @param identityId [String, null] if successful, the callback will return\n * the Cognito ID.\n * @note If not loaded explicitly, the Cognito ID is loaded and stored in\n * localStorage in the browser environment of a device.\n * @api private\n */\n getId: function getId(callback) {\n var self = this;\n if (typeof self.params.IdentityId === 'string') {\n return callback(null, self.params.IdentityId);\n }\n\n self.cognito.getId(function(err, data) {\n if (!err && data.IdentityId) {\n self.params.IdentityId = data.IdentityId;\n callback(null, data.IdentityId);\n } else {\n callback(err);\n }\n });\n },\n\n\n /**\n * @api private\n */\n loadCredentials: function loadCredentials(data, credentials) {\n if (!data || !credentials) return;\n credentials.expired = false;\n credentials.accessKeyId = data.Credentials.AccessKeyId;\n credentials.secretAccessKey = data.Credentials.SecretKey;\n credentials.sessionToken = data.Credentials.SessionToken;\n credentials.expireTime = data.Credentials.Expiration;\n },\n\n /**\n * @api private\n */\n getCredentialsForIdentity: function getCredentialsForIdentity(callback) {\n var self = this;\n self.cognito.getCredentialsForIdentity(function(err, data) {\n if (!err) {\n self.cacheId(data);\n self.data = data;\n self.loadCredentials(self.data, self);\n } else {\n self.clearIdOnNotAuthorized(err);\n }\n callback(err);\n });\n },\n\n /**\n * @api private\n */\n getCredentialsFromSTS: function getCredentialsFromSTS(callback) {\n var self = this;\n self.cognito.getOpenIdToken(function(err, data) {\n if (!err) {\n self.cacheId(data);\n self.params.WebIdentityToken = data.Token;\n self.webIdentityCredentials.refresh(function(webErr) {\n if (!webErr) {\n self.data = self.webIdentityCredentials.data;\n self.sts.credentialsFrom(self.data, self);\n }\n callback(webErr);\n });\n } else {\n self.clearIdOnNotAuthorized(err);\n callback(err);\n }\n });\n },\n\n /**\n * @api private\n */\n loadCachedId: function loadCachedId() {\n var self = this;\n\n // in the browser we source default IdentityId from localStorage\n if (AWS.util.isBrowser() && !self.params.IdentityId) {\n var id = self.getStorage('id');\n if (id && self.params.Logins) {\n var actualProviders = Object.keys(self.params.Logins);\n var cachedProviders =\n (self.getStorage('providers') || '').split(',');\n\n // only load ID if at least one provider used this ID before\n var intersect = cachedProviders.filter(function(n) {\n return actualProviders.indexOf(n) !== -1;\n });\n if (intersect.length !== 0) {\n self.params.IdentityId = id;\n }\n } else if (id) {\n self.params.IdentityId = id;\n }\n }\n },\n\n /**\n * @api private\n */\n createClients: function() {\n var clientConfig = this._clientConfig;\n this.webIdentityCredentials = this.webIdentityCredentials ||\n new AWS.WebIdentityCredentials(this.params, clientConfig);\n if (!this.cognito) {\n var cognitoConfig = AWS.util.merge({}, clientConfig);\n cognitoConfig.params = this.params;\n this.cognito = new CognitoIdentity(cognitoConfig);\n }\n this.sts = this.sts || new STS(clientConfig);\n },\n\n /**\n * @api private\n */\n cacheId: function cacheId(data) {\n this._identityId = data.IdentityId;\n this.params.IdentityId = this._identityId;\n\n // cache this IdentityId in browser localStorage if possible\n if (AWS.util.isBrowser()) {\n this.setStorage('id', data.IdentityId);\n\n if (this.params.Logins) {\n this.setStorage('providers', Object.keys(this.params.Logins).join(','));\n }\n }\n },\n\n /**\n * @api private\n */\n getStorage: function getStorage(key) {\n return this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')];\n },\n\n /**\n * @api private\n */\n setStorage: function setStorage(key, val) {\n try {\n this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')] = val;\n } catch (_) {}\n },\n\n /**\n * @api private\n */\n storage: (function() {\n try {\n var storage = AWS.util.isBrowser() && window.localStorage !== null && typeof window.localStorage === 'object' ?\n window.localStorage : {};\n\n // Test set/remove which would throw an error in Safari's private browsing\n storage['aws.test-storage'] = 'foobar';\n delete storage['aws.test-storage'];\n\n return storage;\n } catch (_) {\n return {};\n }\n })()\n});\n","var AWS = require('../core');\n\n/**\n * Creates a credential provider chain that searches for AWS credentials\n * in a list of credential providers specified by the {providers} property.\n *\n * By default, the chain will use the {defaultProviders} to resolve credentials.\n * These providers will look in the environment using the\n * {AWS.EnvironmentCredentials} class with the 'AWS' and 'AMAZON' prefixes.\n *\n * ## Setting Providers\n *\n * Each provider in the {providers} list should be a function that returns\n * a {AWS.Credentials} object, or a hardcoded credentials object. The function\n * form allows for delayed execution of the credential construction.\n *\n * ## Resolving Credentials from a Chain\n *\n * Call {resolve} to return the first valid credential object that can be\n * loaded by the provider chain.\n *\n * For example, to resolve a chain with a custom provider that checks a file\n * on disk after the set of {defaultProviders}:\n *\n * ```javascript\n * var diskProvider = new AWS.FileSystemCredentials('./creds.json');\n * var chain = new AWS.CredentialProviderChain();\n * chain.providers.push(diskProvider);\n * chain.resolve();\n * ```\n *\n * The above code will return the `diskProvider` object if the\n * file contains credentials and the `defaultProviders` do not contain\n * any credential settings.\n *\n * @!attribute providers\n * @return [Array]\n * a list of credentials objects or functions that return credentials\n * objects. If the provider is a function, the function will be\n * executed lazily when the provider needs to be checked for valid\n * credentials. By default, this object will be set to the\n * {defaultProviders}.\n * @see defaultProviders\n */\nAWS.CredentialProviderChain = AWS.util.inherit(AWS.Credentials, {\n\n /**\n * Creates a new CredentialProviderChain with a default set of providers\n * specified by {defaultProviders}.\n */\n constructor: function CredentialProviderChain(providers) {\n if (providers) {\n this.providers = providers;\n } else {\n this.providers = AWS.CredentialProviderChain.defaultProviders.slice(0);\n }\n this.resolveCallbacks = [];\n },\n\n /**\n * @!method resolvePromise()\n * Returns a 'thenable' promise.\n * Resolves the provider chain by searching for the first set of\n * credentials in {providers}.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function(credentials)\n * Called if the promise is fulfilled and the provider resolves the chain\n * to a credentials object\n * @param credentials [AWS.Credentials] the credentials object resolved\n * by the provider chain.\n * @callback rejectedCallback function(error)\n * Called if the promise is rejected.\n * @param err [Error] the error object returned if no credentials are found.\n * @return [Promise] A promise that represents the state of the `resolve` method call.\n * @example Calling the `resolvePromise` method.\n * var promise = chain.resolvePromise();\n * promise.then(function(credentials) { ... }, function(err) { ... });\n */\n\n /**\n * Resolves the provider chain by searching for the first set of\n * credentials in {providers}.\n *\n * @callback callback function(err, credentials)\n * Called when the provider resolves the chain to a credentials object\n * or null if no credentials can be found.\n *\n * @param err [Error] the error object returned if no credentials are\n * found.\n * @param credentials [AWS.Credentials] the credentials object resolved\n * by the provider chain.\n * @return [AWS.CredentialProviderChain] the provider, for chaining.\n */\n resolve: function resolve(callback) {\n var self = this;\n if (self.providers.length === 0) {\n callback(new Error('No providers'));\n return self;\n }\n\n if (self.resolveCallbacks.push(callback) === 1) {\n var index = 0;\n var providers = self.providers.slice(0);\n\n function resolveNext(err, creds) {\n if ((!err && creds) || index === providers.length) {\n AWS.util.arrayEach(self.resolveCallbacks, function (callback) {\n callback(err, creds);\n });\n self.resolveCallbacks.length = 0;\n return;\n }\n\n var provider = providers[index++];\n if (typeof provider === 'function') {\n creds = provider.call();\n } else {\n creds = provider;\n }\n\n if (creds.get) {\n creds.get(function (getErr) {\n resolveNext(getErr, getErr ? null : creds);\n });\n } else {\n resolveNext(null, creds);\n }\n }\n\n resolveNext();\n }\n\n return self;\n }\n});\n\n/**\n * The default set of providers used by a vanilla CredentialProviderChain.\n *\n * In the browser:\n *\n * ```javascript\n * AWS.CredentialProviderChain.defaultProviders = []\n * ```\n *\n * In Node.js:\n *\n * ```javascript\n * AWS.CredentialProviderChain.defaultProviders = [\n * function () { return new AWS.EnvironmentCredentials('AWS'); },\n * function () { return new AWS.EnvironmentCredentials('AMAZON'); },\n * function () { return new AWS.SsoCredentials(); },\n * function () { return new AWS.SharedIniFileCredentials(); },\n * function () { return new AWS.ECSCredentials(); },\n * function () { return new AWS.ProcessCredentials(); },\n * function () { return new AWS.TokenFileWebIdentityCredentials(); },\n * function () { return new AWS.EC2MetadataCredentials() }\n * ]\n * ```\n */\nAWS.CredentialProviderChain.defaultProviders = [];\n\n/**\n * @api private\n */\nAWS.CredentialProviderChain.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.resolvePromise = AWS.util.promisifyMethod('resolve', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.CredentialProviderChain.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.resolvePromise;\n};\n\nAWS.util.addPromises(AWS.CredentialProviderChain);\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents credentials retrieved from STS SAML support.\n *\n * By default this provider gets credentials using the\n * {AWS.STS.assumeRoleWithSAML} service operation. This operation\n * requires a `RoleArn` containing the ARN of the IAM trust policy for the\n * application for which credentials will be given, as well as a `PrincipalArn`\n * representing the ARN for the SAML identity provider. In addition, the\n * `SAMLAssertion` must be set to the token provided by the identity\n * provider. See {constructor} for an example on creating a credentials\n * object with proper `RoleArn`, `PrincipalArn`, and `SAMLAssertion` values.\n *\n * ## Refreshing Credentials from Identity Service\n *\n * In addition to AWS credentials expiring after a given amount of time, the\n * login token from the identity provider will also expire. Once this token\n * expires, it will not be usable to refresh AWS credentials, and another\n * token will be needed. The SDK does not manage refreshing of the token value,\n * but this can be done through a \"refresh token\" supported by most identity\n * providers. Consult the documentation for the identity provider for refreshing\n * tokens. Once the refreshed token is acquired, you should make sure to update\n * this new token in the credentials object's {params} property. The following\n * code will update the SAMLAssertion, assuming you have retrieved an updated\n * token from the identity provider:\n *\n * ```javascript\n * AWS.config.credentials.params.SAMLAssertion = updatedToken;\n * ```\n *\n * Future calls to `credentials.refresh()` will now use the new token.\n *\n * @!attribute params\n * @return [map] the map of params passed to\n * {AWS.STS.assumeRoleWithSAML}. To update the token, set the\n * `params.SAMLAssertion` property.\n */\nAWS.SAMLCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new credentials object.\n * @param (see AWS.STS.assumeRoleWithSAML)\n * @example Creating a new credentials object\n * AWS.config.credentials = new AWS.SAMLCredentials({\n * RoleArn: 'arn:aws:iam::1234567890:role/SAMLRole',\n * PrincipalArn: 'arn:aws:iam::1234567890:role/SAMLPrincipal',\n * SAMLAssertion: 'base64-token', // base64-encoded token from IdP\n * });\n * @see AWS.STS.assumeRoleWithSAML\n */\n constructor: function SAMLCredentials(params) {\n AWS.Credentials.call(this);\n this.expired = true;\n this.params = params;\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRoleWithSAML}\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n */\n load: function load(callback) {\n var self = this;\n self.createClients();\n self.service.assumeRoleWithSAML(function (err, data) {\n if (!err) {\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n },\n\n /**\n * @api private\n */\n createClients: function() {\n this.service = this.service || new STS({params: this.params});\n }\n\n});\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents temporary credentials retrieved from {AWS.STS}. Without any\n * extra parameters, credentials will be fetched from the\n * {AWS.STS.getSessionToken} operation. If an IAM role is provided, the\n * {AWS.STS.assumeRole} operation will be used to fetch credentials for the\n * role instead.\n *\n * @note AWS.TemporaryCredentials is deprecated, but remains available for\n * backwards compatibility. {AWS.ChainableTemporaryCredentials} is the\n * preferred class for temporary credentials.\n *\n * To setup temporary credentials, configure a set of master credentials\n * using the standard credentials providers (environment, EC2 instance metadata,\n * or from the filesystem), then set the global credentials to a new\n * temporary credentials object:\n *\n * ```javascript\n * // Note that environment credentials are loaded by default,\n * // the following line is shown for clarity:\n * AWS.config.credentials = new AWS.EnvironmentCredentials('AWS');\n *\n * // Now set temporary credentials seeded from the master credentials\n * AWS.config.credentials = new AWS.TemporaryCredentials();\n *\n * // subsequent requests will now use temporary credentials from AWS STS.\n * new AWS.S3().listBucket(function(err, data) { ... });\n * ```\n *\n * @!attribute masterCredentials\n * @return [AWS.Credentials] the master (non-temporary) credentials used to\n * get and refresh temporary credentials from AWS STS.\n * @note (see constructor)\n */\nAWS.TemporaryCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new temporary credentials object.\n *\n * @note In order to create temporary credentials, you first need to have\n * \"master\" credentials configured in {AWS.Config.credentials}. These\n * master credentials are necessary to retrieve the temporary credentials,\n * as well as refresh the credentials when they expire.\n * @param params [map] a map of options that are passed to the\n * {AWS.STS.assumeRole} or {AWS.STS.getSessionToken} operations.\n * If a `RoleArn` parameter is passed in, credentials will be based on the\n * IAM role.\n * @param masterCredentials [AWS.Credentials] the master (non-temporary) credentials\n * used to get and refresh temporary credentials from AWS STS.\n * @example Creating a new credentials object for generic temporary credentials\n * AWS.config.credentials = new AWS.TemporaryCredentials();\n * @example Creating a new credentials object for an IAM role\n * AWS.config.credentials = new AWS.TemporaryCredentials({\n * RoleArn: 'arn:aws:iam::1234567890:role/TemporaryCredentials',\n * });\n * @see AWS.STS.assumeRole\n * @see AWS.STS.getSessionToken\n */\n constructor: function TemporaryCredentials(params, masterCredentials) {\n AWS.Credentials.call(this);\n this.loadMasterCredentials(masterCredentials);\n this.expired = true;\n\n this.params = params || {};\n if (this.params.RoleArn) {\n this.params.RoleSessionName =\n this.params.RoleSessionName || 'temporary-credentials';\n }\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRole} or\n * {AWS.STS.getSessionToken}, depending on whether an IAM role ARN was passed\n * to the credentials {constructor}.\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see get\n */\n refresh: function refresh (callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n */\n load: function load (callback) {\n var self = this;\n self.createClients();\n self.masterCredentials.get(function () {\n self.service.config.credentials = self.masterCredentials;\n var operation = self.params.RoleArn ?\n self.service.assumeRole : self.service.getSessionToken;\n operation.call(self.service, function (err, data) {\n if (!err) {\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n });\n },\n\n /**\n * @api private\n */\n loadMasterCredentials: function loadMasterCredentials (masterCredentials) {\n this.masterCredentials = masterCredentials || AWS.config.credentials;\n while (this.masterCredentials.masterCredentials) {\n this.masterCredentials = this.masterCredentials.masterCredentials;\n }\n\n if (typeof this.masterCredentials.get !== 'function') {\n this.masterCredentials = new AWS.Credentials(this.masterCredentials);\n }\n },\n\n /**\n * @api private\n */\n createClients: function () {\n this.service = this.service || new STS({params: this.params});\n }\n\n});\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents credentials retrieved from STS Web Identity Federation support.\n *\n * By default this provider gets credentials using the\n * {AWS.STS.assumeRoleWithWebIdentity} service operation. This operation\n * requires a `RoleArn` containing the ARN of the IAM trust policy for the\n * application for which credentials will be given. In addition, the\n * `WebIdentityToken` must be set to the token provided by the identity\n * provider. See {constructor} for an example on creating a credentials\n * object with proper `RoleArn` and `WebIdentityToken` values.\n *\n * ## Refreshing Credentials from Identity Service\n *\n * In addition to AWS credentials expiring after a given amount of time, the\n * login token from the identity provider will also expire. Once this token\n * expires, it will not be usable to refresh AWS credentials, and another\n * token will be needed. The SDK does not manage refreshing of the token value,\n * but this can be done through a \"refresh token\" supported by most identity\n * providers. Consult the documentation for the identity provider for refreshing\n * tokens. Once the refreshed token is acquired, you should make sure to update\n * this new token in the credentials object's {params} property. The following\n * code will update the WebIdentityToken, assuming you have retrieved an updated\n * token from the identity provider:\n *\n * ```javascript\n * AWS.config.credentials.params.WebIdentityToken = updatedToken;\n * ```\n *\n * Future calls to `credentials.refresh()` will now use the new token.\n *\n * @!attribute params\n * @return [map] the map of params passed to\n * {AWS.STS.assumeRoleWithWebIdentity}. To update the token, set the\n * `params.WebIdentityToken` property.\n * @!attribute data\n * @return [map] the raw data response from the call to\n * {AWS.STS.assumeRoleWithWebIdentity}. Use this if you want to get\n * access to other properties from the response.\n */\nAWS.WebIdentityCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new credentials object.\n * @param (see AWS.STS.assumeRoleWithWebIdentity)\n * @example Creating a new credentials object\n * AWS.config.credentials = new AWS.WebIdentityCredentials({\n * RoleArn: 'arn:aws:iam::1234567890:role/WebIdentity',\n * WebIdentityToken: 'ABCDEFGHIJKLMNOP', // token from identity service\n * RoleSessionName: 'web' // optional name, defaults to web-identity\n * }, {\n * // optionally provide configuration to apply to the underlying AWS.STS service client\n * // if configuration is not provided, then configuration will be pulled from AWS.config\n *\n * // specify timeout options\n * httpOptions: {\n * timeout: 100\n * }\n * });\n * @see AWS.STS.assumeRoleWithWebIdentity\n * @see AWS.Config\n */\n constructor: function WebIdentityCredentials(params, clientConfig) {\n AWS.Credentials.call(this);\n this.expired = true;\n this.params = params;\n this.params.RoleSessionName = this.params.RoleSessionName || 'web-identity';\n this.data = null;\n this._clientConfig = AWS.util.copy(clientConfig || {});\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRoleWithWebIdentity}\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n */\n load: function load(callback) {\n var self = this;\n self.createClients();\n self.service.assumeRoleWithWebIdentity(function (err, data) {\n self.data = null;\n if (!err) {\n self.data = data;\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n },\n\n /**\n * @api private\n */\n createClients: function() {\n if (!this.service) {\n var stsConfig = AWS.util.merge({}, this._clientConfig);\n stsConfig.params = this.params;\n this.service = new STS(stsConfig);\n }\n }\n\n});\n","var AWS = require('./core');\nvar util = require('./util');\nvar endpointDiscoveryEnabledEnvs = ['AWS_ENABLE_ENDPOINT_DISCOVERY', 'AWS_ENDPOINT_DISCOVERY_ENABLED'];\n\n/**\n * Generate key (except resources and operation part) to index the endpoints in the cache\n * If input shape has endpointdiscoveryid trait then use\n * accessKey + operation + resources + region + service as cache key\n * If input shape doesn't have endpointdiscoveryid trait then use\n * accessKey + region + service as cache key\n * @return [map] object with keys to index endpoints.\n * @api private\n */\nfunction getCacheKey(request) {\n var service = request.service;\n var api = service.api || {};\n var operations = api.operations;\n var identifiers = {};\n if (service.config.region) {\n identifiers.region = service.config.region;\n }\n if (api.serviceId) {\n identifiers.serviceId = api.serviceId;\n }\n if (service.config.credentials.accessKeyId) {\n identifiers.accessKeyId = service.config.credentials.accessKeyId;\n }\n return identifiers;\n}\n\n/**\n * Recursive helper for marshallCustomIdentifiers().\n * Looks for required string input members that have 'endpointdiscoveryid' trait.\n * @api private\n */\nfunction marshallCustomIdentifiersHelper(result, params, shape) {\n if (!shape || params === undefined || params === null) return;\n if (shape.type === 'structure' && shape.required && shape.required.length > 0) {\n util.arrayEach(shape.required, function(name) {\n var memberShape = shape.members[name];\n if (memberShape.endpointDiscoveryId === true) {\n var locationName = memberShape.isLocationName ? memberShape.name : name;\n result[locationName] = String(params[name]);\n } else {\n marshallCustomIdentifiersHelper(result, params[name], memberShape);\n }\n });\n }\n}\n\n/**\n * Get custom identifiers for cache key.\n * Identifies custom identifiers by checking each shape's `endpointDiscoveryId` trait.\n * @param [object] request object\n * @param [object] input shape of the given operation's api\n * @api private\n */\nfunction marshallCustomIdentifiers(request, shape) {\n var identifiers = {};\n marshallCustomIdentifiersHelper(identifiers, request.params, shape);\n return identifiers;\n}\n\n/**\n * Call endpoint discovery operation when it's optional.\n * When endpoint is available in cache then use the cached endpoints. If endpoints\n * are unavailable then use regional endpoints and call endpoint discovery operation\n * asynchronously. This is turned off by default.\n * @param [object] request object\n * @api private\n */\nfunction optionalDiscoverEndpoint(request) {\n var service = request.service;\n var api = service.api;\n var operationModel = api.operations ? api.operations[request.operation] : undefined;\n var inputShape = operationModel ? operationModel.input : undefined;\n\n var identifiers = marshallCustomIdentifiers(request, inputShape);\n var cacheKey = getCacheKey(request);\n if (Object.keys(identifiers).length > 0) {\n cacheKey = util.update(cacheKey, identifiers);\n if (operationModel) cacheKey.operation = operationModel.name;\n }\n var endpoints = AWS.endpointCache.get(cacheKey);\n if (endpoints && endpoints.length === 1 && endpoints[0].Address === '') {\n //endpoint operation is being made but response not yet received\n //or endpoint operation just failed in 1 minute\n return;\n } else if (endpoints && endpoints.length > 0) {\n //found endpoint record from cache\n request.httpRequest.updateEndpoint(endpoints[0].Address);\n } else {\n //endpoint record not in cache or outdated. make discovery operation\n var endpointRequest = service.makeRequest(api.endpointOperation, {\n Operation: operationModel.name,\n Identifiers: identifiers,\n });\n addApiVersionHeader(endpointRequest);\n endpointRequest.removeListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n endpointRequest.removeListener('retry', AWS.EventListeners.Core.RETRY_CHECK);\n //put in a placeholder for endpoints already requested, prevent\n //too much in-flight calls\n AWS.endpointCache.put(cacheKey, [{\n Address: '',\n CachePeriodInMinutes: 1\n }]);\n endpointRequest.send(function(err, data) {\n if (data && data.Endpoints) {\n AWS.endpointCache.put(cacheKey, data.Endpoints);\n } else if (err) {\n AWS.endpointCache.put(cacheKey, [{\n Address: '',\n CachePeriodInMinutes: 1 //not to make more endpoint operation in next 1 minute\n }]);\n }\n });\n }\n}\n\nvar requestQueue = {};\n\n/**\n * Call endpoint discovery operation when it's required.\n * When endpoint is available in cache then use cached ones. If endpoints are\n * unavailable then SDK should call endpoint operation then use returned new\n * endpoint for the api call. SDK will automatically attempt to do endpoint\n * discovery. This is turned off by default\n * @param [object] request object\n * @api private\n */\nfunction requiredDiscoverEndpoint(request, done) {\n var service = request.service;\n var api = service.api;\n var operationModel = api.operations ? api.operations[request.operation] : undefined;\n var inputShape = operationModel ? operationModel.input : undefined;\n\n var identifiers = marshallCustomIdentifiers(request, inputShape);\n var cacheKey = getCacheKey(request);\n if (Object.keys(identifiers).length > 0) {\n cacheKey = util.update(cacheKey, identifiers);\n if (operationModel) cacheKey.operation = operationModel.name;\n }\n var cacheKeyStr = AWS.EndpointCache.getKeyString(cacheKey);\n var endpoints = AWS.endpointCache.get(cacheKeyStr); //endpoint cache also accepts string keys\n if (endpoints && endpoints.length === 1 && endpoints[0].Address === '') {\n //endpoint operation is being made but response not yet received\n //push request object to a pending queue\n if (!requestQueue[cacheKeyStr]) requestQueue[cacheKeyStr] = [];\n requestQueue[cacheKeyStr].push({request: request, callback: done});\n return;\n } else if (endpoints && endpoints.length > 0) {\n request.httpRequest.updateEndpoint(endpoints[0].Address);\n done();\n } else {\n var endpointRequest = service.makeRequest(api.endpointOperation, {\n Operation: operationModel.name,\n Identifiers: identifiers,\n });\n endpointRequest.removeListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n addApiVersionHeader(endpointRequest);\n\n //put in a placeholder for endpoints already requested, prevent\n //too much in-flight calls\n AWS.endpointCache.put(cacheKeyStr, [{\n Address: '',\n CachePeriodInMinutes: 60 //long-live cache\n }]);\n endpointRequest.send(function(err, data) {\n if (err) {\n request.response.error = util.error(err, { retryable: false });\n AWS.endpointCache.remove(cacheKey);\n\n //fail all the pending requests in batch\n if (requestQueue[cacheKeyStr]) {\n var pendingRequests = requestQueue[cacheKeyStr];\n util.arrayEach(pendingRequests, function(requestContext) {\n requestContext.request.response.error = util.error(err, { retryable: false });\n requestContext.callback();\n });\n delete requestQueue[cacheKeyStr];\n }\n } else if (data) {\n AWS.endpointCache.put(cacheKeyStr, data.Endpoints);\n request.httpRequest.updateEndpoint(data.Endpoints[0].Address);\n\n //update the endpoint for all the pending requests in batch\n if (requestQueue[cacheKeyStr]) {\n var pendingRequests = requestQueue[cacheKeyStr];\n util.arrayEach(pendingRequests, function(requestContext) {\n requestContext.request.httpRequest.updateEndpoint(data.Endpoints[0].Address);\n requestContext.callback();\n });\n delete requestQueue[cacheKeyStr];\n }\n }\n done();\n });\n }\n}\n\n/**\n * add api version header to endpoint operation\n * @api private\n */\nfunction addApiVersionHeader(endpointRequest) {\n var api = endpointRequest.service.api;\n var apiVersion = api.apiVersion;\n if (apiVersion && !endpointRequest.httpRequest.headers['x-amz-api-version']) {\n endpointRequest.httpRequest.headers['x-amz-api-version'] = apiVersion;\n }\n}\n\n/**\n * If api call gets invalid endpoint exception, SDK should attempt to remove the invalid\n * endpoint from cache.\n * @api private\n */\nfunction invalidateCachedEndpoints(response) {\n var error = response.error;\n var httpResponse = response.httpResponse;\n if (error &&\n (error.code === 'InvalidEndpointException' || httpResponse.statusCode === 421)\n ) {\n var request = response.request;\n var operations = request.service.api.operations || {};\n var inputShape = operations[request.operation] ? operations[request.operation].input : undefined;\n var identifiers = marshallCustomIdentifiers(request, inputShape);\n var cacheKey = getCacheKey(request);\n if (Object.keys(identifiers).length > 0) {\n cacheKey = util.update(cacheKey, identifiers);\n if (operations[request.operation]) cacheKey.operation = operations[request.operation].name;\n }\n AWS.endpointCache.remove(cacheKey);\n }\n}\n\n/**\n * If endpoint is explicitly configured, SDK should not do endpoint discovery in anytime.\n * @param [object] client Service client object.\n * @api private\n */\nfunction hasCustomEndpoint(client) {\n //if set endpoint is set for specific client, enable endpoint discovery will raise an error.\n if (client._originalConfig && client._originalConfig.endpoint && client._originalConfig.endpointDiscoveryEnabled === true) {\n throw util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'Custom endpoint is supplied; endpointDiscoveryEnabled must not be true.'\n });\n };\n var svcConfig = AWS.config[client.serviceIdentifier] || {};\n return Boolean(AWS.config.endpoint || svcConfig.endpoint || (client._originalConfig && client._originalConfig.endpoint));\n}\n\n/**\n * @api private\n */\nfunction isFalsy(value) {\n return ['false', '0'].indexOf(value) >= 0;\n}\n\n/**\n * If endpoint discovery should perform for this request when no operation requires endpoint\n * discovery for the given service.\n * SDK performs config resolution in order like below:\n * 1. If set in client configuration.\n * 2. If set in env AWS_ENABLE_ENDPOINT_DISCOVERY.\n * 3. If set in shared ini config file with key 'endpoint_discovery_enabled'.\n * @param [object] request request object.\n * @returns [boolean|undefined] if endpoint discovery config is not set in any source, this\n * function returns undefined\n * @api private\n */\nfunction resolveEndpointDiscoveryConfig(request) {\n var service = request.service || {};\n if (service.config.endpointDiscoveryEnabled !== undefined) {\n return service.config.endpointDiscoveryEnabled;\n }\n\n //shared ini file is only available in Node\n //not to check env in browser\n if (util.isBrowser()) return undefined;\n\n // If any of recognized endpoint discovery config env is set\n for (var i = 0; i < endpointDiscoveryEnabledEnvs.length; i++) {\n var env = endpointDiscoveryEnabledEnvs[i];\n if (Object.prototype.hasOwnProperty.call(process.env, env)) {\n if (process.env[env] === '' || process.env[env] === undefined) {\n throw util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'environmental variable ' + env + ' cannot be set to nothing'\n });\n }\n return !isFalsy(process.env[env]);\n }\n }\n\n var configFile = {};\n try {\n configFile = AWS.util.iniLoader ? AWS.util.iniLoader.loadFrom({\n isConfig: true,\n filename: process.env[AWS.util.sharedConfigFileEnv]\n }) : {};\n } catch (e) {}\n var sharedFileConfig = configFile[\n process.env.AWS_PROFILE || AWS.util.defaultProfile\n ] || {};\n if (Object.prototype.hasOwnProperty.call(sharedFileConfig, 'endpoint_discovery_enabled')) {\n if (sharedFileConfig.endpoint_discovery_enabled === undefined) {\n throw util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'config file entry \\'endpoint_discovery_enabled\\' cannot be set to nothing'\n });\n }\n return !isFalsy(sharedFileConfig.endpoint_discovery_enabled);\n }\n return undefined;\n}\n\n/**\n * attach endpoint discovery logic to request object\n * @param [object] request\n * @api private\n */\nfunction discoverEndpoint(request, done) {\n var service = request.service || {};\n if (hasCustomEndpoint(service) || request.isPresigned()) return done();\n\n var operations = service.api.operations || {};\n var operationModel = operations[request.operation];\n var isEndpointDiscoveryRequired = operationModel ? operationModel.endpointDiscoveryRequired : 'NULL';\n var isEnabled = resolveEndpointDiscoveryConfig(request);\n var hasRequiredEndpointDiscovery = service.api.hasRequiredEndpointDiscovery;\n if (isEnabled || hasRequiredEndpointDiscovery) {\n // Once a customer enables endpoint discovery, the SDK should start appending\n // the string endpoint-discovery to the user-agent on all requests.\n request.httpRequest.appendToUserAgent('endpoint-discovery');\n }\n switch (isEndpointDiscoveryRequired) {\n case 'OPTIONAL':\n if (isEnabled || hasRequiredEndpointDiscovery) {\n // For a given service; if at least one operation requires endpoint discovery then the SDK must enable endpoint discovery\n // by default for all operations of that service, including operations where endpoint discovery is optional.\n optionalDiscoverEndpoint(request);\n request.addNamedListener('INVALIDATE_CACHED_ENDPOINTS', 'extractError', invalidateCachedEndpoints);\n }\n done();\n break;\n case 'REQUIRED':\n if (isEnabled === false) {\n // For a given operation; if endpoint discovery is required and it has been disabled on the SDK client,\n // then the SDK must return a clear and actionable exception.\n request.response.error = util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'Endpoint Discovery is disabled but ' + service.api.className + '.' + request.operation +\n '() requires it. Please check your configurations.'\n });\n done();\n break;\n }\n request.addNamedListener('INVALIDATE_CACHED_ENDPOINTS', 'extractError', invalidateCachedEndpoints);\n requiredDiscoverEndpoint(request, done);\n break;\n case 'NULL':\n default:\n done();\n break;\n }\n}\n\nmodule.exports = {\n discoverEndpoint: discoverEndpoint,\n requiredDiscoverEndpoint: requiredDiscoverEndpoint,\n optionalDiscoverEndpoint: optionalDiscoverEndpoint,\n marshallCustomIdentifiers: marshallCustomIdentifiers,\n getCacheKey: getCacheKey,\n invalidateCachedEndpoint: invalidateCachedEndpoints,\n};\n","var AWS = require('../core');\nvar util = AWS.util;\nvar typeOf = require('./types').typeOf;\nvar DynamoDBSet = require('./set');\nvar NumberValue = require('./numberValue');\n\nAWS.DynamoDB.Converter = {\n /**\n * Convert a JavaScript value to its equivalent DynamoDB AttributeValue type\n *\n * @param data [any] The data to convert to a DynamoDB AttributeValue\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n * @return [map] An object in the Amazon DynamoDB AttributeValue format\n *\n * @see AWS.DynamoDB.Converter.marshall AWS.DynamoDB.Converter.marshall to\n * convert entire records (rather than individual attributes)\n */\n input: function convertInput(data, options) {\n options = options || {};\n var type = typeOf(data);\n if (type === 'Object') {\n return formatMap(data, options);\n } else if (type === 'Array') {\n return formatList(data, options);\n } else if (type === 'Set') {\n return formatSet(data, options);\n } else if (type === 'String') {\n if (data.length === 0 && options.convertEmptyValues) {\n return convertInput(null);\n }\n return { S: data };\n } else if (type === 'Number' || type === 'NumberValue') {\n return { N: data.toString() };\n } else if (type === 'Binary') {\n if (data.length === 0 && options.convertEmptyValues) {\n return convertInput(null);\n }\n return { B: data };\n } else if (type === 'Boolean') {\n return { BOOL: data };\n } else if (type === 'null') {\n return { NULL: true };\n } else if (type !== 'undefined' && type !== 'Function') {\n // this value has a custom constructor\n return formatMap(data, options);\n }\n },\n\n /**\n * Convert a JavaScript object into a DynamoDB record.\n *\n * @param data [any] The data to convert to a DynamoDB record\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n *\n * @return [map] An object in the DynamoDB record format.\n *\n * @example Convert a JavaScript object into a DynamoDB record\n * var marshalled = AWS.DynamoDB.Converter.marshall({\n * string: 'foo',\n * list: ['fizz', 'buzz', 'pop'],\n * map: {\n * nestedMap: {\n * key: 'value',\n * }\n * },\n * number: 123,\n * nullValue: null,\n * boolValue: true,\n * stringSet: new DynamoDBSet(['foo', 'bar', 'baz'])\n * });\n */\n marshall: function marshallItem(data, options) {\n return AWS.DynamoDB.Converter.input(data, options).M;\n },\n\n /**\n * Convert a DynamoDB AttributeValue object to its equivalent JavaScript type.\n *\n * @param data [map] An object in the Amazon DynamoDB AttributeValue format\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n *\n * @return [Object|Array|String|Number|Boolean|null]\n *\n * @see AWS.DynamoDB.Converter.unmarshall AWS.DynamoDB.Converter.unmarshall to\n * convert entire records (rather than individual attributes)\n */\n output: function convertOutput(data, options) {\n options = options || {};\n var list, map, i;\n for (var type in data) {\n var values = data[type];\n if (type === 'M') {\n map = {};\n for (var key in values) {\n map[key] = convertOutput(values[key], options);\n }\n return map;\n } else if (type === 'L') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(convertOutput(values[i], options));\n }\n return list;\n } else if (type === 'SS') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(values[i] + '');\n }\n return new DynamoDBSet(list);\n } else if (type === 'NS') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(convertNumber(values[i], options.wrapNumbers));\n }\n return new DynamoDBSet(list);\n } else if (type === 'BS') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(AWS.util.buffer.toBuffer(values[i]));\n }\n return new DynamoDBSet(list);\n } else if (type === 'S') {\n return values + '';\n } else if (type === 'N') {\n return convertNumber(values, options.wrapNumbers);\n } else if (type === 'B') {\n return util.buffer.toBuffer(values);\n } else if (type === 'BOOL') {\n return (values === 'true' || values === 'TRUE' || values === true);\n } else if (type === 'NULL') {\n return null;\n }\n }\n },\n\n /**\n * Convert a DynamoDB record into a JavaScript object.\n *\n * @param data [any] The DynamoDB record\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n *\n * @return [map] An object whose properties have been converted from\n * DynamoDB's AttributeValue format into their corresponding native\n * JavaScript types.\n *\n * @example Convert a record received from a DynamoDB stream\n * var unmarshalled = AWS.DynamoDB.Converter.unmarshall({\n * string: {S: 'foo'},\n * list: {L: [{S: 'fizz'}, {S: 'buzz'}, {S: 'pop'}]},\n * map: {\n * M: {\n * nestedMap: {\n * M: {\n * key: {S: 'value'}\n * }\n * }\n * }\n * },\n * number: {N: '123'},\n * nullValue: {NULL: true},\n * boolValue: {BOOL: true}\n * });\n */\n unmarshall: function unmarshall(data, options) {\n return AWS.DynamoDB.Converter.output({M: data}, options);\n }\n};\n\n/**\n * @api private\n * @param data [Array]\n * @param options [map]\n */\nfunction formatList(data, options) {\n var list = {L: []};\n for (var i = 0; i < data.length; i++) {\n list['L'].push(AWS.DynamoDB.Converter.input(data[i], options));\n }\n return list;\n}\n\n/**\n * @api private\n * @param value [String]\n * @param wrapNumbers [Boolean]\n */\nfunction convertNumber(value, wrapNumbers) {\n return wrapNumbers ? new NumberValue(value) : Number(value);\n}\n\n/**\n * @api private\n * @param data [map]\n * @param options [map]\n */\nfunction formatMap(data, options) {\n var map = {M: {}};\n for (var key in data) {\n var formatted = AWS.DynamoDB.Converter.input(data[key], options);\n if (formatted !== void 0) {\n map['M'][key] = formatted;\n }\n }\n return map;\n}\n\n/**\n * @api private\n */\nfunction formatSet(data, options) {\n options = options || {};\n var values = data.values;\n if (options.convertEmptyValues) {\n values = filterEmptySetValues(data);\n if (values.length === 0) {\n return AWS.DynamoDB.Converter.input(null);\n }\n }\n\n var map = {};\n switch (data.type) {\n case 'String': map['SS'] = values; break;\n case 'Binary': map['BS'] = values; break;\n case 'Number': map['NS'] = values.map(function (value) {\n return value.toString();\n });\n }\n return map;\n}\n\n/**\n * @api private\n */\nfunction filterEmptySetValues(set) {\n var nonEmptyValues = [];\n var potentiallyEmptyTypes = {\n String: true,\n Binary: true,\n Number: false\n };\n if (potentiallyEmptyTypes[set.type]) {\n for (var i = 0; i < set.values.length; i++) {\n if (set.values[i].length === 0) {\n continue;\n }\n nonEmptyValues.push(set.values[i]);\n }\n\n return nonEmptyValues;\n }\n\n return set.values;\n}\n\n/**\n * @api private\n */\nmodule.exports = AWS.DynamoDB.Converter;\n","var AWS = require('../core');\nvar Translator = require('./translator');\nvar DynamoDBSet = require('./set');\n\n/**\n * The document client simplifies working with items in Amazon DynamoDB\n * by abstracting away the notion of attribute values. This abstraction\n * annotates native JavaScript types supplied as input parameters, as well\n * as converts annotated response data to native JavaScript types.\n *\n * ## Marshalling Input and Unmarshalling Response Data\n *\n * The document client affords developers the use of native JavaScript types\n * instead of `AttributeValue`s to simplify the JavaScript development\n * experience with Amazon DynamoDB. JavaScript objects passed in as parameters\n * are marshalled into `AttributeValue` shapes required by Amazon DynamoDB.\n * Responses from DynamoDB are unmarshalled into plain JavaScript objects\n * by the `DocumentClient`. The `DocumentClient`, does not accept\n * `AttributeValue`s in favor of native JavaScript types.\n *\n * | JavaScript Type | DynamoDB AttributeValue |\n * |:----------------------------------------------------------------------:|-------------------------|\n * | String | S |\n * | Number | N |\n * | Boolean | BOOL |\n * | null | NULL |\n * | Array | L |\n * | Object | M |\n * | Buffer, File, Blob, ArrayBuffer, DataView, and JavaScript typed arrays | B |\n *\n * ## Support for Sets\n *\n * The `DocumentClient` offers a convenient way to create sets from\n * JavaScript Arrays. The type of set is inferred from the first element\n * in the array. DynamoDB supports string, number, and binary sets. To\n * learn more about supported types see the\n * [Amazon DynamoDB Data Model Documentation](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html)\n * For more information see {AWS.DynamoDB.DocumentClient.createSet}\n *\n */\nAWS.DynamoDB.DocumentClient = AWS.util.inherit({\n\n /**\n * Creates a DynamoDB document client with a set of configuration options.\n *\n * @option options params [map] An optional map of parameters to bind to every\n * request sent by this service object.\n * @option options service [AWS.DynamoDB] An optional pre-configured instance\n * of the AWS.DynamoDB service object. This instance's config will be\n * copied to a new instance used by this client. You should not need to\n * retain a reference to the input object, and may destroy it or allow it\n * to be garbage collected.\n * @option options convertEmptyValues [Boolean] set to true if you would like\n * the document client to convert empty values (0-length strings, binary\n * buffers, and sets) to be converted to NULL types when persisting to\n * DynamoDB.\n * @option options wrapNumbers [Boolean] Set to true to return numbers as a\n * NumberValue object instead of converting them to native JavaScript numbers.\n * This allows for the safe round-trip transport of numbers of arbitrary size.\n * @see AWS.DynamoDB.constructor\n *\n */\n constructor: function DocumentClient(options) {\n var self = this;\n self.options = options || {};\n self.configure(self.options);\n },\n\n /**\n * @api private\n */\n configure: function configure(options) {\n var self = this;\n self.service = options.service;\n self.bindServiceObject(options);\n self.attrValue = options.attrValue =\n self.service.api.operations.putItem.input.members.Item.value.shape;\n },\n\n /**\n * @api private\n */\n bindServiceObject: function bindServiceObject(options) {\n var self = this;\n options = options || {};\n\n if (!self.service) {\n self.service = new AWS.DynamoDB(options);\n } else {\n var config = AWS.util.copy(self.service.config);\n self.service = new self.service.constructor.__super__(config);\n self.service.config.params =\n AWS.util.merge(self.service.config.params || {}, options.params);\n }\n },\n\n /**\n * @api private\n */\n makeServiceRequest: function(operation, params, callback) {\n var self = this;\n var request = self.service[operation](params);\n self.setupRequest(request);\n self.setupResponse(request);\n if (typeof callback === 'function') {\n request.send(callback);\n }\n return request;\n },\n\n /**\n * @api private\n */\n serviceClientOperationsMap: {\n batchGet: 'batchGetItem',\n batchWrite: 'batchWriteItem',\n delete: 'deleteItem',\n get: 'getItem',\n put: 'putItem',\n query: 'query',\n scan: 'scan',\n update: 'updateItem',\n transactGet: 'transactGetItems',\n transactWrite: 'transactWriteItems'\n },\n\n /**\n * Returns the attributes of one or more items from one or more tables\n * by delegating to `AWS.DynamoDB.batchGetItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.batchGetItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.batchGetItem\n * @example Get items from multiple tables\n * var params = {\n * RequestItems: {\n * 'Table-1': {\n * Keys: [\n * {\n * HashKey: 'haskey',\n * NumberRangeKey: 1\n * }\n * ]\n * },\n * 'Table-2': {\n * Keys: [\n * { foo: 'bar' },\n * ]\n * }\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.batchGet(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n batchGet: function(params, callback) {\n var operation = this.serviceClientOperationsMap['batchGet'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Puts or deletes multiple items in one or more tables by delegating\n * to `AWS.DynamoDB.batchWriteItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.batchWriteItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.batchWriteItem\n * @example Write to and delete from a table\n * var params = {\n * RequestItems: {\n * 'Table-1': [\n * {\n * DeleteRequest: {\n * Key: { HashKey: 'someKey' }\n * }\n * },\n * {\n * PutRequest: {\n * Item: {\n * HashKey: 'anotherKey',\n * NumAttribute: 1,\n * BoolAttribute: true,\n * ListAttribute: [1, 'two', false],\n * MapAttribute: { foo: 'bar' }\n * }\n * }\n * }\n * ]\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.batchWrite(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n batchWrite: function(params, callback) {\n var operation = this.serviceClientOperationsMap['batchWrite'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Deletes a single item in a table by primary key by delegating to\n * `AWS.DynamoDB.deleteItem()`\n *\n * Supply the same parameters as {AWS.DynamoDB.deleteItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.deleteItem\n * @example Delete an item from a table\n * var params = {\n * TableName : 'Table',\n * Key: {\n * HashKey: 'hashkey',\n * NumberRangeKey: 1\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.delete(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n delete: function(params, callback) {\n var operation = this.serviceClientOperationsMap['delete'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Returns a set of attributes for the item with the given primary key\n * by delegating to `AWS.DynamoDB.getItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.getItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.getItem\n * @example Get an item from a table\n * var params = {\n * TableName : 'Table',\n * Key: {\n * HashKey: 'hashkey'\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.get(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n get: function(params, callback) {\n var operation = this.serviceClientOperationsMap['get'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Creates a new item, or replaces an old item with a new item by\n * delegating to `AWS.DynamoDB.putItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.putItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.putItem\n * @example Create a new item in a table\n * var params = {\n * TableName : 'Table',\n * Item: {\n * HashKey: 'haskey',\n * NumAttribute: 1,\n * BoolAttribute: true,\n * ListAttribute: [1, 'two', false],\n * MapAttribute: { foo: 'bar'},\n * NullAttribute: null\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.put(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n put: function(params, callback) {\n var operation = this.serviceClientOperationsMap['put'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Edits an existing item's attributes, or adds a new item to the table if\n * it does not already exist by delegating to `AWS.DynamoDB.updateItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.updateItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.updateItem\n * @example Update an item with expressions\n * var params = {\n * TableName: 'Table',\n * Key: { HashKey : 'hashkey' },\n * UpdateExpression: 'set #a = :x + :y',\n * ConditionExpression: '#a < :MAX',\n * ExpressionAttributeNames: {'#a' : 'Sum'},\n * ExpressionAttributeValues: {\n * ':x' : 20,\n * ':y' : 45,\n * ':MAX' : 100,\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.update(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n update: function(params, callback) {\n var operation = this.serviceClientOperationsMap['update'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Returns one or more items and item attributes by accessing every item\n * in a table or a secondary index.\n *\n * Supply the same parameters as {AWS.DynamoDB.scan} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.scan\n * @example Scan the table with a filter expression\n * var params = {\n * TableName : 'Table',\n * FilterExpression : 'Year = :this_year',\n * ExpressionAttributeValues : {':this_year' : 2015}\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.scan(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n scan: function(params, callback) {\n var operation = this.serviceClientOperationsMap['scan'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Directly access items from a table by primary key or a secondary index.\n *\n * Supply the same parameters as {AWS.DynamoDB.query} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.query\n * @example Query an index\n * var params = {\n * TableName: 'Table',\n * IndexName: 'Index',\n * KeyConditionExpression: 'HashKey = :hkey and RangeKey > :rkey',\n * ExpressionAttributeValues: {\n * ':hkey': 'key',\n * ':rkey': 2015\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.query(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n query: function(params, callback) {\n var operation = this.serviceClientOperationsMap['query'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Synchronous write operation that groups up to 100 action requests.\n *\n * Supply the same parameters as {AWS.DynamoDB.transactWriteItems} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.transactWriteItems\n * @example Get items from multiple tables\n * var params = {\n * TransactItems: [{\n * Put: {\n * TableName : 'Table0',\n * Item: {\n * HashKey: 'haskey',\n * NumAttribute: 1,\n * BoolAttribute: true,\n * ListAttribute: [1, 'two', false],\n * MapAttribute: { foo: 'bar'},\n * NullAttribute: null\n * }\n * }\n * }, {\n * Update: {\n * TableName: 'Table1',\n * Key: { HashKey : 'hashkey' },\n * UpdateExpression: 'set #a = :x + :y',\n * ConditionExpression: '#a < :MAX',\n * ExpressionAttributeNames: {'#a' : 'Sum'},\n * ExpressionAttributeValues: {\n * ':x' : 20,\n * ':y' : 45,\n * ':MAX' : 100,\n * }\n * }\n * }]\n * };\n *\n * documentClient.transactWrite(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n */\n transactWrite: function(params, callback) {\n var operation = this.serviceClientOperationsMap['transactWrite'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Atomically retrieves multiple items from one or more tables (but not from indexes)\n * in a single account and region.\n *\n * Supply the same parameters as {AWS.DynamoDB.transactGetItems} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.transactGetItems\n * @example Get items from multiple tables\n * var params = {\n * TransactItems: [{\n * Get: {\n * TableName : 'Table0',\n * Key: {\n * HashKey: 'hashkey0'\n * }\n * }\n * }, {\n * Get: {\n * TableName : 'Table1',\n * Key: {\n * HashKey: 'hashkey1'\n * }\n * }\n * }]\n * };\n *\n * documentClient.transactGet(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n */\n transactGet: function(params, callback) {\n var operation = this.serviceClientOperationsMap['transactGet'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Creates a set of elements inferring the type of set from\n * the type of the first element. Amazon DynamoDB currently supports\n * the number sets, string sets, and binary sets. For more information\n * about DynamoDB data types see the documentation on the\n * [Amazon DynamoDB Data Model](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html#DataModel.DataTypes).\n *\n * @param list [Array] Collection to represent your DynamoDB Set\n * @param options [map]\n * * **validate** [Boolean] set to true if you want to validate the type\n * of each element in the set. Defaults to `false`.\n * @example Creating a number set\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * var params = {\n * Item: {\n * hashkey: 'hashkey'\n * numbers: documentClient.createSet([1, 2, 3]);\n * }\n * };\n *\n * documentClient.put(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n createSet: function(list, options) {\n options = options || {};\n return new DynamoDBSet(list, options);\n },\n\n /**\n * @api private\n */\n getTranslator: function() {\n return new Translator(this.options);\n },\n\n /**\n * @api private\n */\n setupRequest: function setupRequest(request) {\n var self = this;\n var translator = self.getTranslator();\n var operation = request.operation;\n var inputShape = request.service.api.operations[operation].input;\n request._events.validate.unshift(function(req) {\n req.rawParams = AWS.util.copy(req.params);\n req.params = translator.translateInput(req.rawParams, inputShape);\n });\n },\n\n /**\n * @api private\n */\n setupResponse: function setupResponse(request) {\n var self = this;\n var translator = self.getTranslator();\n var outputShape = self.service.api.operations[request.operation].output;\n request.on('extractData', function(response) {\n response.data = translator.translateOutput(response.data, outputShape);\n });\n\n var response = request.response;\n response.nextPage = function(cb) {\n var resp = this;\n var req = resp.request;\n var config;\n var service = req.service;\n var operation = req.operation;\n try {\n config = service.paginationConfig(operation, true);\n } catch (e) { resp.error = e; }\n\n if (!resp.hasNextPage()) {\n if (cb) cb(resp.error, null);\n else if (resp.error) throw resp.error;\n return null;\n }\n\n var params = AWS.util.copy(req.rawParams);\n if (!resp.nextPageTokens) {\n return cb ? cb(null, null) : null;\n } else {\n var inputTokens = config.inputToken;\n if (typeof inputTokens === 'string') inputTokens = [inputTokens];\n for (var i = 0; i < inputTokens.length; i++) {\n params[inputTokens[i]] = resp.nextPageTokens[i];\n }\n return self[operation](params, cb);\n }\n };\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.DynamoDB.DocumentClient;\n","var util = require('../core').util;\n\n/**\n * An object recognizable as a numeric value that stores the underlying number\n * as a string.\n *\n * Intended to be a deserialization target for the DynamoDB Document Client when\n * the `wrapNumbers` flag is set. This allows for numeric values that lose\n * precision when converted to JavaScript's `number` type.\n */\nvar DynamoDBNumberValue = util.inherit({\n constructor: function NumberValue(value) {\n this.wrapperName = 'NumberValue';\n this.value = value.toString();\n },\n\n /**\n * Render the underlying value as a number when converting to JSON.\n */\n toJSON: function () {\n return this.toNumber();\n },\n\n /**\n * Convert the underlying value to a JavaScript number.\n */\n toNumber: function () {\n return Number(this.value);\n },\n\n /**\n * Return a string representing the unaltered value provided to the\n * constructor.\n */\n toString: function () {\n return this.value;\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = DynamoDBNumberValue;\n","var util = require('../core').util;\nvar typeOf = require('./types').typeOf;\n\n/**\n * @api private\n */\nvar memberTypeToSetType = {\n 'String': 'String',\n 'Number': 'Number',\n 'NumberValue': 'Number',\n 'Binary': 'Binary'\n};\n\n/**\n * @api private\n */\nvar DynamoDBSet = util.inherit({\n\n constructor: function Set(list, options) {\n options = options || {};\n this.wrapperName = 'Set';\n this.initialize(list, options.validate);\n },\n\n initialize: function(list, validate) {\n var self = this;\n self.values = [].concat(list);\n self.detectType();\n if (validate) {\n self.validate();\n }\n },\n\n detectType: function() {\n this.type = memberTypeToSetType[typeOf(this.values[0])];\n if (!this.type) {\n throw util.error(new Error(), {\n code: 'InvalidSetType',\n message: 'Sets can contain string, number, or binary values'\n });\n }\n },\n\n validate: function() {\n var self = this;\n var length = self.values.length;\n var values = self.values;\n for (var i = 0; i < length; i++) {\n if (memberTypeToSetType[typeOf(values[i])] !== self.type) {\n throw util.error(new Error(), {\n code: 'InvalidType',\n message: self.type + ' Set contains ' + typeOf(values[i]) + ' value'\n });\n }\n }\n },\n\n /**\n * Render the underlying values only when converting to JSON.\n */\n toJSON: function() {\n var self = this;\n return self.values;\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = DynamoDBSet;\n","var util = require('../core').util;\nvar convert = require('./converter');\n\nvar Translator = function(options) {\n options = options || {};\n this.attrValue = options.attrValue;\n this.convertEmptyValues = Boolean(options.convertEmptyValues);\n this.wrapNumbers = Boolean(options.wrapNumbers);\n};\n\nTranslator.prototype.translateInput = function(value, shape) {\n this.mode = 'input';\n return this.translate(value, shape);\n};\n\nTranslator.prototype.translateOutput = function(value, shape) {\n this.mode = 'output';\n return this.translate(value, shape);\n};\n\nTranslator.prototype.translate = function(value, shape) {\n var self = this;\n if (!shape || value === undefined) return undefined;\n\n if (shape.shape === self.attrValue) {\n return convert[self.mode](value, {\n convertEmptyValues: self.convertEmptyValues,\n wrapNumbers: self.wrapNumbers,\n });\n }\n switch (shape.type) {\n case 'structure': return self.translateStructure(value, shape);\n case 'map': return self.translateMap(value, shape);\n case 'list': return self.translateList(value, shape);\n default: return self.translateScalar(value, shape);\n }\n};\n\nTranslator.prototype.translateStructure = function(structure, shape) {\n var self = this;\n if (structure == null) return undefined;\n\n var struct = {};\n util.each(structure, function(name, value) {\n var memberShape = shape.members[name];\n if (memberShape) {\n var result = self.translate(value, memberShape);\n if (result !== undefined) struct[name] = result;\n }\n });\n return struct;\n};\n\nTranslator.prototype.translateList = function(list, shape) {\n var self = this;\n if (list == null) return undefined;\n\n var out = [];\n util.arrayEach(list, function(value) {\n var result = self.translate(value, shape.member);\n if (result === undefined) out.push(null);\n else out.push(result);\n });\n return out;\n};\n\nTranslator.prototype.translateMap = function(map, shape) {\n var self = this;\n if (map == null) return undefined;\n\n var out = {};\n util.each(map, function(key, value) {\n var result = self.translate(value, shape.value);\n if (result === undefined) out[key] = null;\n else out[key] = result;\n });\n return out;\n};\n\nTranslator.prototype.translateScalar = function(value, shape) {\n return shape.toType(value);\n};\n\n/**\n * @api private\n */\nmodule.exports = Translator;\n","var util = require('../core').util;\n\nfunction typeOf(data) {\n if (data === null && typeof data === 'object') {\n return 'null';\n } else if (data !== undefined && isBinary(data)) {\n return 'Binary';\n } else if (data !== undefined && data.constructor) {\n return data.wrapperName || util.typeName(data.constructor);\n } else if (data !== undefined && typeof data === 'object') {\n // this object is the result of Object.create(null), hence the absence of a\n // defined constructor\n return 'Object';\n } else {\n return 'undefined';\n }\n}\n\nfunction isBinary(data) {\n var types = [\n 'Buffer', 'File', 'Blob', 'ArrayBuffer', 'DataView',\n 'Int8Array', 'Uint8Array', 'Uint8ClampedArray',\n 'Int16Array', 'Uint16Array', 'Int32Array', 'Uint32Array',\n 'Float32Array', 'Float64Array'\n ];\n if (util.isNode()) {\n var Stream = util.stream.Stream;\n if (util.Buffer.isBuffer(data) || data instanceof Stream) {\n return true;\n }\n }\n\n for (var i = 0; i < types.length; i++) {\n if (data !== undefined && data.constructor) {\n if (util.isType(data, types[i])) return true;\n if (util.typeName(data.constructor) === types[i]) return true;\n }\n }\n\n return false;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n typeOf: typeOf,\n isBinary: isBinary\n};\n","var eventMessageChunker = require('../event-stream/event-message-chunker').eventMessageChunker;\nvar parseEvent = require('./parse-event').parseEvent;\n\nfunction createEventStream(body, parser, model) {\n var eventMessages = eventMessageChunker(body);\n\n var events = [];\n\n for (var i = 0; i < eventMessages.length; i++) {\n events.push(parseEvent(parser, eventMessages[i], model));\n }\n\n return events;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n createEventStream: createEventStream\n};\n","/**\n * Takes in a buffer of event messages and splits them into individual messages.\n * @param {Buffer} buffer\n * @api private\n */\nfunction eventMessageChunker(buffer) {\n /** @type Buffer[] */\n var messages = [];\n var offset = 0;\n\n while (offset < buffer.length) {\n var totalLength = buffer.readInt32BE(offset);\n\n // create new buffer for individual message (shares memory with original)\n var message = buffer.slice(offset, totalLength + offset);\n // increment offset to it starts at the next message\n offset += totalLength;\n\n messages.push(message);\n }\n\n return messages;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n eventMessageChunker: eventMessageChunker\n};\n","var util = require('../core').util;\nvar toBuffer = util.buffer.toBuffer;\n\n/**\n * A lossless representation of a signed, 64-bit integer. Instances of this\n * class may be used in arithmetic expressions as if they were numeric\n * primitives, but the binary representation will be preserved unchanged as the\n * `bytes` property of the object. The bytes should be encoded as big-endian,\n * two's complement integers.\n * @param {Buffer} bytes\n *\n * @api private\n */\nfunction Int64(bytes) {\n if (bytes.length !== 8) {\n throw new Error('Int64 buffers must be exactly 8 bytes');\n }\n if (!util.Buffer.isBuffer(bytes)) bytes = toBuffer(bytes);\n\n this.bytes = bytes;\n}\n\n/**\n * @param {number} number\n * @returns {Int64}\n *\n * @api private\n */\nInt64.fromNumber = function(number) {\n if (number > 9223372036854775807 || number < -9223372036854775808) {\n throw new Error(\n number + ' is too large (or, if negative, too small) to represent as an Int64'\n );\n }\n\n var bytes = new Uint8Array(8);\n for (\n var i = 7, remaining = Math.abs(Math.round(number));\n i > -1 && remaining > 0;\n i--, remaining /= 256\n ) {\n bytes[i] = remaining;\n }\n\n if (number < 0) {\n negate(bytes);\n }\n\n return new Int64(bytes);\n};\n\n/**\n * @returns {number}\n *\n * @api private\n */\nInt64.prototype.valueOf = function() {\n var bytes = this.bytes.slice(0);\n var negative = bytes[0] & 128;\n if (negative) {\n negate(bytes);\n }\n\n return parseInt(bytes.toString('hex'), 16) * (negative ? -1 : 1);\n};\n\nInt64.prototype.toString = function() {\n return String(this.valueOf());\n};\n\n/**\n * @param {Buffer} bytes\n *\n * @api private\n */\nfunction negate(bytes) {\n for (var i = 0; i < 8; i++) {\n bytes[i] ^= 0xFF;\n }\n for (var i = 7; i > -1; i--) {\n bytes[i]++;\n if (bytes[i] !== 0) {\n break;\n }\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n Int64: Int64\n};\n","var parseMessage = require('./parse-message').parseMessage;\n\n/**\n *\n * @param {*} parser\n * @param {Buffer} message\n * @param {*} shape\n * @api private\n */\nfunction parseEvent(parser, message, shape) {\n var parsedMessage = parseMessage(message);\n\n // check if message is an event or error\n var messageType = parsedMessage.headers[':message-type'];\n if (messageType) {\n if (messageType.value === 'error') {\n throw parseError(parsedMessage);\n } else if (messageType.value !== 'event') {\n // not sure how to parse non-events/non-errors, ignore for now\n return;\n }\n }\n\n // determine event type\n var eventType = parsedMessage.headers[':event-type'];\n // check that the event type is modeled\n var eventModel = shape.members[eventType.value];\n if (!eventModel) {\n return;\n }\n\n var result = {};\n // check if an event payload exists\n var eventPayloadMemberName = eventModel.eventPayloadMemberName;\n if (eventPayloadMemberName) {\n var payloadShape = eventModel.members[eventPayloadMemberName];\n // if the shape is binary, return the byte array\n if (payloadShape.type === 'binary') {\n result[eventPayloadMemberName] = parsedMessage.body;\n } else {\n result[eventPayloadMemberName] = parser.parse(parsedMessage.body.toString(), payloadShape);\n }\n }\n\n // read event headers\n var eventHeaderNames = eventModel.eventHeaderMemberNames;\n for (var i = 0; i < eventHeaderNames.length; i++) {\n var name = eventHeaderNames[i];\n if (parsedMessage.headers[name]) {\n // parse the header!\n result[name] = eventModel.members[name].toType(parsedMessage.headers[name].value);\n }\n }\n\n var output = {};\n output[eventType.value] = result;\n return output;\n}\n\nfunction parseError(message) {\n var errorCode = message.headers[':error-code'];\n var errorMessage = message.headers[':error-message'];\n var error = new Error(errorMessage.value || errorMessage);\n error.code = error.name = errorCode.value || errorCode;\n return error;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n parseEvent: parseEvent\n};\n","var Int64 = require('./int64').Int64;\n\nvar splitMessage = require('./split-message').splitMessage;\n\nvar BOOLEAN_TAG = 'boolean';\nvar BYTE_TAG = 'byte';\nvar SHORT_TAG = 'short';\nvar INT_TAG = 'integer';\nvar LONG_TAG = 'long';\nvar BINARY_TAG = 'binary';\nvar STRING_TAG = 'string';\nvar TIMESTAMP_TAG = 'timestamp';\nvar UUID_TAG = 'uuid';\n\n/**\n * @api private\n *\n * @param {Buffer} headers\n */\nfunction parseHeaders(headers) {\n var out = {};\n var position = 0;\n while (position < headers.length) {\n var nameLength = headers.readUInt8(position++);\n var name = headers.slice(position, position + nameLength).toString();\n position += nameLength;\n switch (headers.readUInt8(position++)) {\n case 0 /* boolTrue */:\n out[name] = {\n type: BOOLEAN_TAG,\n value: true\n };\n break;\n case 1 /* boolFalse */:\n out[name] = {\n type: BOOLEAN_TAG,\n value: false\n };\n break;\n case 2 /* byte */:\n out[name] = {\n type: BYTE_TAG,\n value: headers.readInt8(position++)\n };\n break;\n case 3 /* short */:\n out[name] = {\n type: SHORT_TAG,\n value: headers.readInt16BE(position)\n };\n position += 2;\n break;\n case 4 /* integer */:\n out[name] = {\n type: INT_TAG,\n value: headers.readInt32BE(position)\n };\n position += 4;\n break;\n case 5 /* long */:\n out[name] = {\n type: LONG_TAG,\n value: new Int64(headers.slice(position, position + 8))\n };\n position += 8;\n break;\n case 6 /* byteArray */:\n var binaryLength = headers.readUInt16BE(position);\n position += 2;\n out[name] = {\n type: BINARY_TAG,\n value: headers.slice(position, position + binaryLength)\n };\n position += binaryLength;\n break;\n case 7 /* string */:\n var stringLength = headers.readUInt16BE(position);\n position += 2;\n out[name] = {\n type: STRING_TAG,\n value: headers.slice(\n position,\n position + stringLength\n ).toString()\n };\n position += stringLength;\n break;\n case 8 /* timestamp */:\n out[name] = {\n type: TIMESTAMP_TAG,\n value: new Date(\n new Int64(headers.slice(position, position + 8))\n .valueOf()\n )\n };\n position += 8;\n break;\n case 9 /* uuid */:\n var uuidChars = headers.slice(position, position + 16)\n .toString('hex');\n position += 16;\n out[name] = {\n type: UUID_TAG,\n value: uuidChars.substr(0, 8) + '-' +\n uuidChars.substr(8, 4) + '-' +\n uuidChars.substr(12, 4) + '-' +\n uuidChars.substr(16, 4) + '-' +\n uuidChars.substr(20)\n };\n break;\n default:\n throw new Error('Unrecognized header type tag');\n }\n }\n return out;\n}\n\nfunction parseMessage(message) {\n var parsed = splitMessage(message);\n return { headers: parseHeaders(parsed.headers), body: parsed.body };\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n parseMessage: parseMessage\n};\n","var util = require('../core').util;\nvar toBuffer = util.buffer.toBuffer;\n\n// All prelude components are unsigned, 32-bit integers\nvar PRELUDE_MEMBER_LENGTH = 4;\n// The prelude consists of two components\nvar PRELUDE_LENGTH = PRELUDE_MEMBER_LENGTH * 2;\n// Checksums are always CRC32 hashes.\nvar CHECKSUM_LENGTH = 4;\n// Messages must include a full prelude, a prelude checksum, and a message checksum\nvar MINIMUM_MESSAGE_LENGTH = PRELUDE_LENGTH + CHECKSUM_LENGTH * 2;\n\n/**\n * @api private\n *\n * @param {Buffer} message\n */\nfunction splitMessage(message) {\n if (!util.Buffer.isBuffer(message)) message = toBuffer(message);\n\n if (message.length < MINIMUM_MESSAGE_LENGTH) {\n throw new Error('Provided message too short to accommodate event stream message overhead');\n }\n\n if (message.length !== message.readUInt32BE(0)) {\n throw new Error('Reported message length does not match received message length');\n }\n\n var expectedPreludeChecksum = message.readUInt32BE(PRELUDE_LENGTH);\n\n if (\n expectedPreludeChecksum !== util.crypto.crc32(\n message.slice(0, PRELUDE_LENGTH)\n )\n ) {\n throw new Error(\n 'The prelude checksum specified in the message (' +\n expectedPreludeChecksum +\n ') does not match the calculated CRC32 checksum.'\n );\n }\n\n var expectedMessageChecksum = message.readUInt32BE(message.length - CHECKSUM_LENGTH);\n\n if (\n expectedMessageChecksum !== util.crypto.crc32(\n message.slice(0, message.length - CHECKSUM_LENGTH)\n )\n ) {\n throw new Error(\n 'The message checksum did not match the expected value of ' +\n expectedMessageChecksum\n );\n }\n\n var headersStart = PRELUDE_LENGTH + CHECKSUM_LENGTH;\n var headersEnd = headersStart + message.readUInt32BE(PRELUDE_MEMBER_LENGTH);\n\n return {\n headers: message.slice(headersStart, headersEnd),\n body: message.slice(headersEnd, message.length - CHECKSUM_LENGTH),\n };\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n splitMessage: splitMessage\n};\n","var AWS = require('./core');\nvar SequentialExecutor = require('./sequential_executor');\nvar DISCOVER_ENDPOINT = require('./discover_endpoint').discoverEndpoint;\n/**\n * The namespace used to register global event listeners for request building\n * and sending.\n */\nAWS.EventListeners = {\n /**\n * @!attribute VALIDATE_CREDENTIALS\n * A request listener that validates whether the request is being\n * sent with credentials.\n * Handles the {AWS.Request~validate 'validate' Request event}\n * @example Sending a request without validating credentials\n * var listener = AWS.EventListeners.Core.VALIDATE_CREDENTIALS;\n * request.removeListener('validate', listener);\n * @readonly\n * @return [Function]\n * @!attribute VALIDATE_REGION\n * A request listener that validates whether the region is set\n * for a request.\n * Handles the {AWS.Request~validate 'validate' Request event}\n * @example Sending a request without validating region configuration\n * var listener = AWS.EventListeners.Core.VALIDATE_REGION;\n * request.removeListener('validate', listener);\n * @readonly\n * @return [Function]\n * @!attribute VALIDATE_PARAMETERS\n * A request listener that validates input parameters in a request.\n * Handles the {AWS.Request~validate 'validate' Request event}\n * @example Sending a request without validating parameters\n * var listener = AWS.EventListeners.Core.VALIDATE_PARAMETERS;\n * request.removeListener('validate', listener);\n * @example Disable parameter validation globally\n * AWS.EventListeners.Core.removeListener('validate',\n * AWS.EventListeners.Core.VALIDATE_REGION);\n * @readonly\n * @return [Function]\n * @!attribute SEND\n * A request listener that initiates the HTTP connection for a\n * request being sent. Handles the {AWS.Request~send 'send' Request event}\n * @example Replacing the HTTP handler\n * var listener = AWS.EventListeners.Core.SEND;\n * request.removeListener('send', listener);\n * request.on('send', function(response) {\n * customHandler.send(response);\n * });\n * @return [Function]\n * @readonly\n * @!attribute HTTP_DATA\n * A request listener that reads data from the HTTP connection in order\n * to build the response data.\n * Handles the {AWS.Request~httpData 'httpData' Request event}.\n * Remove this handler if you are overriding the 'httpData' event and\n * do not want extra data processing and buffering overhead.\n * @example Disabling default data processing\n * var listener = AWS.EventListeners.Core.HTTP_DATA;\n * request.removeListener('httpData', listener);\n * @return [Function]\n * @readonly\n */\n Core: {} /* doc hack */\n};\n\n/**\n * @api private\n */\nfunction getOperationAuthtype(req) {\n if (!req.service.api.operations) {\n return '';\n }\n var operation = req.service.api.operations[req.operation];\n return operation ? operation.authtype : '';\n}\n\n/**\n * @api private\n */\nfunction getIdentityType(req) {\n var service = req.service;\n\n if (service.config.signatureVersion) {\n return service.config.signatureVersion;\n }\n\n if (service.api.signatureVersion) {\n return service.api.signatureVersion;\n }\n\n return getOperationAuthtype(req);\n}\n\nAWS.EventListeners = {\n Core: new SequentialExecutor().addNamedListeners(function(add, addAsync) {\n addAsync(\n 'VALIDATE_CREDENTIALS', 'validate',\n function VALIDATE_CREDENTIALS(req, done) {\n if (!req.service.api.signatureVersion && !req.service.config.signatureVersion) return done(); // none\n\n var identityType = getIdentityType(req);\n if (identityType === 'bearer') {\n req.service.config.getToken(function(err) {\n if (err) {\n req.response.error = AWS.util.error(err, {code: 'TokenError'});\n }\n done();\n });\n return;\n }\n\n req.service.config.getCredentials(function(err) {\n if (err) {\n req.response.error = AWS.util.error(err,\n {\n code: 'CredentialsError',\n message: 'Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1'\n }\n );\n }\n done();\n });\n });\n\n add('VALIDATE_REGION', 'validate', function VALIDATE_REGION(req) {\n if (!req.service.isGlobalEndpoint) {\n var dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/);\n if (!req.service.config.region) {\n req.response.error = AWS.util.error(new Error(),\n {code: 'ConfigError', message: 'Missing region in config'});\n } else if (!dnsHostRegex.test(req.service.config.region)) {\n req.response.error = AWS.util.error(new Error(),\n {code: 'ConfigError', message: 'Invalid region in config'});\n }\n }\n });\n\n add('BUILD_IDEMPOTENCY_TOKENS', 'validate', function BUILD_IDEMPOTENCY_TOKENS(req) {\n if (!req.service.api.operations) {\n return;\n }\n var operation = req.service.api.operations[req.operation];\n if (!operation) {\n return;\n }\n var idempotentMembers = operation.idempotentMembers;\n if (!idempotentMembers.length) {\n return;\n }\n // creates a copy of params so user's param object isn't mutated\n var params = AWS.util.copy(req.params);\n for (var i = 0, iLen = idempotentMembers.length; i < iLen; i++) {\n if (!params[idempotentMembers[i]]) {\n // add the member\n params[idempotentMembers[i]] = AWS.util.uuid.v4();\n }\n }\n req.params = params;\n });\n\n add('VALIDATE_PARAMETERS', 'validate', function VALIDATE_PARAMETERS(req) {\n if (!req.service.api.operations) {\n return;\n }\n var rules = req.service.api.operations[req.operation].input;\n var validation = req.service.config.paramValidation;\n new AWS.ParamValidator(validation).validate(rules, req.params);\n });\n\n add('COMPUTE_CHECKSUM', 'afterBuild', function COMPUTE_CHECKSUM(req) {\n if (!req.service.api.operations) {\n return;\n }\n var operation = req.service.api.operations[req.operation];\n if (!operation) {\n return;\n }\n var body = req.httpRequest.body;\n var isNonStreamingPayload = body && (AWS.util.Buffer.isBuffer(body) || typeof body === 'string');\n var headers = req.httpRequest.headers;\n if (\n operation.httpChecksumRequired &&\n req.service.config.computeChecksums &&\n isNonStreamingPayload &&\n !headers['Content-MD5']\n ) {\n var md5 = AWS.util.crypto.md5(body, 'base64');\n headers['Content-MD5'] = md5;\n }\n });\n\n addAsync('COMPUTE_SHA256', 'afterBuild', function COMPUTE_SHA256(req, done) {\n req.haltHandlersOnError();\n if (!req.service.api.operations) {\n return;\n }\n var operation = req.service.api.operations[req.operation];\n var authtype = operation ? operation.authtype : '';\n if (!req.service.api.signatureVersion && !authtype && !req.service.config.signatureVersion) return done(); // none\n if (req.service.getSignerClass(req) === AWS.Signers.V4) {\n var body = req.httpRequest.body || '';\n if (authtype.indexOf('unsigned-body') >= 0) {\n req.httpRequest.headers['X-Amz-Content-Sha256'] = 'UNSIGNED-PAYLOAD';\n return done();\n }\n AWS.util.computeSha256(body, function(err, sha) {\n if (err) {\n done(err);\n }\n else {\n req.httpRequest.headers['X-Amz-Content-Sha256'] = sha;\n done();\n }\n });\n } else {\n done();\n }\n });\n\n add('SET_CONTENT_LENGTH', 'afterBuild', function SET_CONTENT_LENGTH(req) {\n var authtype = getOperationAuthtype(req);\n var payloadMember = AWS.util.getRequestPayloadShape(req);\n if (req.httpRequest.headers['Content-Length'] === undefined) {\n try {\n var length = AWS.util.string.byteLength(req.httpRequest.body);\n req.httpRequest.headers['Content-Length'] = length;\n } catch (err) {\n if (payloadMember && payloadMember.isStreaming) {\n if (payloadMember.requiresLength) {\n //streaming payload requires length(s3, glacier)\n throw err;\n } else if (authtype.indexOf('unsigned-body') >= 0) {\n //unbounded streaming payload(lex, mediastore)\n req.httpRequest.headers['Transfer-Encoding'] = 'chunked';\n return;\n } else {\n throw err;\n }\n }\n throw err;\n }\n }\n });\n\n add('SET_HTTP_HOST', 'afterBuild', function SET_HTTP_HOST(req) {\n req.httpRequest.headers['Host'] = req.httpRequest.endpoint.host;\n });\n\n add('SET_TRACE_ID', 'afterBuild', function SET_TRACE_ID(req) {\n var traceIdHeaderName = 'X-Amzn-Trace-Id';\n if (AWS.util.isNode() && !Object.hasOwnProperty.call(req.httpRequest.headers, traceIdHeaderName)) {\n var ENV_LAMBDA_FUNCTION_NAME = 'AWS_LAMBDA_FUNCTION_NAME';\n var ENV_TRACE_ID = '_X_AMZN_TRACE_ID';\n var functionName = process.env[ENV_LAMBDA_FUNCTION_NAME];\n var traceId = process.env[ENV_TRACE_ID];\n if (\n typeof functionName === 'string' &&\n functionName.length > 0 &&\n typeof traceId === 'string' &&\n traceId.length > 0\n ) {\n req.httpRequest.headers[traceIdHeaderName] = traceId;\n }\n }\n });\n\n add('RESTART', 'restart', function RESTART() {\n var err = this.response.error;\n if (!err || !err.retryable) return;\n\n this.httpRequest = new AWS.HttpRequest(\n this.service.endpoint,\n this.service.region\n );\n\n if (this.response.retryCount < this.service.config.maxRetries) {\n this.response.retryCount++;\n } else {\n this.response.error = null;\n }\n });\n\n var addToHead = true;\n addAsync('DISCOVER_ENDPOINT', 'sign', DISCOVER_ENDPOINT, addToHead);\n\n addAsync('SIGN', 'sign', function SIGN(req, done) {\n var service = req.service;\n var identityType = getIdentityType(req);\n if (!identityType || identityType.length === 0) return done(); // none\n\n if (identityType === 'bearer') {\n service.config.getToken(function (err, token) {\n if (err) {\n req.response.error = err;\n return done();\n }\n\n try {\n var SignerClass = service.getSignerClass(req);\n var signer = new SignerClass(req.httpRequest);\n signer.addAuthorization(token);\n } catch (e) {\n req.response.error = e;\n }\n done();\n });\n } else {\n service.config.getCredentials(function (err, credentials) {\n if (err) {\n req.response.error = err;\n return done();\n }\n\n try {\n var date = service.getSkewCorrectedDate();\n var SignerClass = service.getSignerClass(req);\n var operations = req.service.api.operations || {};\n var operation = operations[req.operation];\n var signer = new SignerClass(req.httpRequest,\n service.getSigningName(req),\n {\n signatureCache: service.config.signatureCache,\n operation: operation,\n signatureVersion: service.api.signatureVersion\n });\n signer.setServiceClientId(service._clientId);\n\n // clear old authorization headers\n delete req.httpRequest.headers['Authorization'];\n delete req.httpRequest.headers['Date'];\n delete req.httpRequest.headers['X-Amz-Date'];\n\n // add new authorization\n signer.addAuthorization(credentials, date);\n req.signedAt = date;\n } catch (e) {\n req.response.error = e;\n }\n done();\n });\n\n }\n });\n\n add('VALIDATE_RESPONSE', 'validateResponse', function VALIDATE_RESPONSE(resp) {\n if (this.service.successfulResponse(resp, this)) {\n resp.data = {};\n resp.error = null;\n } else {\n resp.data = null;\n resp.error = AWS.util.error(new Error(),\n {code: 'UnknownError', message: 'An unknown error occurred.'});\n }\n });\n\n add('ERROR', 'error', function ERROR(err, resp) {\n var awsQueryCompatible = resp.request.service.api.awsQueryCompatible;\n if (awsQueryCompatible) {\n var headers = resp.httpResponse.headers;\n var queryErrorCode = headers ? headers['x-amzn-query-error'] : undefined;\n if (queryErrorCode && queryErrorCode.includes(';')) {\n resp.error.code = queryErrorCode.split(';')[0];\n }\n }\n }, true);\n\n addAsync('SEND', 'send', function SEND(resp, done) {\n resp.httpResponse._abortCallback = done;\n resp.error = null;\n resp.data = null;\n\n function callback(httpResp) {\n resp.httpResponse.stream = httpResp;\n var stream = resp.request.httpRequest.stream;\n var service = resp.request.service;\n var api = service.api;\n var operationName = resp.request.operation;\n var operation = api.operations[operationName] || {};\n\n httpResp.on('headers', function onHeaders(statusCode, headers, statusMessage) {\n resp.request.emit(\n 'httpHeaders',\n [statusCode, headers, resp, statusMessage]\n );\n\n if (!resp.httpResponse.streaming) {\n if (AWS.HttpClient.streamsApiVersion === 2) { // streams2 API check\n // if we detect event streams, we're going to have to\n // return the stream immediately\n if (operation.hasEventOutput && service.successfulResponse(resp)) {\n // skip reading the IncomingStream\n resp.request.emit('httpDone');\n done();\n return;\n }\n\n httpResp.on('readable', function onReadable() {\n var data = httpResp.read();\n if (data !== null) {\n resp.request.emit('httpData', [data, resp]);\n }\n });\n } else { // legacy streams API\n httpResp.on('data', function onData(data) {\n resp.request.emit('httpData', [data, resp]);\n });\n }\n }\n });\n\n httpResp.on('end', function onEnd() {\n if (!stream || !stream.didCallback) {\n if (AWS.HttpClient.streamsApiVersion === 2 && (operation.hasEventOutput && service.successfulResponse(resp))) {\n // don't concatenate response chunks when streaming event stream data when response is successful\n return;\n }\n resp.request.emit('httpDone');\n done();\n }\n });\n }\n\n function progress(httpResp) {\n httpResp.on('sendProgress', function onSendProgress(value) {\n resp.request.emit('httpUploadProgress', [value, resp]);\n });\n\n httpResp.on('receiveProgress', function onReceiveProgress(value) {\n resp.request.emit('httpDownloadProgress', [value, resp]);\n });\n }\n\n function error(err) {\n if (err.code !== 'RequestAbortedError') {\n var errCode = err.code === 'TimeoutError' ? err.code : 'NetworkingError';\n err = AWS.util.error(err, {\n code: errCode,\n region: resp.request.httpRequest.region,\n hostname: resp.request.httpRequest.endpoint.hostname,\n retryable: true\n });\n }\n resp.error = err;\n resp.request.emit('httpError', [resp.error, resp], function() {\n done();\n });\n }\n\n function executeSend() {\n var http = AWS.HttpClient.getInstance();\n var httpOptions = resp.request.service.config.httpOptions || {};\n try {\n var stream = http.handleRequest(resp.request.httpRequest, httpOptions,\n callback, error);\n progress(stream);\n } catch (err) {\n error(err);\n }\n }\n var timeDiff = (resp.request.service.getSkewCorrectedDate() - this.signedAt) / 1000;\n if (timeDiff >= 60 * 10) { // if we signed 10min ago, re-sign\n this.emit('sign', [this], function(err) {\n if (err) done(err);\n else executeSend();\n });\n } else {\n executeSend();\n }\n });\n\n add('HTTP_HEADERS', 'httpHeaders',\n function HTTP_HEADERS(statusCode, headers, resp, statusMessage) {\n resp.httpResponse.statusCode = statusCode;\n resp.httpResponse.statusMessage = statusMessage;\n resp.httpResponse.headers = headers;\n resp.httpResponse.body = AWS.util.buffer.toBuffer('');\n resp.httpResponse.buffers = [];\n resp.httpResponse.numBytes = 0;\n var dateHeader = headers.date || headers.Date;\n var service = resp.request.service;\n if (dateHeader) {\n var serverTime = Date.parse(dateHeader);\n if (service.config.correctClockSkew\n && service.isClockSkewed(serverTime)) {\n service.applyClockOffset(serverTime);\n }\n }\n });\n\n add('HTTP_DATA', 'httpData', function HTTP_DATA(chunk, resp) {\n if (chunk) {\n if (AWS.util.isNode()) {\n resp.httpResponse.numBytes += chunk.length;\n\n var total = resp.httpResponse.headers['content-length'];\n var progress = { loaded: resp.httpResponse.numBytes, total: total };\n resp.request.emit('httpDownloadProgress', [progress, resp]);\n }\n\n resp.httpResponse.buffers.push(AWS.util.buffer.toBuffer(chunk));\n }\n });\n\n add('HTTP_DONE', 'httpDone', function HTTP_DONE(resp) {\n // convert buffers array into single buffer\n if (resp.httpResponse.buffers && resp.httpResponse.buffers.length > 0) {\n var body = AWS.util.buffer.concat(resp.httpResponse.buffers);\n resp.httpResponse.body = body;\n }\n delete resp.httpResponse.numBytes;\n delete resp.httpResponse.buffers;\n });\n\n add('FINALIZE_ERROR', 'retry', function FINALIZE_ERROR(resp) {\n if (resp.httpResponse.statusCode) {\n resp.error.statusCode = resp.httpResponse.statusCode;\n if (resp.error.retryable === undefined) {\n resp.error.retryable = this.service.retryableError(resp.error, this);\n }\n }\n });\n\n add('INVALIDATE_CREDENTIALS', 'retry', function INVALIDATE_CREDENTIALS(resp) {\n if (!resp.error) return;\n switch (resp.error.code) {\n case 'RequestExpired': // EC2 only\n case 'ExpiredTokenException':\n case 'ExpiredToken':\n resp.error.retryable = true;\n resp.request.service.config.credentials.expired = true;\n }\n });\n\n add('EXPIRED_SIGNATURE', 'retry', function EXPIRED_SIGNATURE(resp) {\n var err = resp.error;\n if (!err) return;\n if (typeof err.code === 'string' && typeof err.message === 'string') {\n if (err.code.match(/Signature/) && err.message.match(/expired/)) {\n resp.error.retryable = true;\n }\n }\n });\n\n add('CLOCK_SKEWED', 'retry', function CLOCK_SKEWED(resp) {\n if (!resp.error) return;\n if (this.service.clockSkewError(resp.error)\n && this.service.config.correctClockSkew) {\n resp.error.retryable = true;\n }\n });\n\n add('REDIRECT', 'retry', function REDIRECT(resp) {\n if (resp.error && resp.error.statusCode >= 300 &&\n resp.error.statusCode < 400 && resp.httpResponse.headers['location']) {\n this.httpRequest.endpoint =\n new AWS.Endpoint(resp.httpResponse.headers['location']);\n this.httpRequest.headers['Host'] = this.httpRequest.endpoint.host;\n this.httpRequest.path = this.httpRequest.endpoint.path;\n resp.error.redirect = true;\n resp.error.retryable = true;\n }\n });\n\n add('RETRY_CHECK', 'retry', function RETRY_CHECK(resp) {\n if (resp.error) {\n if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) {\n resp.error.retryDelay = 0;\n } else if (resp.retryCount < resp.maxRetries) {\n resp.error.retryDelay = this.service.retryDelays(resp.retryCount, resp.error) || 0;\n }\n }\n });\n\n addAsync('RESET_RETRY_STATE', 'afterRetry', function RESET_RETRY_STATE(resp, done) {\n var delay, willRetry = false;\n\n if (resp.error) {\n delay = resp.error.retryDelay || 0;\n if (resp.error.retryable && resp.retryCount < resp.maxRetries) {\n resp.retryCount++;\n willRetry = true;\n } else if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) {\n resp.redirectCount++;\n willRetry = true;\n }\n }\n\n // delay < 0 is a signal from customBackoff to skip retries\n if (willRetry && delay >= 0) {\n resp.error = null;\n setTimeout(done, delay);\n } else {\n done();\n }\n });\n }),\n\n CorePost: new SequentialExecutor().addNamedListeners(function(add) {\n add('EXTRACT_REQUEST_ID', 'extractData', AWS.util.extractRequestId);\n add('EXTRACT_REQUEST_ID', 'extractError', AWS.util.extractRequestId);\n\n add('ENOTFOUND_ERROR', 'httpError', function ENOTFOUND_ERROR(err) {\n function isDNSError(err) {\n return err.errno === 'ENOTFOUND' ||\n typeof err.errno === 'number' &&\n typeof AWS.util.getSystemErrorName === 'function' &&\n ['EAI_NONAME', 'EAI_NODATA'].indexOf(AWS.util.getSystemErrorName(err.errno) >= 0);\n }\n if (err.code === 'NetworkingError' && isDNSError(err)) {\n var message = 'Inaccessible host: `' + err.hostname + '\\' at port `' + err.port +\n '\\'. This service may not be available in the `' + err.region +\n '\\' region.';\n this.response.error = AWS.util.error(new Error(message), {\n code: 'UnknownEndpoint',\n region: err.region,\n hostname: err.hostname,\n retryable: true,\n originalError: err\n });\n }\n });\n }),\n\n Logger: new SequentialExecutor().addNamedListeners(function(add) {\n add('LOG_REQUEST', 'complete', function LOG_REQUEST(resp) {\n var req = resp.request;\n var logger = req.service.config.logger;\n if (!logger) return;\n function filterSensitiveLog(inputShape, shape) {\n if (!shape) {\n return shape;\n }\n if (inputShape.isSensitive) {\n return '***SensitiveInformation***';\n }\n switch (inputShape.type) {\n case 'structure':\n var struct = {};\n AWS.util.each(shape, function(subShapeName, subShape) {\n if (Object.prototype.hasOwnProperty.call(inputShape.members, subShapeName)) {\n struct[subShapeName] = filterSensitiveLog(inputShape.members[subShapeName], subShape);\n } else {\n struct[subShapeName] = subShape;\n }\n });\n return struct;\n case 'list':\n var list = [];\n AWS.util.arrayEach(shape, function(subShape, index) {\n list.push(filterSensitiveLog(inputShape.member, subShape));\n });\n return list;\n case 'map':\n var map = {};\n AWS.util.each(shape, function(key, value) {\n map[key] = filterSensitiveLog(inputShape.value, value);\n });\n return map;\n default:\n return shape;\n }\n }\n\n function buildMessage() {\n var time = resp.request.service.getSkewCorrectedDate().getTime();\n var delta = (time - req.startTime.getTime()) / 1000;\n var ansi = logger.isTTY ? true : false;\n var status = resp.httpResponse.statusCode;\n var censoredParams = req.params;\n if (\n req.service.api.operations &&\n req.service.api.operations[req.operation] &&\n req.service.api.operations[req.operation].input\n ) {\n var inputShape = req.service.api.operations[req.operation].input;\n censoredParams = filterSensitiveLog(inputShape, req.params);\n }\n var params = require('util').inspect(censoredParams, true, null);\n var message = '';\n if (ansi) message += '\\x1B[33m';\n message += '[AWS ' + req.service.serviceIdentifier + ' ' + status;\n message += ' ' + delta.toString() + 's ' + resp.retryCount + ' retries]';\n if (ansi) message += '\\x1B[0;1m';\n message += ' ' + AWS.util.string.lowerFirst(req.operation);\n message += '(' + params + ')';\n if (ansi) message += '\\x1B[0m';\n return message;\n }\n\n var line = buildMessage();\n if (typeof logger.log === 'function') {\n logger.log(line);\n } else if (typeof logger.write === 'function') {\n logger.write(line + '\\n');\n }\n });\n }),\n\n Json: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/json');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n }),\n\n Rest: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/rest');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n }),\n\n RestJson: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/rest_json');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n add('UNSET_CONTENT_LENGTH', 'afterBuild', svc.unsetContentLength);\n }),\n\n RestXml: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/rest_xml');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n }),\n\n Query: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/query');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n })\n};\n","var AWS = require('./core');\nvar inherit = AWS.util.inherit;\n\n/**\n * The endpoint that a service will talk to, for example,\n * `'https://ec2.ap-southeast-1.amazonaws.com'`. If\n * you need to override an endpoint for a service, you can\n * set the endpoint on a service by passing the endpoint\n * object with the `endpoint` option key:\n *\n * ```javascript\n * var ep = new AWS.Endpoint('awsproxy.example.com');\n * var s3 = new AWS.S3({endpoint: ep});\n * s3.service.endpoint.hostname == 'awsproxy.example.com'\n * ```\n *\n * Note that if you do not specify a protocol, the protocol will\n * be selected based on your current {AWS.config} configuration.\n *\n * @!attribute protocol\n * @return [String] the protocol (http or https) of the endpoint\n * URL\n * @!attribute hostname\n * @return [String] the host portion of the endpoint, e.g.,\n * example.com\n * @!attribute host\n * @return [String] the host portion of the endpoint including\n * the port, e.g., example.com:80\n * @!attribute port\n * @return [Integer] the port of the endpoint\n * @!attribute href\n * @return [String] the full URL of the endpoint\n */\nAWS.Endpoint = inherit({\n\n /**\n * @overload Endpoint(endpoint)\n * Constructs a new endpoint given an endpoint URL. If the\n * URL omits a protocol (http or https), the default protocol\n * set in the global {AWS.config} will be used.\n * @param endpoint [String] the URL to construct an endpoint from\n */\n constructor: function Endpoint(endpoint, config) {\n AWS.util.hideProperties(this, ['slashes', 'auth', 'hash', 'search', 'query']);\n\n if (typeof endpoint === 'undefined' || endpoint === null) {\n throw new Error('Invalid endpoint: ' + endpoint);\n } else if (typeof endpoint !== 'string') {\n return AWS.util.copy(endpoint);\n }\n\n if (!endpoint.match(/^http/)) {\n var useSSL = config && config.sslEnabled !== undefined ?\n config.sslEnabled : AWS.config.sslEnabled;\n endpoint = (useSSL ? 'https' : 'http') + '://' + endpoint;\n }\n\n AWS.util.update(this, AWS.util.urlParse(endpoint));\n\n // Ensure the port property is set as an integer\n if (this.port) {\n this.port = parseInt(this.port, 10);\n } else {\n this.port = this.protocol === 'https:' ? 443 : 80;\n }\n }\n\n});\n\n/**\n * The low level HTTP request object, encapsulating all HTTP header\n * and body data sent by a service request.\n *\n * @!attribute method\n * @return [String] the HTTP method of the request\n * @!attribute path\n * @return [String] the path portion of the URI, e.g.,\n * \"/list/?start=5&num=10\"\n * @!attribute headers\n * @return [map]\n * a map of header keys and their respective values\n * @!attribute body\n * @return [String] the request body payload\n * @!attribute endpoint\n * @return [AWS.Endpoint] the endpoint for the request\n * @!attribute region\n * @api private\n * @return [String] the region, for signing purposes only.\n */\nAWS.HttpRequest = inherit({\n\n /**\n * @api private\n */\n constructor: function HttpRequest(endpoint, region) {\n endpoint = new AWS.Endpoint(endpoint);\n this.method = 'POST';\n this.path = endpoint.path || '/';\n this.headers = {};\n this.body = '';\n this.endpoint = endpoint;\n this.region = region;\n this._userAgent = '';\n this.setUserAgent();\n },\n\n /**\n * @api private\n */\n setUserAgent: function setUserAgent() {\n this._userAgent = this.headers[this.getUserAgentHeaderName()] = AWS.util.userAgent();\n },\n\n getUserAgentHeaderName: function getUserAgentHeaderName() {\n var prefix = AWS.util.isBrowser() ? 'X-Amz-' : '';\n return prefix + 'User-Agent';\n },\n\n /**\n * @api private\n */\n appendToUserAgent: function appendToUserAgent(agentPartial) {\n if (typeof agentPartial === 'string' && agentPartial) {\n this._userAgent += ' ' + agentPartial;\n }\n this.headers[this.getUserAgentHeaderName()] = this._userAgent;\n },\n\n /**\n * @api private\n */\n getUserAgent: function getUserAgent() {\n return this._userAgent;\n },\n\n /**\n * @return [String] the part of the {path} excluding the\n * query string\n */\n pathname: function pathname() {\n return this.path.split('?', 1)[0];\n },\n\n /**\n * @return [String] the query string portion of the {path}\n */\n search: function search() {\n var query = this.path.split('?', 2)[1];\n if (query) {\n query = AWS.util.queryStringParse(query);\n return AWS.util.queryParamsToString(query);\n }\n return '';\n },\n\n /**\n * @api private\n * update httpRequest endpoint with endpoint string\n */\n updateEndpoint: function updateEndpoint(endpointStr) {\n var newEndpoint = new AWS.Endpoint(endpointStr);\n this.endpoint = newEndpoint;\n this.path = newEndpoint.path || '/';\n if (this.headers['Host']) {\n this.headers['Host'] = newEndpoint.host;\n }\n }\n});\n\n/**\n * The low level HTTP response object, encapsulating all HTTP header\n * and body data returned from the request.\n *\n * @!attribute statusCode\n * @return [Integer] the HTTP status code of the response (e.g., 200, 404)\n * @!attribute headers\n * @return [map]\n * a map of response header keys and their respective values\n * @!attribute body\n * @return [String] the response body payload\n * @!attribute [r] streaming\n * @return [Boolean] whether this response is being streamed at a low-level.\n * Defaults to `false` (buffered reads). Do not modify this manually, use\n * {createUnbufferedStream} to convert the stream to unbuffered mode\n * instead.\n */\nAWS.HttpResponse = inherit({\n\n /**\n * @api private\n */\n constructor: function HttpResponse() {\n this.statusCode = undefined;\n this.headers = {};\n this.body = undefined;\n this.streaming = false;\n this.stream = null;\n },\n\n /**\n * Disables buffering on the HTTP response and returns the stream for reading.\n * @return [Stream, XMLHttpRequest, null] the underlying stream object.\n * Use this object to directly read data off of the stream.\n * @note This object is only available after the {AWS.Request~httpHeaders}\n * event has fired. This method must be called prior to\n * {AWS.Request~httpData}.\n * @example Taking control of a stream\n * request.on('httpHeaders', function(statusCode, headers) {\n * if (statusCode < 300) {\n * if (headers.etag === 'xyz') {\n * // pipe the stream, disabling buffering\n * var stream = this.response.httpResponse.createUnbufferedStream();\n * stream.pipe(process.stdout);\n * } else { // abort this request and set a better error message\n * this.abort();\n * this.response.error = new Error('Invalid ETag');\n * }\n * }\n * }).send(console.log);\n */\n createUnbufferedStream: function createUnbufferedStream() {\n this.streaming = true;\n return this.stream;\n }\n});\n\n\nAWS.HttpClient = inherit({});\n\n/**\n * @api private\n */\nAWS.HttpClient.getInstance = function getInstance() {\n if (this.singleton === undefined) {\n this.singleton = new this();\n }\n return this.singleton;\n};\n","var AWS = require('../core');\nvar EventEmitter = require('events').EventEmitter;\nrequire('../http');\n\n/**\n * @api private\n */\nAWS.XHRClient = AWS.util.inherit({\n handleRequest: function handleRequest(httpRequest, httpOptions, callback, errCallback) {\n var self = this;\n var endpoint = httpRequest.endpoint;\n var emitter = new EventEmitter();\n var href = endpoint.protocol + '//' + endpoint.hostname;\n if (endpoint.port !== 80 && endpoint.port !== 443) {\n href += ':' + endpoint.port;\n }\n href += httpRequest.path;\n\n var xhr = new XMLHttpRequest(), headersEmitted = false;\n httpRequest.stream = xhr;\n\n xhr.addEventListener('readystatechange', function() {\n try {\n if (xhr.status === 0) return; // 0 code is invalid\n } catch (e) { return; }\n\n if (this.readyState >= this.HEADERS_RECEIVED && !headersEmitted) {\n emitter.statusCode = xhr.status;\n emitter.headers = self.parseHeaders(xhr.getAllResponseHeaders());\n emitter.emit(\n 'headers',\n emitter.statusCode,\n emitter.headers,\n xhr.statusText\n );\n headersEmitted = true;\n }\n if (this.readyState === this.DONE) {\n self.finishRequest(xhr, emitter);\n }\n }, false);\n xhr.upload.addEventListener('progress', function (evt) {\n emitter.emit('sendProgress', evt);\n });\n xhr.addEventListener('progress', function (evt) {\n emitter.emit('receiveProgress', evt);\n }, false);\n xhr.addEventListener('timeout', function () {\n errCallback(AWS.util.error(new Error('Timeout'), {code: 'TimeoutError'}));\n }, false);\n xhr.addEventListener('error', function () {\n errCallback(AWS.util.error(new Error('Network Failure'), {\n code: 'NetworkingError'\n }));\n }, false);\n xhr.addEventListener('abort', function () {\n errCallback(AWS.util.error(new Error('Request aborted'), {\n code: 'RequestAbortedError'\n }));\n }, false);\n\n callback(emitter);\n xhr.open(httpRequest.method, href, httpOptions.xhrAsync !== false);\n AWS.util.each(httpRequest.headers, function (key, value) {\n if (key !== 'Content-Length' && key !== 'User-Agent' && key !== 'Host') {\n xhr.setRequestHeader(key, value);\n }\n });\n\n if (httpOptions.timeout && httpOptions.xhrAsync !== false) {\n xhr.timeout = httpOptions.timeout;\n }\n\n if (httpOptions.xhrWithCredentials) {\n xhr.withCredentials = true;\n }\n try { xhr.responseType = 'arraybuffer'; } catch (e) {}\n\n try {\n if (httpRequest.body) {\n xhr.send(httpRequest.body);\n } else {\n xhr.send();\n }\n } catch (err) {\n if (httpRequest.body && typeof httpRequest.body.buffer === 'object') {\n xhr.send(httpRequest.body.buffer); // send ArrayBuffer directly\n } else {\n throw err;\n }\n }\n\n return emitter;\n },\n\n parseHeaders: function parseHeaders(rawHeaders) {\n var headers = {};\n AWS.util.arrayEach(rawHeaders.split(/\\r?\\n/), function (line) {\n var key = line.split(':', 1)[0];\n var value = line.substring(key.length + 2);\n if (key.length > 0) headers[key.toLowerCase()] = value;\n });\n return headers;\n },\n\n finishRequest: function finishRequest(xhr, emitter) {\n var buffer;\n if (xhr.responseType === 'arraybuffer' && xhr.response) {\n var ab = xhr.response;\n buffer = new AWS.util.Buffer(ab.byteLength);\n var view = new Uint8Array(ab);\n for (var i = 0; i < buffer.length; ++i) {\n buffer[i] = view[i];\n }\n }\n\n try {\n if (!buffer && typeof xhr.responseText === 'string') {\n buffer = new AWS.util.Buffer(xhr.responseText);\n }\n } catch (e) {}\n\n if (buffer) emitter.emit('data', buffer);\n emitter.emit('end');\n }\n});\n\n/**\n * @api private\n */\nAWS.HttpClient.prototype = AWS.XHRClient.prototype;\n\n/**\n * @api private\n */\nAWS.HttpClient.streamsApiVersion = 1;\n","var util = require('../util');\n\nfunction JsonBuilder() { }\n\nJsonBuilder.prototype.build = function(value, shape) {\n return JSON.stringify(translate(value, shape));\n};\n\nfunction translate(value, shape) {\n if (!shape || value === undefined || value === null) return undefined;\n\n switch (shape.type) {\n case 'structure': return translateStructure(value, shape);\n case 'map': return translateMap(value, shape);\n case 'list': return translateList(value, shape);\n default: return translateScalar(value, shape);\n }\n}\n\nfunction translateStructure(structure, shape) {\n if (shape.isDocument) {\n return structure;\n }\n var struct = {};\n util.each(structure, function(name, value) {\n var memberShape = shape.members[name];\n if (memberShape) {\n if (memberShape.location !== 'body') return;\n var locationName = memberShape.isLocationName ? memberShape.name : name;\n var result = translate(value, memberShape);\n if (result !== undefined) struct[locationName] = result;\n }\n });\n return struct;\n}\n\nfunction translateList(list, shape) {\n var out = [];\n util.arrayEach(list, function(value) {\n var result = translate(value, shape.member);\n if (result !== undefined) out.push(result);\n });\n return out;\n}\n\nfunction translateMap(map, shape) {\n var out = {};\n util.each(map, function(key, value) {\n var result = translate(value, shape.value);\n if (result !== undefined) out[key] = result;\n });\n return out;\n}\n\nfunction translateScalar(value, shape) {\n return shape.toWireFormat(value);\n}\n\n/**\n * @api private\n */\nmodule.exports = JsonBuilder;\n","var util = require('../util');\n\nfunction JsonParser() { }\n\nJsonParser.prototype.parse = function(value, shape) {\n return translate(JSON.parse(value), shape);\n};\n\nfunction translate(value, shape) {\n if (!shape || value === undefined) return undefined;\n\n switch (shape.type) {\n case 'structure': return translateStructure(value, shape);\n case 'map': return translateMap(value, shape);\n case 'list': return translateList(value, shape);\n default: return translateScalar(value, shape);\n }\n}\n\nfunction translateStructure(structure, shape) {\n if (structure == null) return undefined;\n if (shape.isDocument) return structure;\n\n var struct = {};\n var shapeMembers = shape.members;\n var isAwsQueryCompatible = shape.api && shape.api.awsQueryCompatible;\n util.each(shapeMembers, function(name, memberShape) {\n var locationName = memberShape.isLocationName ? memberShape.name : name;\n if (Object.prototype.hasOwnProperty.call(structure, locationName)) {\n var value = structure[locationName];\n var result = translate(value, memberShape);\n if (result !== undefined) struct[name] = result;\n } else if (isAwsQueryCompatible && memberShape.defaultValue) {\n if (memberShape.type === 'list') {\n struct[name] = typeof memberShape.defaultValue === 'function' ? memberShape.defaultValue() : memberShape.defaultValue;\n }\n }\n });\n return struct;\n}\n\nfunction translateList(list, shape) {\n if (list == null) return undefined;\n\n var out = [];\n util.arrayEach(list, function(value) {\n var result = translate(value, shape.member);\n if (result === undefined) out.push(null);\n else out.push(result);\n });\n return out;\n}\n\nfunction translateMap(map, shape) {\n if (map == null) return undefined;\n\n var out = {};\n util.each(map, function(key, value) {\n var result = translate(value, shape.value);\n if (result === undefined) out[key] = null;\n else out[key] = result;\n });\n return out;\n}\n\nfunction translateScalar(value, shape) {\n return shape.toType(value);\n}\n\n/**\n * @api private\n */\nmodule.exports = JsonParser;\n","var warning = [\n 'The AWS SDK for JavaScript (v2) will enter maintenance mode',\n 'on September 8, 2024 and reach end-of-support on September 8, 2025.\\n',\n 'Please migrate your code to use AWS SDK for JavaScript (v3).',\n 'For more information, check blog post at https://a.co/cUPnyil'\n].join('\\n');\n\nmodule.exports = {\n suppress: false\n};\n\n/**\n * To suppress this message:\n * @example\n * require('aws-sdk/lib/maintenance_mode_message').suppress = true;\n */\nfunction emitWarning() {\n if (typeof process === 'undefined')\n return;\n\n // Skip maintenance mode message in Lambda environments\n if (\n typeof process.env === 'object' &&\n typeof process.env.AWS_EXECUTION_ENV !== 'undefined' &&\n process.env.AWS_EXECUTION_ENV.indexOf('AWS_Lambda_') === 0\n ) {\n return;\n }\n\n if (\n typeof process.env === 'object' &&\n typeof process.env.AWS_SDK_JS_SUPPRESS_MAINTENANCE_MODE_MESSAGE !== 'undefined'\n ) {\n return;\n }\n\n if (typeof process.emitWarning === 'function') {\n process.emitWarning(warning, {\n type: 'NOTE'\n });\n }\n}\n\nsetTimeout(function () {\n if (!module.exports.suppress) {\n emitWarning();\n }\n}, 0);\n","var Collection = require('./collection');\nvar Operation = require('./operation');\nvar Shape = require('./shape');\nvar Paginator = require('./paginator');\nvar ResourceWaiter = require('./resource_waiter');\nvar metadata = require('../../apis/metadata.json');\n\nvar util = require('../util');\nvar property = util.property;\nvar memoizedProperty = util.memoizedProperty;\n\nfunction Api(api, options) {\n var self = this;\n api = api || {};\n options = options || {};\n options.api = this;\n\n api.metadata = api.metadata || {};\n\n var serviceIdentifier = options.serviceIdentifier;\n delete options.serviceIdentifier;\n\n property(this, 'isApi', true, false);\n property(this, 'apiVersion', api.metadata.apiVersion);\n property(this, 'endpointPrefix', api.metadata.endpointPrefix);\n property(this, 'signingName', api.metadata.signingName);\n property(this, 'globalEndpoint', api.metadata.globalEndpoint);\n property(this, 'signatureVersion', api.metadata.signatureVersion);\n property(this, 'jsonVersion', api.metadata.jsonVersion);\n property(this, 'targetPrefix', api.metadata.targetPrefix);\n property(this, 'protocol', api.metadata.protocol);\n property(this, 'timestampFormat', api.metadata.timestampFormat);\n property(this, 'xmlNamespaceUri', api.metadata.xmlNamespace);\n property(this, 'abbreviation', api.metadata.serviceAbbreviation);\n property(this, 'fullName', api.metadata.serviceFullName);\n property(this, 'serviceId', api.metadata.serviceId);\n if (serviceIdentifier && metadata[serviceIdentifier]) {\n property(this, 'xmlNoDefaultLists', metadata[serviceIdentifier].xmlNoDefaultLists, false);\n }\n\n memoizedProperty(this, 'className', function() {\n var name = api.metadata.serviceAbbreviation || api.metadata.serviceFullName;\n if (!name) return null;\n\n name = name.replace(/^Amazon|AWS\\s*|\\(.*|\\s+|\\W+/g, '');\n if (name === 'ElasticLoadBalancing') name = 'ELB';\n return name;\n });\n\n function addEndpointOperation(name, operation) {\n if (operation.endpointoperation === true) {\n property(self, 'endpointOperation', util.string.lowerFirst(name));\n }\n if (operation.endpointdiscovery && !self.hasRequiredEndpointDiscovery) {\n property(\n self,\n 'hasRequiredEndpointDiscovery',\n operation.endpointdiscovery.required === true\n );\n }\n }\n\n property(this, 'operations', new Collection(api.operations, options, function(name, operation) {\n return new Operation(name, operation, options);\n }, util.string.lowerFirst, addEndpointOperation));\n\n property(this, 'shapes', new Collection(api.shapes, options, function(name, shape) {\n return Shape.create(shape, options);\n }));\n\n property(this, 'paginators', new Collection(api.paginators, options, function(name, paginator) {\n return new Paginator(name, paginator, options);\n }));\n\n property(this, 'waiters', new Collection(api.waiters, options, function(name, waiter) {\n return new ResourceWaiter(name, waiter, options);\n }, util.string.lowerFirst));\n\n if (options.documentation) {\n property(this, 'documentation', api.documentation);\n property(this, 'documentationUrl', api.documentationUrl);\n }\n property(this, 'awsQueryCompatible', api.metadata.awsQueryCompatible);\n}\n\n/**\n * @api private\n */\nmodule.exports = Api;\n","var memoizedProperty = require('../util').memoizedProperty;\n\nfunction memoize(name, value, factory, nameTr) {\n memoizedProperty(this, nameTr(name), function() {\n return factory(name, value);\n });\n}\n\nfunction Collection(iterable, options, factory, nameTr, callback) {\n nameTr = nameTr || String;\n var self = this;\n\n for (var id in iterable) {\n if (Object.prototype.hasOwnProperty.call(iterable, id)) {\n memoize.call(self, id, iterable[id], factory, nameTr);\n if (callback) callback(id, iterable[id]);\n }\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = Collection;\n","var Shape = require('./shape');\n\nvar util = require('../util');\nvar property = util.property;\nvar memoizedProperty = util.memoizedProperty;\n\nfunction Operation(name, operation, options) {\n var self = this;\n options = options || {};\n\n property(this, 'name', operation.name || name);\n property(this, 'api', options.api, false);\n\n operation.http = operation.http || {};\n property(this, 'endpoint', operation.endpoint);\n property(this, 'httpMethod', operation.http.method || 'POST');\n property(this, 'httpPath', operation.http.requestUri || '/');\n property(this, 'authtype', operation.authtype || '');\n property(\n this,\n 'endpointDiscoveryRequired',\n operation.endpointdiscovery ?\n (operation.endpointdiscovery.required ? 'REQUIRED' : 'OPTIONAL') :\n 'NULL'\n );\n\n // httpChecksum replaces usage of httpChecksumRequired, but some APIs\n // (s3control) still uses old trait.\n var httpChecksumRequired = operation.httpChecksumRequired\n || (operation.httpChecksum && operation.httpChecksum.requestChecksumRequired);\n property(this, 'httpChecksumRequired', httpChecksumRequired, false);\n\n memoizedProperty(this, 'input', function() {\n if (!operation.input) {\n return new Shape.create({type: 'structure'}, options);\n }\n return Shape.create(operation.input, options);\n });\n\n memoizedProperty(this, 'output', function() {\n if (!operation.output) {\n return new Shape.create({type: 'structure'}, options);\n }\n return Shape.create(operation.output, options);\n });\n\n memoizedProperty(this, 'errors', function() {\n var list = [];\n if (!operation.errors) return null;\n\n for (var i = 0; i < operation.errors.length; i++) {\n list.push(Shape.create(operation.errors[i], options));\n }\n\n return list;\n });\n\n memoizedProperty(this, 'paginator', function() {\n return options.api.paginators[name];\n });\n\n if (options.documentation) {\n property(this, 'documentation', operation.documentation);\n property(this, 'documentationUrl', operation.documentationUrl);\n }\n\n // idempotentMembers only tracks top-level input shapes\n memoizedProperty(this, 'idempotentMembers', function() {\n var idempotentMembers = [];\n var input = self.input;\n var members = input.members;\n if (!input.members) {\n return idempotentMembers;\n }\n for (var name in members) {\n if (!members.hasOwnProperty(name)) {\n continue;\n }\n if (members[name].isIdempotent === true) {\n idempotentMembers.push(name);\n }\n }\n return idempotentMembers;\n });\n\n memoizedProperty(this, 'hasEventOutput', function() {\n var output = self.output;\n return hasEventStream(output);\n });\n}\n\nfunction hasEventStream(topLevelShape) {\n var members = topLevelShape.members;\n var payload = topLevelShape.payload;\n\n if (!topLevelShape.members) {\n return false;\n }\n\n if (payload) {\n var payloadMember = members[payload];\n return payloadMember.isEventStream;\n }\n\n // check if any member is an event stream\n for (var name in members) {\n if (!members.hasOwnProperty(name)) {\n if (members[name].isEventStream === true) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * @api private\n */\nmodule.exports = Operation;\n","var property = require('../util').property;\n\nfunction Paginator(name, paginator) {\n property(this, 'inputToken', paginator.input_token);\n property(this, 'limitKey', paginator.limit_key);\n property(this, 'moreResults', paginator.more_results);\n property(this, 'outputToken', paginator.output_token);\n property(this, 'resultKey', paginator.result_key);\n}\n\n/**\n * @api private\n */\nmodule.exports = Paginator;\n","var util = require('../util');\nvar property = util.property;\n\nfunction ResourceWaiter(name, waiter, options) {\n options = options || {};\n property(this, 'name', name);\n property(this, 'api', options.api, false);\n\n if (waiter.operation) {\n property(this, 'operation', util.string.lowerFirst(waiter.operation));\n }\n\n var self = this;\n var keys = [\n 'type',\n 'description',\n 'delay',\n 'maxAttempts',\n 'acceptors'\n ];\n\n keys.forEach(function(key) {\n var value = waiter[key];\n if (value) {\n property(self, key, value);\n }\n });\n}\n\n/**\n * @api private\n */\nmodule.exports = ResourceWaiter;\n","var Collection = require('./collection');\n\nvar util = require('../util');\n\nfunction property(obj, name, value) {\n if (value !== null && value !== undefined) {\n util.property.apply(this, arguments);\n }\n}\n\nfunction memoizedProperty(obj, name) {\n if (!obj.constructor.prototype[name]) {\n util.memoizedProperty.apply(this, arguments);\n }\n}\n\nfunction Shape(shape, options, memberName) {\n options = options || {};\n\n property(this, 'shape', shape.shape);\n property(this, 'api', options.api, false);\n property(this, 'type', shape.type);\n property(this, 'enum', shape.enum);\n property(this, 'min', shape.min);\n property(this, 'max', shape.max);\n property(this, 'pattern', shape.pattern);\n property(this, 'location', shape.location || this.location || 'body');\n property(this, 'name', this.name || shape.xmlName || shape.queryName ||\n shape.locationName || memberName);\n property(this, 'isStreaming', shape.streaming || this.isStreaming || false);\n property(this, 'requiresLength', shape.requiresLength, false);\n property(this, 'isComposite', shape.isComposite || false);\n property(this, 'isShape', true, false);\n property(this, 'isQueryName', Boolean(shape.queryName), false);\n property(this, 'isLocationName', Boolean(shape.locationName), false);\n property(this, 'isIdempotent', shape.idempotencyToken === true);\n property(this, 'isJsonValue', shape.jsonvalue === true);\n property(this, 'isSensitive', shape.sensitive === true || shape.prototype && shape.prototype.sensitive === true);\n property(this, 'isEventStream', Boolean(shape.eventstream), false);\n property(this, 'isEvent', Boolean(shape.event), false);\n property(this, 'isEventPayload', Boolean(shape.eventpayload), false);\n property(this, 'isEventHeader', Boolean(shape.eventheader), false);\n property(this, 'isTimestampFormatSet', Boolean(shape.timestampFormat) || shape.prototype && shape.prototype.isTimestampFormatSet === true, false);\n property(this, 'endpointDiscoveryId', Boolean(shape.endpointdiscoveryid), false);\n property(this, 'hostLabel', Boolean(shape.hostLabel), false);\n\n if (options.documentation) {\n property(this, 'documentation', shape.documentation);\n property(this, 'documentationUrl', shape.documentationUrl);\n }\n\n if (shape.xmlAttribute) {\n property(this, 'isXmlAttribute', shape.xmlAttribute || false);\n }\n\n // type conversion and parsing\n property(this, 'defaultValue', null);\n this.toWireFormat = function(value) {\n if (value === null || value === undefined) return '';\n return value;\n };\n this.toType = function(value) { return value; };\n}\n\n/**\n * @api private\n */\nShape.normalizedTypes = {\n character: 'string',\n double: 'float',\n long: 'integer',\n short: 'integer',\n biginteger: 'integer',\n bigdecimal: 'float',\n blob: 'binary'\n};\n\n/**\n * @api private\n */\nShape.types = {\n 'structure': StructureShape,\n 'list': ListShape,\n 'map': MapShape,\n 'boolean': BooleanShape,\n 'timestamp': TimestampShape,\n 'float': FloatShape,\n 'integer': IntegerShape,\n 'string': StringShape,\n 'base64': Base64Shape,\n 'binary': BinaryShape\n};\n\nShape.resolve = function resolve(shape, options) {\n if (shape.shape) {\n var refShape = options.api.shapes[shape.shape];\n if (!refShape) {\n throw new Error('Cannot find shape reference: ' + shape.shape);\n }\n\n return refShape;\n } else {\n return null;\n }\n};\n\nShape.create = function create(shape, options, memberName) {\n if (shape.isShape) return shape;\n\n var refShape = Shape.resolve(shape, options);\n if (refShape) {\n var filteredKeys = Object.keys(shape);\n if (!options.documentation) {\n filteredKeys = filteredKeys.filter(function(name) {\n return !name.match(/documentation/);\n });\n }\n\n // create an inline shape with extra members\n var InlineShape = function() {\n refShape.constructor.call(this, shape, options, memberName);\n };\n InlineShape.prototype = refShape;\n return new InlineShape();\n } else {\n // set type if not set\n if (!shape.type) {\n if (shape.members) shape.type = 'structure';\n else if (shape.member) shape.type = 'list';\n else if (shape.key) shape.type = 'map';\n else shape.type = 'string';\n }\n\n // normalize types\n var origType = shape.type;\n if (Shape.normalizedTypes[shape.type]) {\n shape.type = Shape.normalizedTypes[shape.type];\n }\n\n if (Shape.types[shape.type]) {\n return new Shape.types[shape.type](shape, options, memberName);\n } else {\n throw new Error('Unrecognized shape type: ' + origType);\n }\n }\n};\n\nfunction CompositeShape(shape) {\n Shape.apply(this, arguments);\n property(this, 'isComposite', true);\n\n if (shape.flattened) {\n property(this, 'flattened', shape.flattened || false);\n }\n}\n\nfunction StructureShape(shape, options) {\n var self = this;\n var requiredMap = null, firstInit = !this.isShape;\n\n CompositeShape.apply(this, arguments);\n\n if (firstInit) {\n property(this, 'defaultValue', function() { return {}; });\n property(this, 'members', {});\n property(this, 'memberNames', []);\n property(this, 'required', []);\n property(this, 'isRequired', function() { return false; });\n property(this, 'isDocument', Boolean(shape.document));\n }\n\n if (shape.members) {\n property(this, 'members', new Collection(shape.members, options, function(name, member) {\n return Shape.create(member, options, name);\n }));\n memoizedProperty(this, 'memberNames', function() {\n return shape.xmlOrder || Object.keys(shape.members);\n });\n\n if (shape.event) {\n memoizedProperty(this, 'eventPayloadMemberName', function() {\n var members = self.members;\n var memberNames = self.memberNames;\n // iterate over members to find ones that are event payloads\n for (var i = 0, iLen = memberNames.length; i < iLen; i++) {\n if (members[memberNames[i]].isEventPayload) {\n return memberNames[i];\n }\n }\n });\n\n memoizedProperty(this, 'eventHeaderMemberNames', function() {\n var members = self.members;\n var memberNames = self.memberNames;\n var eventHeaderMemberNames = [];\n // iterate over members to find ones that are event headers\n for (var i = 0, iLen = memberNames.length; i < iLen; i++) {\n if (members[memberNames[i]].isEventHeader) {\n eventHeaderMemberNames.push(memberNames[i]);\n }\n }\n return eventHeaderMemberNames;\n });\n }\n }\n\n if (shape.required) {\n property(this, 'required', shape.required);\n property(this, 'isRequired', function(name) {\n if (!requiredMap) {\n requiredMap = {};\n for (var i = 0; i < shape.required.length; i++) {\n requiredMap[shape.required[i]] = true;\n }\n }\n\n return requiredMap[name];\n }, false, true);\n }\n\n property(this, 'resultWrapper', shape.resultWrapper || null);\n\n if (shape.payload) {\n property(this, 'payload', shape.payload);\n }\n\n if (typeof shape.xmlNamespace === 'string') {\n property(this, 'xmlNamespaceUri', shape.xmlNamespace);\n } else if (typeof shape.xmlNamespace === 'object') {\n property(this, 'xmlNamespacePrefix', shape.xmlNamespace.prefix);\n property(this, 'xmlNamespaceUri', shape.xmlNamespace.uri);\n }\n}\n\nfunction ListShape(shape, options) {\n var self = this, firstInit = !this.isShape;\n CompositeShape.apply(this, arguments);\n\n if (firstInit) {\n property(this, 'defaultValue', function() { return []; });\n }\n\n if (shape.member) {\n memoizedProperty(this, 'member', function() {\n return Shape.create(shape.member, options);\n });\n }\n\n if (this.flattened) {\n var oldName = this.name;\n memoizedProperty(this, 'name', function() {\n return self.member.name || oldName;\n });\n }\n}\n\nfunction MapShape(shape, options) {\n var firstInit = !this.isShape;\n CompositeShape.apply(this, arguments);\n\n if (firstInit) {\n property(this, 'defaultValue', function() { return {}; });\n property(this, 'key', Shape.create({type: 'string'}, options));\n property(this, 'value', Shape.create({type: 'string'}, options));\n }\n\n if (shape.key) {\n memoizedProperty(this, 'key', function() {\n return Shape.create(shape.key, options);\n });\n }\n if (shape.value) {\n memoizedProperty(this, 'value', function() {\n return Shape.create(shape.value, options);\n });\n }\n}\n\nfunction TimestampShape(shape) {\n var self = this;\n Shape.apply(this, arguments);\n\n if (shape.timestampFormat) {\n property(this, 'timestampFormat', shape.timestampFormat);\n } else if (self.isTimestampFormatSet && this.timestampFormat) {\n property(this, 'timestampFormat', this.timestampFormat);\n } else if (this.location === 'header') {\n property(this, 'timestampFormat', 'rfc822');\n } else if (this.location === 'querystring') {\n property(this, 'timestampFormat', 'iso8601');\n } else if (this.api) {\n switch (this.api.protocol) {\n case 'json':\n case 'rest-json':\n property(this, 'timestampFormat', 'unixTimestamp');\n break;\n case 'rest-xml':\n case 'query':\n case 'ec2':\n property(this, 'timestampFormat', 'iso8601');\n break;\n }\n }\n\n this.toType = function(value) {\n if (value === null || value === undefined) return null;\n if (typeof value.toUTCString === 'function') return value;\n return typeof value === 'string' || typeof value === 'number' ?\n util.date.parseTimestamp(value) : null;\n };\n\n this.toWireFormat = function(value) {\n return util.date.format(value, self.timestampFormat);\n };\n}\n\nfunction StringShape() {\n Shape.apply(this, arguments);\n\n var nullLessProtocols = ['rest-xml', 'query', 'ec2'];\n this.toType = function(value) {\n value = this.api && nullLessProtocols.indexOf(this.api.protocol) > -1 ?\n value || '' : value;\n if (this.isJsonValue) {\n return JSON.parse(value);\n }\n\n return value && typeof value.toString === 'function' ?\n value.toString() : value;\n };\n\n this.toWireFormat = function(value) {\n return this.isJsonValue ? JSON.stringify(value) : value;\n };\n}\n\nfunction FloatShape() {\n Shape.apply(this, arguments);\n\n this.toType = function(value) {\n if (value === null || value === undefined) return null;\n return parseFloat(value);\n };\n this.toWireFormat = this.toType;\n}\n\nfunction IntegerShape() {\n Shape.apply(this, arguments);\n\n this.toType = function(value) {\n if (value === null || value === undefined) return null;\n return parseInt(value, 10);\n };\n this.toWireFormat = this.toType;\n}\n\nfunction BinaryShape() {\n Shape.apply(this, arguments);\n this.toType = function(value) {\n var buf = util.base64.decode(value);\n if (this.isSensitive && util.isNode() && typeof util.Buffer.alloc === 'function') {\n /* Node.js can create a Buffer that is not isolated.\n * i.e. buf.byteLength !== buf.buffer.byteLength\n * This means that the sensitive data is accessible to anyone with access to buf.buffer.\n * If this is the node shared Buffer, then other code within this process _could_ find this secret.\n * Copy sensitive data to an isolated Buffer and zero the sensitive data.\n * While this is safe to do here, copying this code somewhere else may produce unexpected results.\n */\n var secureBuf = util.Buffer.alloc(buf.length, buf);\n buf.fill(0);\n buf = secureBuf;\n }\n return buf;\n };\n this.toWireFormat = util.base64.encode;\n}\n\nfunction Base64Shape() {\n BinaryShape.apply(this, arguments);\n}\n\nfunction BooleanShape() {\n Shape.apply(this, arguments);\n\n this.toType = function(value) {\n if (typeof value === 'boolean') return value;\n if (value === null || value === undefined) return null;\n return value === 'true';\n };\n}\n\n/**\n * @api private\n */\nShape.shapes = {\n StructureShape: StructureShape,\n ListShape: ListShape,\n MapShape: MapShape,\n StringShape: StringShape,\n BooleanShape: BooleanShape,\n Base64Shape: Base64Shape\n};\n\n/**\n * @api private\n */\nmodule.exports = Shape;\n","var AWS = require('./core');\n\n/**\n * @api private\n */\nAWS.ParamValidator = AWS.util.inherit({\n /**\n * Create a new validator object.\n *\n * @param validation [Boolean|map] whether input parameters should be\n * validated against the operation description before sending the\n * request. Pass a map to enable any of the following specific\n * validation features:\n *\n * * **min** [Boolean] — Validates that a value meets the min\n * constraint. This is enabled by default when paramValidation is set\n * to `true`.\n * * **max** [Boolean] — Validates that a value meets the max\n * constraint.\n * * **pattern** [Boolean] — Validates that a string value matches a\n * regular expression.\n * * **enum** [Boolean] — Validates that a string value matches one\n * of the allowable enum values.\n */\n constructor: function ParamValidator(validation) {\n if (validation === true || validation === undefined) {\n validation = {'min': true};\n }\n this.validation = validation;\n },\n\n validate: function validate(shape, params, context) {\n this.errors = [];\n this.validateMember(shape, params || {}, context || 'params');\n\n if (this.errors.length > 1) {\n var msg = this.errors.join('\\n* ');\n msg = 'There were ' + this.errors.length +\n ' validation errors:\\n* ' + msg;\n throw AWS.util.error(new Error(msg),\n {code: 'MultipleValidationErrors', errors: this.errors});\n } else if (this.errors.length === 1) {\n throw this.errors[0];\n } else {\n return true;\n }\n },\n\n fail: function fail(code, message) {\n this.errors.push(AWS.util.error(new Error(message), {code: code}));\n },\n\n validateStructure: function validateStructure(shape, params, context) {\n if (shape.isDocument) return true;\n\n this.validateType(params, context, ['object'], 'structure');\n var paramName;\n for (var i = 0; shape.required && i < shape.required.length; i++) {\n paramName = shape.required[i];\n var value = params[paramName];\n if (value === undefined || value === null) {\n this.fail('MissingRequiredParameter',\n 'Missing required key \\'' + paramName + '\\' in ' + context);\n }\n }\n\n // validate hash members\n for (paramName in params) {\n if (!Object.prototype.hasOwnProperty.call(params, paramName)) continue;\n\n var paramValue = params[paramName],\n memberShape = shape.members[paramName];\n\n if (memberShape !== undefined) {\n var memberContext = [context, paramName].join('.');\n this.validateMember(memberShape, paramValue, memberContext);\n } else if (paramValue !== undefined && paramValue !== null) {\n this.fail('UnexpectedParameter',\n 'Unexpected key \\'' + paramName + '\\' found in ' + context);\n }\n }\n\n return true;\n },\n\n validateMember: function validateMember(shape, param, context) {\n switch (shape.type) {\n case 'structure':\n return this.validateStructure(shape, param, context);\n case 'list':\n return this.validateList(shape, param, context);\n case 'map':\n return this.validateMap(shape, param, context);\n default:\n return this.validateScalar(shape, param, context);\n }\n },\n\n validateList: function validateList(shape, params, context) {\n if (this.validateType(params, context, [Array])) {\n this.validateRange(shape, params.length, context, 'list member count');\n // validate array members\n for (var i = 0; i < params.length; i++) {\n this.validateMember(shape.member, params[i], context + '[' + i + ']');\n }\n }\n },\n\n validateMap: function validateMap(shape, params, context) {\n if (this.validateType(params, context, ['object'], 'map')) {\n // Build up a count of map members to validate range traits.\n var mapCount = 0;\n for (var param in params) {\n if (!Object.prototype.hasOwnProperty.call(params, param)) continue;\n // Validate any map key trait constraints\n this.validateMember(shape.key, param,\n context + '[key=\\'' + param + '\\']');\n this.validateMember(shape.value, params[param],\n context + '[\\'' + param + '\\']');\n mapCount++;\n }\n this.validateRange(shape, mapCount, context, 'map member count');\n }\n },\n\n validateScalar: function validateScalar(shape, value, context) {\n switch (shape.type) {\n case null:\n case undefined:\n case 'string':\n return this.validateString(shape, value, context);\n case 'base64':\n case 'binary':\n return this.validatePayload(value, context);\n case 'integer':\n case 'float':\n return this.validateNumber(shape, value, context);\n case 'boolean':\n return this.validateType(value, context, ['boolean']);\n case 'timestamp':\n return this.validateType(value, context, [Date,\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$/, 'number'],\n 'Date object, ISO-8601 string, or a UNIX timestamp');\n default:\n return this.fail('UnkownType', 'Unhandled type ' +\n shape.type + ' for ' + context);\n }\n },\n\n validateString: function validateString(shape, value, context) {\n var validTypes = ['string'];\n if (shape.isJsonValue) {\n validTypes = validTypes.concat(['number', 'object', 'boolean']);\n }\n if (value !== null && this.validateType(value, context, validTypes)) {\n this.validateEnum(shape, value, context);\n this.validateRange(shape, value.length, context, 'string length');\n this.validatePattern(shape, value, context);\n this.validateUri(shape, value, context);\n }\n },\n\n validateUri: function validateUri(shape, value, context) {\n if (shape['location'] === 'uri') {\n if (value.length === 0) {\n this.fail('UriParameterError', 'Expected uri parameter to have length >= 1,'\n + ' but found \"' + value +'\" for ' + context);\n }\n }\n },\n\n validatePattern: function validatePattern(shape, value, context) {\n if (this.validation['pattern'] && shape['pattern'] !== undefined) {\n if (!(new RegExp(shape['pattern'])).test(value)) {\n this.fail('PatternMatchError', 'Provided value \"' + value + '\" '\n + 'does not match regex pattern /' + shape['pattern'] + '/ for '\n + context);\n }\n }\n },\n\n validateRange: function validateRange(shape, value, context, descriptor) {\n if (this.validation['min']) {\n if (shape['min'] !== undefined && value < shape['min']) {\n this.fail('MinRangeError', 'Expected ' + descriptor + ' >= '\n + shape['min'] + ', but found ' + value + ' for ' + context);\n }\n }\n if (this.validation['max']) {\n if (shape['max'] !== undefined && value > shape['max']) {\n this.fail('MaxRangeError', 'Expected ' + descriptor + ' <= '\n + shape['max'] + ', but found ' + value + ' for ' + context);\n }\n }\n },\n\n validateEnum: function validateRange(shape, value, context) {\n if (this.validation['enum'] && shape['enum'] !== undefined) {\n // Fail if the string value is not present in the enum list\n if (shape['enum'].indexOf(value) === -1) {\n this.fail('EnumError', 'Found string value of ' + value + ', but '\n + 'expected ' + shape['enum'].join('|') + ' for ' + context);\n }\n }\n },\n\n validateType: function validateType(value, context, acceptedTypes, type) {\n // We will not log an error for null or undefined, but we will return\n // false so that callers know that the expected type was not strictly met.\n if (value === null || value === undefined) return false;\n\n var foundInvalidType = false;\n for (var i = 0; i < acceptedTypes.length; i++) {\n if (typeof acceptedTypes[i] === 'string') {\n if (typeof value === acceptedTypes[i]) return true;\n } else if (acceptedTypes[i] instanceof RegExp) {\n if ((value || '').toString().match(acceptedTypes[i])) return true;\n } else {\n if (value instanceof acceptedTypes[i]) return true;\n if (AWS.util.isType(value, acceptedTypes[i])) return true;\n if (!type && !foundInvalidType) acceptedTypes = acceptedTypes.slice();\n acceptedTypes[i] = AWS.util.typeName(acceptedTypes[i]);\n }\n foundInvalidType = true;\n }\n\n var acceptedType = type;\n if (!acceptedType) {\n acceptedType = acceptedTypes.join(', ').replace(/,([^,]+)$/, ', or$1');\n }\n\n var vowel = acceptedType.match(/^[aeiou]/i) ? 'n' : '';\n this.fail('InvalidParameterType', 'Expected ' + context + ' to be a' +\n vowel + ' ' + acceptedType);\n return false;\n },\n\n validateNumber: function validateNumber(shape, value, context) {\n if (value === null || value === undefined) return;\n if (typeof value === 'string') {\n var castedValue = parseFloat(value);\n if (castedValue.toString() === value) value = castedValue;\n }\n if (this.validateType(value, context, ['number'])) {\n this.validateRange(shape, value, context, 'numeric value');\n }\n },\n\n validatePayload: function validatePayload(value, context) {\n if (value === null || value === undefined) return;\n if (typeof value === 'string') return;\n if (value && typeof value.byteLength === 'number') return; // typed arrays\n if (AWS.util.isNode()) { // special check for buffer/stream in Node.js\n var Stream = AWS.util.stream.Stream;\n if (AWS.util.Buffer.isBuffer(value) || value instanceof Stream) return;\n } else {\n if (typeof Blob !== void 0 && value instanceof Blob) return;\n }\n\n var types = ['Buffer', 'Stream', 'File', 'Blob', 'ArrayBuffer', 'DataView'];\n if (value) {\n for (var i = 0; i < types.length; i++) {\n if (AWS.util.isType(value, types[i])) return;\n if (AWS.util.typeName(value.constructor) === types[i]) return;\n }\n }\n\n this.fail('InvalidParameterType', 'Expected ' + context + ' to be a ' +\n 'string, Buffer, Stream, Blob, or typed array object');\n }\n});\n","var AWS = require('../core');\nvar rest = AWS.Protocol.Rest;\n\n/**\n * A presigner object can be used to generate presigned urls for the Polly service.\n */\nAWS.Polly.Presigner = AWS.util.inherit({\n /**\n * Creates a presigner object with a set of configuration options.\n *\n * @option options params [map] An optional map of parameters to bind to every\n * request sent by this service object.\n * @option options service [AWS.Polly] An optional pre-configured instance\n * of the AWS.Polly service object to use for requests. The object may\n * bound parameters used by the presigner.\n * @see AWS.Polly.constructor\n */\n constructor: function Signer(options) {\n options = options || {};\n this.options = options;\n this.service = options.service;\n this.bindServiceObject(options);\n this._operations = {};\n },\n\n /**\n * @api private\n */\n bindServiceObject: function bindServiceObject(options) {\n options = options || {};\n if (!this.service) {\n this.service = new AWS.Polly(options);\n } else {\n var config = AWS.util.copy(this.service.config);\n this.service = new this.service.constructor.__super__(config);\n this.service.config.params = AWS.util.merge(this.service.config.params || {}, options.params);\n }\n },\n\n /**\n * @api private\n */\n modifyInputMembers: function modifyInputMembers(input) {\n // make copies of the input so we don't overwrite the api\n // need to be careful to copy anything we access/modify\n var modifiedInput = AWS.util.copy(input);\n modifiedInput.members = AWS.util.copy(input.members);\n AWS.util.each(input.members, function(name, member) {\n modifiedInput.members[name] = AWS.util.copy(member);\n // update location and locationName\n if (!member.location || member.location === 'body') {\n modifiedInput.members[name].location = 'querystring';\n modifiedInput.members[name].locationName = name;\n }\n });\n return modifiedInput;\n },\n\n /**\n * @api private\n */\n convertPostToGet: function convertPostToGet(req) {\n // convert method\n req.httpRequest.method = 'GET';\n\n var operation = req.service.api.operations[req.operation];\n // get cached operation input first\n var input = this._operations[req.operation];\n if (!input) {\n // modify the original input\n this._operations[req.operation] = input = this.modifyInputMembers(operation.input);\n }\n\n var uri = rest.generateURI(req.httpRequest.endpoint.path, operation.httpPath, input, req.params);\n\n req.httpRequest.path = uri;\n req.httpRequest.body = '';\n\n // don't need these headers on a GET request\n delete req.httpRequest.headers['Content-Length'];\n delete req.httpRequest.headers['Content-Type'];\n },\n\n /**\n * @overload getSynthesizeSpeechUrl(params = {}, [expires = 3600], [callback])\n * Generate a presigned url for {AWS.Polly.synthesizeSpeech}.\n * @note You must ensure that you have static or previously resolved\n * credentials if you call this method synchronously (with no callback),\n * otherwise it may not properly sign the request. If you cannot guarantee\n * this (you are using an asynchronous credential provider, i.e., EC2\n * IAM roles), you should always call this method with an asynchronous\n * callback.\n * @param params [map] parameters to pass to the operation. See the {AWS.Polly.synthesizeSpeech}\n * operation for the expected operation parameters.\n * @param expires [Integer] (3600) the number of seconds to expire the pre-signed URL operation in.\n * Defaults to 1 hour.\n * @return [string] if called synchronously (with no callback), returns the signed URL.\n * @return [null] nothing is returned if a callback is provided.\n * @callback callback function (err, url)\n * If a callback is supplied, it is called when a signed URL has been generated.\n * @param err [Error] the error object returned from the presigner.\n * @param url [String] the signed URL.\n * @see AWS.Polly.synthesizeSpeech\n */\n getSynthesizeSpeechUrl: function getSynthesizeSpeechUrl(params, expires, callback) {\n var self = this;\n var request = this.service.makeRequest('synthesizeSpeech', params);\n // remove existing build listeners\n request.removeAllListeners('build');\n request.on('build', function(req) {\n self.convertPostToGet(req);\n });\n return request.presign(expires, callback);\n }\n});\n","var util = require('../util');\nvar AWS = require('../core');\n\n/**\n * Prepend prefix defined by API model to endpoint that's already\n * constructed. This feature does not apply to operations using\n * endpoint discovery and can be disabled.\n * @api private\n */\nfunction populateHostPrefix(request) {\n var enabled = request.service.config.hostPrefixEnabled;\n if (!enabled) return request;\n var operationModel = request.service.api.operations[request.operation];\n //don't marshal host prefix when operation has endpoint discovery traits\n if (hasEndpointDiscover(request)) return request;\n if (operationModel.endpoint && operationModel.endpoint.hostPrefix) {\n var hostPrefixNotation = operationModel.endpoint.hostPrefix;\n var hostPrefix = expandHostPrefix(hostPrefixNotation, request.params, operationModel.input);\n prependEndpointPrefix(request.httpRequest.endpoint, hostPrefix);\n validateHostname(request.httpRequest.endpoint.hostname);\n }\n return request;\n}\n\n/**\n * @api private\n */\nfunction hasEndpointDiscover(request) {\n var api = request.service.api;\n var operationModel = api.operations[request.operation];\n var isEndpointOperation = api.endpointOperation && (api.endpointOperation === util.string.lowerFirst(operationModel.name));\n return (operationModel.endpointDiscoveryRequired !== 'NULL' || isEndpointOperation === true);\n}\n\n/**\n * @api private\n */\nfunction expandHostPrefix(hostPrefixNotation, params, shape) {\n util.each(shape.members, function(name, member) {\n if (member.hostLabel === true) {\n if (typeof params[name] !== 'string' || params[name] === '') {\n throw util.error(new Error(), {\n message: 'Parameter ' + name + ' should be a non-empty string.',\n code: 'InvalidParameter'\n });\n }\n var regex = new RegExp('\\\\{' + name + '\\\\}', 'g');\n hostPrefixNotation = hostPrefixNotation.replace(regex, params[name]);\n }\n });\n return hostPrefixNotation;\n}\n\n/**\n * @api private\n */\nfunction prependEndpointPrefix(endpoint, prefix) {\n if (endpoint.host) {\n endpoint.host = prefix + endpoint.host;\n }\n if (endpoint.hostname) {\n endpoint.hostname = prefix + endpoint.hostname;\n }\n}\n\n/**\n * @api private\n */\nfunction validateHostname(hostname) {\n var labels = hostname.split('.');\n //Reference: https://tools.ietf.org/html/rfc1123#section-2\n var hostPattern = /^[a-zA-Z0-9]{1}$|^[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9]$/;\n util.arrayEach(labels, function(label) {\n if (!label.length || label.length < 1 || label.length > 63) {\n throw util.error(new Error(), {\n code: 'ValidationError',\n message: 'Hostname label length should be between 1 to 63 characters, inclusive.'\n });\n }\n if (!hostPattern.test(label)) {\n throw AWS.util.error(new Error(),\n {code: 'ValidationError', message: label + ' is not hostname compatible.'});\n }\n });\n}\n\nmodule.exports = {\n populateHostPrefix: populateHostPrefix\n};\n","var util = require('../util');\nvar JsonBuilder = require('../json/builder');\nvar JsonParser = require('../json/parser');\nvar populateHostPrefix = require('./helpers').populateHostPrefix;\n\nfunction buildRequest(req) {\n var httpRequest = req.httpRequest;\n var api = req.service.api;\n var target = api.targetPrefix + '.' + api.operations[req.operation].name;\n var version = api.jsonVersion || '1.0';\n var input = api.operations[req.operation].input;\n var builder = new JsonBuilder();\n\n if (version === 1) version = '1.0';\n\n if (api.awsQueryCompatible) {\n if (!httpRequest.params) {\n httpRequest.params = {};\n }\n // because Query protocol does this.\n Object.assign(httpRequest.params, req.params);\n }\n\n httpRequest.body = builder.build(req.params || {}, input);\n httpRequest.headers['Content-Type'] = 'application/x-amz-json-' + version;\n httpRequest.headers['X-Amz-Target'] = target;\n\n populateHostPrefix(req);\n}\n\nfunction extractError(resp) {\n var error = {};\n var httpResponse = resp.httpResponse;\n\n error.code = httpResponse.headers['x-amzn-errortype'] || 'UnknownError';\n if (typeof error.code === 'string') {\n error.code = error.code.split(':')[0];\n }\n\n if (httpResponse.body.length > 0) {\n try {\n var e = JSON.parse(httpResponse.body.toString());\n\n var code = e.__type || e.code || e.Code;\n if (code) {\n error.code = code.split('#').pop();\n }\n if (error.code === 'RequestEntityTooLarge') {\n error.message = 'Request body must be less than 1 MB';\n } else {\n error.message = (e.message || e.Message || null);\n }\n\n // The minimized models do not have error shapes, so\n // without expanding the model size, it's not possible\n // to validate the response shape (members) or\n // check if any are sensitive to logging.\n\n // Assign the fields as non-enumerable, allowing specific access only.\n for (var key in e || {}) {\n if (key === 'code' || key === 'message') {\n continue;\n }\n error['[' + key + ']'] = 'See error.' + key + ' for details.';\n Object.defineProperty(error, key, {\n value: e[key],\n enumerable: false,\n writable: true\n });\n }\n } catch (e) {\n error.statusCode = httpResponse.statusCode;\n error.message = httpResponse.statusMessage;\n }\n } else {\n error.statusCode = httpResponse.statusCode;\n error.message = httpResponse.statusCode.toString();\n }\n\n resp.error = util.error(new Error(), error);\n}\n\nfunction extractData(resp) {\n var body = resp.httpResponse.body.toString() || '{}';\n if (resp.request.service.config.convertResponseTypes === false) {\n resp.data = JSON.parse(body);\n } else {\n var operation = resp.request.service.api.operations[resp.request.operation];\n var shape = operation.output || {};\n var parser = new JsonParser();\n resp.data = parser.parse(body, shape);\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData\n};\n","var AWS = require('../core');\nvar util = require('../util');\nvar QueryParamSerializer = require('../query/query_param_serializer');\nvar Shape = require('../model/shape');\nvar populateHostPrefix = require('./helpers').populateHostPrefix;\n\nfunction buildRequest(req) {\n var operation = req.service.api.operations[req.operation];\n var httpRequest = req.httpRequest;\n httpRequest.headers['Content-Type'] =\n 'application/x-www-form-urlencoded; charset=utf-8';\n httpRequest.params = {\n Version: req.service.api.apiVersion,\n Action: operation.name\n };\n\n // convert the request parameters into a list of query params,\n // e.g. Deeply.NestedParam.0.Name=value\n var builder = new QueryParamSerializer();\n builder.serialize(req.params, operation.input, function(name, value) {\n httpRequest.params[name] = value;\n });\n httpRequest.body = util.queryParamsToString(httpRequest.params);\n\n populateHostPrefix(req);\n}\n\nfunction extractError(resp) {\n var data, body = resp.httpResponse.body.toString();\n if (body.match('= 0 ? '&' : '?');\n var parts = [];\n util.arrayEach(Object.keys(queryString).sort(), function(key) {\n if (!Array.isArray(queryString[key])) {\n queryString[key] = [queryString[key]];\n }\n for (var i = 0; i < queryString[key].length; i++) {\n parts.push(util.uriEscape(String(key)) + '=' + queryString[key][i]);\n }\n });\n uri += parts.join('&');\n }\n\n return uri;\n}\n\nfunction populateURI(req) {\n var operation = req.service.api.operations[req.operation];\n var input = operation.input;\n\n var uri = generateURI(req.httpRequest.endpoint.path, operation.httpPath, input, req.params);\n req.httpRequest.path = uri;\n}\n\nfunction populateHeaders(req) {\n var operation = req.service.api.operations[req.operation];\n util.each(operation.input.members, function (name, member) {\n var value = req.params[name];\n if (value === null || value === undefined) return;\n\n if (member.location === 'headers' && member.type === 'map') {\n util.each(value, function(key, memberValue) {\n req.httpRequest.headers[member.name + key] = memberValue;\n });\n } else if (member.location === 'header') {\n value = member.toWireFormat(value).toString();\n if (member.isJsonValue) {\n value = util.base64.encode(value);\n }\n req.httpRequest.headers[member.name] = value;\n }\n });\n}\n\nfunction buildRequest(req) {\n populateMethod(req);\n populateURI(req);\n populateHeaders(req);\n populateHostPrefix(req);\n}\n\nfunction extractError() {\n}\n\nfunction extractData(resp) {\n var req = resp.request;\n var data = {};\n var r = resp.httpResponse;\n var operation = req.service.api.operations[req.operation];\n var output = operation.output;\n\n // normalize headers names to lower-cased keys for matching\n var headers = {};\n util.each(r.headers, function (k, v) {\n headers[k.toLowerCase()] = v;\n });\n\n util.each(output.members, function(name, member) {\n var header = (member.name || name).toLowerCase();\n if (member.location === 'headers' && member.type === 'map') {\n data[name] = {};\n var location = member.isLocationName ? member.name : '';\n var pattern = new RegExp('^' + location + '(.+)', 'i');\n util.each(r.headers, function (k, v) {\n var result = k.match(pattern);\n if (result !== null) {\n data[name][result[1]] = v;\n }\n });\n } else if (member.location === 'header') {\n if (headers[header] !== undefined) {\n var value = member.isJsonValue ?\n util.base64.decode(headers[header]) :\n headers[header];\n data[name] = member.toType(value);\n }\n } else if (member.location === 'statusCode') {\n data[name] = parseInt(r.statusCode, 10);\n }\n });\n\n resp.data = data;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData,\n generateURI: generateURI\n};\n","var AWS = require('../core');\nvar util = require('../util');\nvar Rest = require('./rest');\nvar Json = require('./json');\nvar JsonBuilder = require('../json/builder');\nvar JsonParser = require('../json/parser');\n\nvar METHODS_WITHOUT_BODY = ['GET', 'HEAD', 'DELETE'];\n\nfunction unsetContentLength(req) {\n var payloadMember = util.getRequestPayloadShape(req);\n if (\n payloadMember === undefined &&\n METHODS_WITHOUT_BODY.indexOf(req.httpRequest.method) >= 0\n ) {\n delete req.httpRequest.headers['Content-Length'];\n }\n}\n\nfunction populateBody(req) {\n var builder = new JsonBuilder();\n var input = req.service.api.operations[req.operation].input;\n\n if (input.payload) {\n var params = {};\n var payloadShape = input.members[input.payload];\n params = req.params[input.payload];\n\n if (payloadShape.type === 'structure') {\n req.httpRequest.body = builder.build(params || {}, payloadShape);\n applyContentTypeHeader(req);\n } else if (params !== undefined) {\n // non-JSON payload\n req.httpRequest.body = params;\n if (payloadShape.type === 'binary' || payloadShape.isStreaming) {\n applyContentTypeHeader(req, true);\n }\n }\n } else {\n req.httpRequest.body = builder.build(req.params, input);\n applyContentTypeHeader(req);\n }\n}\n\nfunction applyContentTypeHeader(req, isBinary) {\n if (!req.httpRequest.headers['Content-Type']) {\n var type = isBinary ? 'binary/octet-stream' : 'application/json';\n req.httpRequest.headers['Content-Type'] = type;\n }\n}\n\nfunction buildRequest(req) {\n Rest.buildRequest(req);\n\n // never send body payload on GET/HEAD/DELETE\n if (METHODS_WITHOUT_BODY.indexOf(req.httpRequest.method) < 0) {\n populateBody(req);\n }\n}\n\nfunction extractError(resp) {\n Json.extractError(resp);\n}\n\nfunction extractData(resp) {\n Rest.extractData(resp);\n\n var req = resp.request;\n var operation = req.service.api.operations[req.operation];\n var rules = req.service.api.operations[req.operation].output || {};\n var parser;\n var hasEventOutput = operation.hasEventOutput;\n\n if (rules.payload) {\n var payloadMember = rules.members[rules.payload];\n var body = resp.httpResponse.body;\n if (payloadMember.isEventStream) {\n parser = new JsonParser();\n resp.data[rules.payload] = util.createEventStream(\n AWS.HttpClient.streamsApiVersion === 2 ? resp.httpResponse.stream : body,\n parser,\n payloadMember\n );\n } else if (payloadMember.type === 'structure' || payloadMember.type === 'list') {\n var parser = new JsonParser();\n resp.data[rules.payload] = parser.parse(body, payloadMember);\n } else if (payloadMember.type === 'binary' || payloadMember.isStreaming) {\n resp.data[rules.payload] = body;\n } else {\n resp.data[rules.payload] = payloadMember.toType(body);\n }\n } else {\n var data = resp.data;\n Json.extractData(resp);\n resp.data = util.merge(data, resp.data);\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData,\n unsetContentLength: unsetContentLength\n};\n","var AWS = require('../core');\nvar util = require('../util');\nvar Rest = require('./rest');\n\nfunction populateBody(req) {\n var input = req.service.api.operations[req.operation].input;\n var builder = new AWS.XML.Builder();\n var params = req.params;\n\n var payload = input.payload;\n if (payload) {\n var payloadMember = input.members[payload];\n params = params[payload];\n if (params === undefined) return;\n\n if (payloadMember.type === 'structure') {\n var rootElement = payloadMember.name;\n req.httpRequest.body = builder.toXML(params, payloadMember, rootElement, true);\n } else { // non-xml payload\n req.httpRequest.body = params;\n }\n } else {\n req.httpRequest.body = builder.toXML(params, input, input.name ||\n input.shape || util.string.upperFirst(req.operation) + 'Request');\n }\n}\n\nfunction buildRequest(req) {\n Rest.buildRequest(req);\n\n // never send body payload on GET/HEAD\n if (['GET', 'HEAD'].indexOf(req.httpRequest.method) < 0) {\n populateBody(req);\n }\n}\n\nfunction extractError(resp) {\n Rest.extractError(resp);\n\n var data;\n try {\n data = new AWS.XML.Parser().parse(resp.httpResponse.body.toString());\n } catch (e) {\n data = {\n Code: resp.httpResponse.statusCode,\n Message: resp.httpResponse.statusMessage\n };\n }\n\n if (data.Errors) data = data.Errors;\n if (data.Error) data = data.Error;\n if (data.Code) {\n resp.error = util.error(new Error(), {\n code: data.Code,\n message: data.Message\n });\n } else {\n resp.error = util.error(new Error(), {\n code: resp.httpResponse.statusCode,\n message: null\n });\n }\n}\n\nfunction extractData(resp) {\n Rest.extractData(resp);\n\n var parser;\n var req = resp.request;\n var body = resp.httpResponse.body;\n var operation = req.service.api.operations[req.operation];\n var output = operation.output;\n\n var hasEventOutput = operation.hasEventOutput;\n\n var payload = output.payload;\n if (payload) {\n var payloadMember = output.members[payload];\n if (payloadMember.isEventStream) {\n parser = new AWS.XML.Parser();\n resp.data[payload] = util.createEventStream(\n AWS.HttpClient.streamsApiVersion === 2 ? resp.httpResponse.stream : resp.httpResponse.body,\n parser,\n payloadMember\n );\n } else if (payloadMember.type === 'structure') {\n parser = new AWS.XML.Parser();\n resp.data[payload] = parser.parse(body.toString(), payloadMember);\n } else if (payloadMember.type === 'binary' || payloadMember.isStreaming) {\n resp.data[payload] = body;\n } else {\n resp.data[payload] = payloadMember.toType(body);\n }\n } else if (body.length > 0) {\n parser = new AWS.XML.Parser();\n var data = parser.parse(body.toString(), output);\n util.update(resp.data, data);\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData\n};\n","var util = require('../util');\n\nfunction QueryParamSerializer() {\n}\n\nQueryParamSerializer.prototype.serialize = function(params, shape, fn) {\n serializeStructure('', params, shape, fn);\n};\n\nfunction ucfirst(shape) {\n if (shape.isQueryName || shape.api.protocol !== 'ec2') {\n return shape.name;\n } else {\n return shape.name[0].toUpperCase() + shape.name.substr(1);\n }\n}\n\nfunction serializeStructure(prefix, struct, rules, fn) {\n util.each(rules.members, function(name, member) {\n var value = struct[name];\n if (value === null || value === undefined) return;\n\n var memberName = ucfirst(member);\n memberName = prefix ? prefix + '.' + memberName : memberName;\n serializeMember(memberName, value, member, fn);\n });\n}\n\nfunction serializeMap(name, map, rules, fn) {\n var i = 1;\n util.each(map, function (key, value) {\n var prefix = rules.flattened ? '.' : '.entry.';\n var position = prefix + (i++) + '.';\n var keyName = position + (rules.key.name || 'key');\n var valueName = position + (rules.value.name || 'value');\n serializeMember(name + keyName, key, rules.key, fn);\n serializeMember(name + valueName, value, rules.value, fn);\n });\n}\n\nfunction serializeList(name, list, rules, fn) {\n var memberRules = rules.member || {};\n\n if (list.length === 0) {\n if (rules.api.protocol !== 'ec2') {\n fn.call(this, name, null);\n }\n return;\n }\n\n util.arrayEach(list, function (v, n) {\n var suffix = '.' + (n + 1);\n if (rules.api.protocol === 'ec2') {\n // Do nothing for EC2\n suffix = suffix + ''; // make linter happy\n } else if (rules.flattened) {\n if (memberRules.name) {\n var parts = name.split('.');\n parts.pop();\n parts.push(ucfirst(memberRules));\n name = parts.join('.');\n }\n } else {\n suffix = '.' + (memberRules.name ? memberRules.name : 'member') + suffix;\n }\n serializeMember(name + suffix, v, memberRules, fn);\n });\n}\n\nfunction serializeMember(name, value, rules, fn) {\n if (value === null || value === undefined) return;\n if (rules.type === 'structure') {\n serializeStructure(name, value, rules, fn);\n } else if (rules.type === 'list') {\n serializeList(name, value, rules, fn);\n } else if (rules.type === 'map') {\n serializeMap(name, value, rules, fn);\n } else {\n fn(name, rules.toWireFormat(value).toString());\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = QueryParamSerializer;\n","var AWS = require('../core');\n\n/**\n * @api private\n */\nvar service = null;\n\n/**\n * @api private\n */\nvar api = {\n signatureVersion: 'v4',\n signingName: 'rds-db',\n operations: {}\n};\n\n/**\n * @api private\n */\nvar requiredAuthTokenOptions = {\n region: 'string',\n hostname: 'string',\n port: 'number',\n username: 'string'\n};\n\n/**\n * A signer object can be used to generate an auth token to a database.\n */\nAWS.RDS.Signer = AWS.util.inherit({\n /**\n * Creates a signer object can be used to generate an auth token.\n *\n * @option options credentials [AWS.Credentials] the AWS credentials\n * to sign requests with. Uses the default credential provider chain\n * if not specified.\n * @option options hostname [String] the hostname of the database to connect to.\n * @option options port [Number] the port number the database is listening on.\n * @option options region [String] the region the database is located in.\n * @option options username [String] the username to login as.\n * @example Passing in options to constructor\n * var signer = new AWS.RDS.Signer({\n * credentials: new AWS.SharedIniFileCredentials({profile: 'default'}),\n * region: 'us-east-1',\n * hostname: 'db.us-east-1.rds.amazonaws.com',\n * port: 8000,\n * username: 'name'\n * });\n */\n constructor: function Signer(options) {\n this.options = options || {};\n },\n\n /**\n * @api private\n * Strips the protocol from a url.\n */\n convertUrlToAuthToken: function convertUrlToAuthToken(url) {\n // we are always using https as the protocol\n var protocol = 'https://';\n if (url.indexOf(protocol) === 0) {\n return url.substring(protocol.length);\n }\n },\n\n /**\n * @overload getAuthToken(options = {}, [callback])\n * Generate an auth token to a database.\n * @note You must ensure that you have static or previously resolved\n * credentials if you call this method synchronously (with no callback),\n * otherwise it may not properly sign the request. If you cannot guarantee\n * this (you are using an asynchronous credential provider, i.e., EC2\n * IAM roles), you should always call this method with an asynchronous\n * callback.\n *\n * @param options [map] The fields to use when generating an auth token.\n * Any options specified here will be merged on top of any options passed\n * to AWS.RDS.Signer:\n *\n * * **credentials** (AWS.Credentials) — the AWS credentials\n * to sign requests with. Uses the default credential provider chain\n * if not specified.\n * * **hostname** (String) — the hostname of the database to connect to.\n * * **port** (Number) — the port number the database is listening on.\n * * **region** (String) — the region the database is located in.\n * * **username** (String) — the username to login as.\n * @return [String] if called synchronously (with no callback), returns the\n * auth token.\n * @return [null] nothing is returned if a callback is provided.\n * @callback callback function (err, token)\n * If a callback is supplied, it is called when an auth token has been generated.\n * @param err [Error] the error object returned from the signer.\n * @param token [String] the auth token.\n *\n * @example Generating an auth token synchronously\n * var signer = new AWS.RDS.Signer({\n * // configure options\n * region: 'us-east-1',\n * username: 'default',\n * hostname: 'db.us-east-1.amazonaws.com',\n * port: 8000\n * });\n * var token = signer.getAuthToken({\n * // these options are merged with those defined when creating the signer, overriding in the case of a duplicate option\n * // credentials are not specified here or when creating the signer, so default credential provider will be used\n * username: 'test' // overriding username\n * });\n * @example Generating an auth token asynchronously\n * var signer = new AWS.RDS.Signer({\n * // configure options\n * region: 'us-east-1',\n * username: 'default',\n * hostname: 'db.us-east-1.amazonaws.com',\n * port: 8000\n * });\n * signer.getAuthToken({\n * // these options are merged with those defined when creating the signer, overriding in the case of a duplicate option\n * // credentials are not specified here or when creating the signer, so default credential provider will be used\n * username: 'test' // overriding username\n * }, function(err, token) {\n * if (err) {\n * // handle error\n * } else {\n * // use token\n * }\n * });\n *\n */\n getAuthToken: function getAuthToken(options, callback) {\n if (typeof options === 'function' && callback === undefined) {\n callback = options;\n options = {};\n }\n var self = this;\n var hasCallback = typeof callback === 'function';\n // merge options with existing options\n options = AWS.util.merge(this.options, options);\n // validate options\n var optionsValidation = this.validateAuthTokenOptions(options);\n if (optionsValidation !== true) {\n if (hasCallback) {\n return callback(optionsValidation, null);\n }\n throw optionsValidation;\n }\n\n // 15 minutes\n var expires = 900;\n // create service to generate a request from\n var serviceOptions = {\n region: options.region,\n endpoint: new AWS.Endpoint(options.hostname + ':' + options.port),\n paramValidation: false,\n signatureVersion: 'v4'\n };\n if (options.credentials) {\n serviceOptions.credentials = options.credentials;\n }\n service = new AWS.Service(serviceOptions);\n // ensure the SDK is using sigv4 signing (config is not enough)\n service.api = api;\n\n var request = service.makeRequest();\n // add listeners to request to properly build auth token\n this.modifyRequestForAuthToken(request, options);\n\n if (hasCallback) {\n request.presign(expires, function(err, url) {\n if (url) {\n url = self.convertUrlToAuthToken(url);\n }\n callback(err, url);\n });\n } else {\n var url = request.presign(expires);\n return this.convertUrlToAuthToken(url);\n }\n },\n\n /**\n * @api private\n * Modifies a request to allow the presigner to generate an auth token.\n */\n modifyRequestForAuthToken: function modifyRequestForAuthToken(request, options) {\n request.on('build', request.buildAsGet);\n var httpRequest = request.httpRequest;\n httpRequest.body = AWS.util.queryParamsToString({\n Action: 'connect',\n DBUser: options.username\n });\n },\n\n /**\n * @api private\n * Validates that the options passed in contain all the keys with values of the correct type that\n * are needed to generate an auth token.\n */\n validateAuthTokenOptions: function validateAuthTokenOptions(options) {\n // iterate over all keys in options\n var message = '';\n options = options || {};\n for (var key in requiredAuthTokenOptions) {\n if (!Object.prototype.hasOwnProperty.call(requiredAuthTokenOptions, key)) {\n continue;\n }\n if (typeof options[key] !== requiredAuthTokenOptions[key]) {\n message += 'option \\'' + key + '\\' should have been type \\'' + requiredAuthTokenOptions[key] + '\\', was \\'' + typeof options[key] + '\\'.\\n';\n }\n }\n if (message.length) {\n return AWS.util.error(new Error(), {\n code: 'InvalidParameter',\n message: message\n });\n }\n return true;\n }\n});\n","module.exports = {\n //provide realtime clock for performance measurement\n now: function now() {\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n return performance.now();\n }\n return Date.now();\n }\n};\n","function isFipsRegion(region) {\n return typeof region === 'string' && (region.startsWith('fips-') || region.endsWith('-fips'));\n}\n\nfunction isGlobalRegion(region) {\n return typeof region === 'string' && ['aws-global', 'aws-us-gov-global'].includes(region);\n}\n\nfunction getRealRegion(region) {\n return ['fips-aws-global', 'aws-fips', 'aws-global'].includes(region)\n ? 'us-east-1'\n : ['fips-aws-us-gov-global', 'aws-us-gov-global'].includes(region)\n ? 'us-gov-west-1'\n : region.replace(/fips-(dkr-|prod-)?|-fips/, '');\n}\n\nmodule.exports = {\n isFipsRegion: isFipsRegion,\n isGlobalRegion: isGlobalRegion,\n getRealRegion: getRealRegion\n};\n","var util = require('./util');\nvar regionConfig = require('./region_config_data.json');\n\nfunction generateRegionPrefix(region) {\n if (!region) return null;\n var parts = region.split('-');\n if (parts.length < 3) return null;\n return parts.slice(0, parts.length - 2).join('-') + '-*';\n}\n\nfunction derivedKeys(service) {\n var region = service.config.region;\n var regionPrefix = generateRegionPrefix(region);\n var endpointPrefix = service.api.endpointPrefix;\n\n return [\n [region, endpointPrefix],\n [regionPrefix, endpointPrefix],\n [region, '*'],\n [regionPrefix, '*'],\n ['*', endpointPrefix],\n [region, 'internal-*'],\n ['*', '*']\n ].map(function(item) {\n return item[0] && item[1] ? item.join('/') : null;\n });\n}\n\nfunction applyConfig(service, config) {\n util.each(config, function(key, value) {\n if (key === 'globalEndpoint') return;\n if (service.config[key] === undefined || service.config[key] === null) {\n service.config[key] = value;\n }\n });\n}\n\nfunction configureEndpoint(service) {\n var keys = derivedKeys(service);\n var useFipsEndpoint = service.config.useFipsEndpoint;\n var useDualstackEndpoint = service.config.useDualstackEndpoint;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!key) continue;\n\n var rules = useFipsEndpoint\n ? useDualstackEndpoint\n ? regionConfig.dualstackFipsRules\n : regionConfig.fipsRules\n : useDualstackEndpoint\n ? regionConfig.dualstackRules\n : regionConfig.rules;\n\n if (Object.prototype.hasOwnProperty.call(rules, key)) {\n var config = rules[key];\n if (typeof config === 'string') {\n config = regionConfig.patterns[config];\n }\n\n // set global endpoint\n service.isGlobalEndpoint = !!config.globalEndpoint;\n if (config.signingRegion) {\n service.signingRegion = config.signingRegion;\n }\n\n // signature version\n if (!config.signatureVersion) {\n // Note: config is a global object and should not be mutated here.\n // However, we are retaining this line for backwards compatibility.\n // The non-v4 signatureVersion will be set in a copied object below.\n config.signatureVersion = 'v4';\n }\n\n var useBearer = (service.api && service.api.signatureVersion) === 'bearer';\n\n // merge config\n applyConfig(service, Object.assign(\n {},\n config,\n { signatureVersion: useBearer ? 'bearer' : config.signatureVersion }\n ));\n return;\n }\n }\n}\n\nfunction getEndpointSuffix(region) {\n var regionRegexes = {\n '^(us|eu|ap|sa|ca|me)\\\\-\\\\w+\\\\-\\\\d+$': 'amazonaws.com',\n '^cn\\\\-\\\\w+\\\\-\\\\d+$': 'amazonaws.com.cn',\n '^us\\\\-gov\\\\-\\\\w+\\\\-\\\\d+$': 'amazonaws.com',\n '^us\\\\-iso\\\\-\\\\w+\\\\-\\\\d+$': 'c2s.ic.gov',\n '^us\\\\-isob\\\\-\\\\w+\\\\-\\\\d+$': 'sc2s.sgov.gov',\n '^eu\\\\-isoe\\\\-west\\\\-1$': 'cloud.adc-e.uk',\n };\n var defaultSuffix = 'amazonaws.com';\n var regexes = Object.keys(regionRegexes);\n for (var i = 0; i < regexes.length; i++) {\n var regionPattern = RegExp(regexes[i]);\n var dnsSuffix = regionRegexes[regexes[i]];\n if (regionPattern.test(region)) return dnsSuffix;\n }\n return defaultSuffix;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n configureEndpoint: configureEndpoint,\n getEndpointSuffix: getEndpointSuffix,\n};\n","var AWS = require('./core');\nvar AcceptorStateMachine = require('./state_machine');\nvar inherit = AWS.util.inherit;\nvar domain = AWS.util.domain;\nvar jmespath = require('jmespath');\n\n/**\n * @api private\n */\nvar hardErrorStates = {success: 1, error: 1, complete: 1};\n\nfunction isTerminalState(machine) {\n return Object.prototype.hasOwnProperty.call(hardErrorStates, machine._asm.currentState);\n}\n\nvar fsm = new AcceptorStateMachine();\nfsm.setupStates = function() {\n var transition = function(_, done) {\n var self = this;\n self._haltHandlersOnError = false;\n\n self.emit(self._asm.currentState, function(err) {\n if (err) {\n if (isTerminalState(self)) {\n if (domain && self.domain instanceof domain.Domain) {\n err.domainEmitter = self;\n err.domain = self.domain;\n err.domainThrown = false;\n self.domain.emit('error', err);\n } else {\n throw err;\n }\n } else {\n self.response.error = err;\n done(err);\n }\n } else {\n done(self.response.error);\n }\n });\n\n };\n\n this.addState('validate', 'build', 'error', transition);\n this.addState('build', 'afterBuild', 'restart', transition);\n this.addState('afterBuild', 'sign', 'restart', transition);\n this.addState('sign', 'send', 'retry', transition);\n this.addState('retry', 'afterRetry', 'afterRetry', transition);\n this.addState('afterRetry', 'sign', 'error', transition);\n this.addState('send', 'validateResponse', 'retry', transition);\n this.addState('validateResponse', 'extractData', 'extractError', transition);\n this.addState('extractError', 'extractData', 'retry', transition);\n this.addState('extractData', 'success', 'retry', transition);\n this.addState('restart', 'build', 'error', transition);\n this.addState('success', 'complete', 'complete', transition);\n this.addState('error', 'complete', 'complete', transition);\n this.addState('complete', null, null, transition);\n};\nfsm.setupStates();\n\n/**\n * ## Asynchronous Requests\n *\n * All requests made through the SDK are asynchronous and use a\n * callback interface. Each service method that kicks off a request\n * returns an `AWS.Request` object that you can use to register\n * callbacks.\n *\n * For example, the following service method returns the request\n * object as \"request\", which can be used to register callbacks:\n *\n * ```javascript\n * // request is an AWS.Request object\n * var request = ec2.describeInstances();\n *\n * // register callbacks on request to retrieve response data\n * request.on('success', function(response) {\n * console.log(response.data);\n * });\n * ```\n *\n * When a request is ready to be sent, the {send} method should\n * be called:\n *\n * ```javascript\n * request.send();\n * ```\n *\n * Since registered callbacks may or may not be idempotent, requests should only\n * be sent once. To perform the same operation multiple times, you will need to\n * create multiple request objects, each with its own registered callbacks.\n *\n * ## Removing Default Listeners for Events\n *\n * Request objects are built with default listeners for the various events,\n * depending on the service type. In some cases, you may want to remove\n * some built-in listeners to customize behaviour. Doing this requires\n * access to the built-in listener functions, which are exposed through\n * the {AWS.EventListeners.Core} namespace. For instance, you may\n * want to customize the HTTP handler used when sending a request. In this\n * case, you can remove the built-in listener associated with the 'send'\n * event, the {AWS.EventListeners.Core.SEND} listener and add your own.\n *\n * ## Multiple Callbacks and Chaining\n *\n * You can register multiple callbacks on any request object. The\n * callbacks can be registered for different events, or all for the\n * same event. In addition, you can chain callback registration, for\n * example:\n *\n * ```javascript\n * request.\n * on('success', function(response) {\n * console.log(\"Success!\");\n * }).\n * on('error', function(error, response) {\n * console.log(\"Error!\");\n * }).\n * on('complete', function(response) {\n * console.log(\"Always!\");\n * }).\n * send();\n * ```\n *\n * The above example will print either \"Success! Always!\", or \"Error! Always!\",\n * depending on whether the request succeeded or not.\n *\n * @!attribute httpRequest\n * @readonly\n * @!group HTTP Properties\n * @return [AWS.HttpRequest] the raw HTTP request object\n * containing request headers and body information\n * sent by the service.\n *\n * @!attribute startTime\n * @readonly\n * @!group Operation Properties\n * @return [Date] the time that the request started\n *\n * @!group Request Building Events\n *\n * @!event validate(request)\n * Triggered when a request is being validated. Listeners\n * should throw an error if the request should not be sent.\n * @param request [Request] the request object being sent\n * @see AWS.EventListeners.Core.VALIDATE_CREDENTIALS\n * @see AWS.EventListeners.Core.VALIDATE_REGION\n * @example Ensuring that a certain parameter is set before sending a request\n * var req = s3.putObject(params);\n * req.on('validate', function() {\n * if (!req.params.Body.match(/^Hello\\s/)) {\n * throw new Error('Body must start with \"Hello \"');\n * }\n * });\n * req.send(function(err, data) { ... });\n *\n * @!event build(request)\n * Triggered when the request payload is being built. Listeners\n * should fill the necessary information to send the request\n * over HTTP.\n * @param (see AWS.Request~validate)\n * @example Add a custom HTTP header to a request\n * var req = s3.putObject(params);\n * req.on('build', function() {\n * req.httpRequest.headers['Custom-Header'] = 'value';\n * });\n * req.send(function(err, data) { ... });\n *\n * @!event sign(request)\n * Triggered when the request is being signed. Listeners should\n * add the correct authentication headers and/or adjust the body,\n * depending on the authentication mechanism being used.\n * @param (see AWS.Request~validate)\n *\n * @!group Request Sending Events\n *\n * @!event send(response)\n * Triggered when the request is ready to be sent. Listeners\n * should call the underlying transport layer to initiate\n * the sending of the request.\n * @param response [Response] the response object\n * @context [Request] the request object that was sent\n * @see AWS.EventListeners.Core.SEND\n *\n * @!event retry(response)\n * Triggered when a request failed and might need to be retried or redirected.\n * If the response is retryable, the listener should set the\n * `response.error.retryable` property to `true`, and optionally set\n * `response.error.retryDelay` to the millisecond delay for the next attempt.\n * In the case of a redirect, `response.error.redirect` should be set to\n * `true` with `retryDelay` set to an optional delay on the next request.\n *\n * If a listener decides that a request should not be retried,\n * it should set both `retryable` and `redirect` to false.\n *\n * Note that a retryable error will be retried at most\n * {AWS.Config.maxRetries} times (based on the service object's config).\n * Similarly, a request that is redirected will only redirect at most\n * {AWS.Config.maxRedirects} times.\n *\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @example Adding a custom retry for a 404 response\n * request.on('retry', function(response) {\n * // this resource is not yet available, wait 10 seconds to get it again\n * if (response.httpResponse.statusCode === 404 && response.error) {\n * response.error.retryable = true; // retry this error\n * response.error.retryDelay = 10000; // wait 10 seconds\n * }\n * });\n *\n * @!group Data Parsing Events\n *\n * @!event extractError(response)\n * Triggered on all non-2xx requests so that listeners can extract\n * error details from the response body. Listeners to this event\n * should set the `response.error` property.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event extractData(response)\n * Triggered in successful requests to allow listeners to\n * de-serialize the response body into `response.data`.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!group Completion Events\n *\n * @!event success(response)\n * Triggered when the request completed successfully.\n * `response.data` will contain the response data and\n * `response.error` will be null.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event error(error, response)\n * Triggered when an error occurs at any point during the\n * request. `response.error` will contain details about the error\n * that occurred. `response.data` will be null.\n * @param error [Error] the error object containing details about\n * the error that occurred.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event complete(response)\n * Triggered whenever a request cycle completes. `response.error`\n * should be checked, since the request may have failed.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!group HTTP Events\n *\n * @!event httpHeaders(statusCode, headers, response, statusMessage)\n * Triggered when headers are sent by the remote server\n * @param statusCode [Integer] the HTTP response code\n * @param headers [map] the response headers\n * @param (see AWS.Request~send)\n * @param statusMessage [String] A status message corresponding to the HTTP\n * response code\n * @context (see AWS.Request~send)\n *\n * @!event httpData(chunk, response)\n * Triggered when data is sent by the remote server\n * @param chunk [Buffer] the buffer data containing the next data chunk\n * from the server\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @see AWS.EventListeners.Core.HTTP_DATA\n *\n * @!event httpUploadProgress(progress, response)\n * Triggered when the HTTP request has uploaded more data\n * @param progress [map] An object containing the `loaded` and `total` bytes\n * of the request.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @note This event will not be emitted in Node.js 0.8.x.\n *\n * @!event httpDownloadProgress(progress, response)\n * Triggered when the HTTP request has downloaded more data\n * @param progress [map] An object containing the `loaded` and `total` bytes\n * of the request.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @note This event will not be emitted in Node.js 0.8.x.\n *\n * @!event httpError(error, response)\n * Triggered when the HTTP request failed\n * @param error [Error] the error object that was thrown\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event httpDone(response)\n * Triggered when the server is finished sending data\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @see AWS.Response\n */\nAWS.Request = inherit({\n\n /**\n * Creates a request for an operation on a given service with\n * a set of input parameters.\n *\n * @param service [AWS.Service] the service to perform the operation on\n * @param operation [String] the operation to perform on the service\n * @param params [Object] parameters to send to the operation.\n * See the operation's documentation for the format of the\n * parameters.\n */\n constructor: function Request(service, operation, params) {\n var endpoint = service.endpoint;\n var region = service.config.region;\n var customUserAgent = service.config.customUserAgent;\n\n if (service.signingRegion) {\n region = service.signingRegion;\n } else if (service.isGlobalEndpoint) {\n region = 'us-east-1';\n }\n\n this.domain = domain && domain.active;\n this.service = service;\n this.operation = operation;\n this.params = params || {};\n this.httpRequest = new AWS.HttpRequest(endpoint, region);\n this.httpRequest.appendToUserAgent(customUserAgent);\n this.startTime = service.getSkewCorrectedDate();\n\n this.response = new AWS.Response(this);\n this._asm = new AcceptorStateMachine(fsm.states, 'validate');\n this._haltHandlersOnError = false;\n\n AWS.SequentialExecutor.call(this);\n this.emit = this.emitEvent;\n },\n\n /**\n * @!group Sending a Request\n */\n\n /**\n * @overload send(callback = null)\n * Sends the request object.\n *\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @context [AWS.Request] the request object being sent.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n * @example Sending a request with a callback\n * request = s3.putObject({Bucket: 'bucket', Key: 'key'});\n * request.send(function(err, data) { console.log(err, data); });\n * @example Sending a request with no callback (using event handlers)\n * request = s3.putObject({Bucket: 'bucket', Key: 'key'});\n * request.on('complete', function(response) { ... }); // register a callback\n * request.send();\n */\n send: function send(callback) {\n if (callback) {\n // append to user agent\n this.httpRequest.appendToUserAgent('callback');\n this.on('complete', function (resp) {\n callback.call(resp, resp.error, resp.data);\n });\n }\n this.runTo();\n\n return this.response;\n },\n\n /**\n * @!method promise()\n * Sends the request and returns a 'thenable' promise.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function(data)\n * Called if the promise is fulfilled.\n * @param data [Object] the de-serialized data returned from the request.\n * @callback rejectedCallback function(error)\n * Called if the promise is rejected.\n * @param error [Error] the error object returned from the request.\n * @return [Promise] A promise that represents the state of the request.\n * @example Sending a request using promises.\n * var request = s3.putObject({Bucket: 'bucket', Key: 'key'});\n * var result = request.promise();\n * result.then(function(data) { ... }, function(error) { ... });\n */\n\n /**\n * @api private\n */\n build: function build(callback) {\n return this.runTo('send', callback);\n },\n\n /**\n * @api private\n */\n runTo: function runTo(state, done) {\n this._asm.runTo(state, done, this);\n return this;\n },\n\n /**\n * Aborts a request, emitting the error and complete events.\n *\n * @!macro nobrowser\n * @example Aborting a request after sending\n * var params = {\n * Bucket: 'bucket', Key: 'key',\n * Body: Buffer.alloc(1024 * 1024 * 5) // 5MB payload\n * };\n * var request = s3.putObject(params);\n * request.send(function (err, data) {\n * if (err) console.log(\"Error:\", err.code, err.message);\n * else console.log(data);\n * });\n *\n * // abort request in 1 second\n * setTimeout(request.abort.bind(request), 1000);\n *\n * // prints \"Error: RequestAbortedError Request aborted by user\"\n * @return [AWS.Request] the same request object, for chaining.\n * @since v1.4.0\n */\n abort: function abort() {\n this.removeAllListeners('validateResponse');\n this.removeAllListeners('extractError');\n this.on('validateResponse', function addAbortedError(resp) {\n resp.error = AWS.util.error(new Error('Request aborted by user'), {\n code: 'RequestAbortedError', retryable: false\n });\n });\n\n if (this.httpRequest.stream && !this.httpRequest.stream.didCallback) { // abort HTTP stream\n this.httpRequest.stream.abort();\n if (this.httpRequest._abortCallback) {\n this.httpRequest._abortCallback();\n } else {\n this.removeAllListeners('send'); // haven't sent yet, so let's not\n }\n }\n\n return this;\n },\n\n /**\n * Iterates over each page of results given a pageable request, calling\n * the provided callback with each page of data. After all pages have been\n * retrieved, the callback is called with `null` data.\n *\n * @note This operation can generate multiple requests to a service.\n * @example Iterating over multiple pages of objects in an S3 bucket\n * var pages = 1;\n * s3.listObjects().eachPage(function(err, data) {\n * if (err) return;\n * console.log(\"Page\", pages++);\n * console.log(data);\n * });\n * @example Iterating over multiple pages with an asynchronous callback\n * s3.listObjects(params).eachPage(function(err, data, done) {\n * doSomethingAsyncAndOrExpensive(function() {\n * // The next page of results isn't fetched until done is called\n * done();\n * });\n * });\n * @callback callback function(err, data, [doneCallback])\n * Called with each page of resulting data from the request. If the\n * optional `doneCallback` is provided in the function, it must be called\n * when the callback is complete.\n *\n * @param err [Error] an error object, if an error occurred.\n * @param data [Object] a single page of response data. If there is no\n * more data, this object will be `null`.\n * @param doneCallback [Function] an optional done callback. If this\n * argument is defined in the function declaration, it should be called\n * when the next page is ready to be retrieved. This is useful for\n * controlling serial pagination across asynchronous operations.\n * @return [Boolean] if the callback returns `false`, pagination will\n * stop.\n *\n * @see AWS.Request.eachItem\n * @see AWS.Response.nextPage\n * @since v1.4.0\n */\n eachPage: function eachPage(callback) {\n // Make all callbacks async-ish\n callback = AWS.util.fn.makeAsync(callback, 3);\n\n function wrappedCallback(response) {\n callback.call(response, response.error, response.data, function (result) {\n if (result === false) return;\n\n if (response.hasNextPage()) {\n response.nextPage().on('complete', wrappedCallback).send();\n } else {\n callback.call(response, null, null, AWS.util.fn.noop);\n }\n });\n }\n\n this.on('complete', wrappedCallback).send();\n },\n\n /**\n * Enumerates over individual items of a request, paging the responses if\n * necessary.\n *\n * @api experimental\n * @since v1.4.0\n */\n eachItem: function eachItem(callback) {\n var self = this;\n function wrappedCallback(err, data) {\n if (err) return callback(err, null);\n if (data === null) return callback(null, null);\n\n var config = self.service.paginationConfig(self.operation);\n var resultKey = config.resultKey;\n if (Array.isArray(resultKey)) resultKey = resultKey[0];\n var items = jmespath.search(data, resultKey);\n var continueIteration = true;\n AWS.util.arrayEach(items, function(item) {\n continueIteration = callback(null, item);\n if (continueIteration === false) {\n return AWS.util.abort;\n }\n });\n return continueIteration;\n }\n\n this.eachPage(wrappedCallback);\n },\n\n /**\n * @return [Boolean] whether the operation can return multiple pages of\n * response data.\n * @see AWS.Response.eachPage\n * @since v1.4.0\n */\n isPageable: function isPageable() {\n return this.service.paginationConfig(this.operation) ? true : false;\n },\n\n /**\n * Sends the request and converts the request object into a readable stream\n * that can be read from or piped into a writable stream.\n *\n * @note The data read from a readable stream contains only\n * the raw HTTP body contents.\n * @example Manually reading from a stream\n * request.createReadStream().on('data', function(data) {\n * console.log(\"Got data:\", data.toString());\n * });\n * @example Piping a request body into a file\n * var out = fs.createWriteStream('/path/to/outfile.jpg');\n * s3.service.getObject(params).createReadStream().pipe(out);\n * @return [Stream] the readable stream object that can be piped\n * or read from (by registering 'data' event listeners).\n * @!macro nobrowser\n */\n createReadStream: function createReadStream() {\n var streams = AWS.util.stream;\n var req = this;\n var stream = null;\n\n if (AWS.HttpClient.streamsApiVersion === 2) {\n stream = new streams.PassThrough();\n process.nextTick(function() { req.send(); });\n } else {\n stream = new streams.Stream();\n stream.readable = true;\n\n stream.sent = false;\n stream.on('newListener', function(event) {\n if (!stream.sent && event === 'data') {\n stream.sent = true;\n process.nextTick(function() { req.send(); });\n }\n });\n }\n\n this.on('error', function(err) {\n stream.emit('error', err);\n });\n\n this.on('httpHeaders', function streamHeaders(statusCode, headers, resp) {\n if (statusCode < 300) {\n req.removeListener('httpData', AWS.EventListeners.Core.HTTP_DATA);\n req.removeListener('httpError', AWS.EventListeners.Core.HTTP_ERROR);\n req.on('httpError', function streamHttpError(error) {\n resp.error = error;\n resp.error.retryable = false;\n });\n\n var shouldCheckContentLength = false;\n var expectedLen;\n if (req.httpRequest.method !== 'HEAD') {\n expectedLen = parseInt(headers['content-length'], 10);\n }\n if (expectedLen !== undefined && !isNaN(expectedLen) && expectedLen >= 0) {\n shouldCheckContentLength = true;\n var receivedLen = 0;\n }\n\n var checkContentLengthAndEmit = function checkContentLengthAndEmit() {\n if (shouldCheckContentLength && receivedLen !== expectedLen) {\n stream.emit('error', AWS.util.error(\n new Error('Stream content length mismatch. Received ' +\n receivedLen + ' of ' + expectedLen + ' bytes.'),\n { code: 'StreamContentLengthMismatch' }\n ));\n } else if (AWS.HttpClient.streamsApiVersion === 2) {\n stream.end();\n } else {\n stream.emit('end');\n }\n };\n\n var httpStream = resp.httpResponse.createUnbufferedStream();\n\n if (AWS.HttpClient.streamsApiVersion === 2) {\n if (shouldCheckContentLength) {\n var lengthAccumulator = new streams.PassThrough();\n lengthAccumulator._write = function(chunk) {\n if (chunk && chunk.length) {\n receivedLen += chunk.length;\n }\n return streams.PassThrough.prototype._write.apply(this, arguments);\n };\n\n lengthAccumulator.on('end', checkContentLengthAndEmit);\n stream.on('error', function(err) {\n shouldCheckContentLength = false;\n httpStream.unpipe(lengthAccumulator);\n lengthAccumulator.emit('end');\n lengthAccumulator.end();\n });\n httpStream.pipe(lengthAccumulator).pipe(stream, { end: false });\n } else {\n httpStream.pipe(stream);\n }\n } else {\n\n if (shouldCheckContentLength) {\n httpStream.on('data', function(arg) {\n if (arg && arg.length) {\n receivedLen += arg.length;\n }\n });\n }\n\n httpStream.on('data', function(arg) {\n stream.emit('data', arg);\n });\n httpStream.on('end', checkContentLengthAndEmit);\n }\n\n httpStream.on('error', function(err) {\n shouldCheckContentLength = false;\n stream.emit('error', err);\n });\n }\n });\n\n return stream;\n },\n\n /**\n * @param [Array,Response] args This should be the response object,\n * or an array of args to send to the event.\n * @api private\n */\n emitEvent: function emit(eventName, args, done) {\n if (typeof args === 'function') { done = args; args = null; }\n if (!done) done = function() { };\n if (!args) args = this.eventParameters(eventName, this.response);\n\n var origEmit = AWS.SequentialExecutor.prototype.emit;\n origEmit.call(this, eventName, args, function (err) {\n if (err) this.response.error = err;\n done.call(this, err);\n });\n },\n\n /**\n * @api private\n */\n eventParameters: function eventParameters(eventName) {\n switch (eventName) {\n case 'restart':\n case 'validate':\n case 'sign':\n case 'build':\n case 'afterValidate':\n case 'afterBuild':\n return [this];\n case 'error':\n return [this.response.error, this.response];\n default:\n return [this.response];\n }\n },\n\n /**\n * @api private\n */\n presign: function presign(expires, callback) {\n if (!callback && typeof expires === 'function') {\n callback = expires;\n expires = null;\n }\n return new AWS.Signers.Presign().sign(this.toGet(), expires, callback);\n },\n\n /**\n * @api private\n */\n isPresigned: function isPresigned() {\n return Object.prototype.hasOwnProperty.call(this.httpRequest.headers, 'presigned-expires');\n },\n\n /**\n * @api private\n */\n toUnauthenticated: function toUnauthenticated() {\n this._unAuthenticated = true;\n this.removeListener('validate', AWS.EventListeners.Core.VALIDATE_CREDENTIALS);\n this.removeListener('sign', AWS.EventListeners.Core.SIGN);\n return this;\n },\n\n /**\n * @api private\n */\n toGet: function toGet() {\n if (this.service.api.protocol === 'query' ||\n this.service.api.protocol === 'ec2') {\n this.removeListener('build', this.buildAsGet);\n this.addListener('build', this.buildAsGet);\n }\n return this;\n },\n\n /**\n * @api private\n */\n buildAsGet: function buildAsGet(request) {\n request.httpRequest.method = 'GET';\n request.httpRequest.path = request.service.endpoint.path +\n '?' + request.httpRequest.body;\n request.httpRequest.body = '';\n\n // don't need these headers on a GET request\n delete request.httpRequest.headers['Content-Length'];\n delete request.httpRequest.headers['Content-Type'];\n },\n\n /**\n * @api private\n */\n haltHandlersOnError: function haltHandlersOnError() {\n this._haltHandlersOnError = true;\n }\n});\n\n/**\n * @api private\n */\nAWS.Request.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.promise = function promise() {\n var self = this;\n // append to user agent\n this.httpRequest.appendToUserAgent('promise');\n return new PromiseDependency(function(resolve, reject) {\n self.on('complete', function(resp) {\n if (resp.error) {\n reject(resp.error);\n } else {\n // define $response property so that it is not enumerable\n // this prevents circular reference errors when stringifying the JSON object\n resolve(Object.defineProperty(\n resp.data || {},\n '$response',\n {value: resp}\n ));\n }\n });\n self.runTo();\n });\n };\n};\n\n/**\n * @api private\n */\nAWS.Request.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.promise;\n};\n\nAWS.util.addPromises(AWS.Request);\n\nAWS.util.mixin(AWS.Request, AWS.SequentialExecutor);\n","/**\n * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You\n * may not use this file except in compliance with the License. A copy of\n * the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific\n * language governing permissions and limitations under the License.\n */\n\nvar AWS = require('./core');\nvar inherit = AWS.util.inherit;\nvar jmespath = require('jmespath');\n\n/**\n * @api private\n */\nfunction CHECK_ACCEPTORS(resp) {\n var waiter = resp.request._waiter;\n var acceptors = waiter.config.acceptors;\n var acceptorMatched = false;\n var state = 'retry';\n\n acceptors.forEach(function(acceptor) {\n if (!acceptorMatched) {\n var matcher = waiter.matchers[acceptor.matcher];\n if (matcher && matcher(resp, acceptor.expected, acceptor.argument)) {\n acceptorMatched = true;\n state = acceptor.state;\n }\n }\n });\n\n if (!acceptorMatched && resp.error) state = 'failure';\n\n if (state === 'success') {\n waiter.setSuccess(resp);\n } else {\n waiter.setError(resp, state === 'retry');\n }\n}\n\n/**\n * @api private\n */\nAWS.ResourceWaiter = inherit({\n /**\n * Waits for a given state on a service object\n * @param service [Service] the service object to wait on\n * @param state [String] the state (defined in waiter configuration) to wait\n * for.\n * @example Create a waiter for running EC2 instances\n * var ec2 = new AWS.EC2;\n * var waiter = new AWS.ResourceWaiter(ec2, 'instanceRunning');\n */\n constructor: function constructor(service, state) {\n this.service = service;\n this.state = state;\n this.loadWaiterConfig(this.state);\n },\n\n service: null,\n\n state: null,\n\n config: null,\n\n matchers: {\n path: function(resp, expected, argument) {\n try {\n var result = jmespath.search(resp.data, argument);\n } catch (err) {\n return false;\n }\n\n return jmespath.strictDeepEqual(result,expected);\n },\n\n pathAll: function(resp, expected, argument) {\n try {\n var results = jmespath.search(resp.data, argument);\n } catch (err) {\n return false;\n }\n\n if (!Array.isArray(results)) results = [results];\n var numResults = results.length;\n if (!numResults) return false;\n for (var ind = 0 ; ind < numResults; ind++) {\n if (!jmespath.strictDeepEqual(results[ind], expected)) {\n return false;\n }\n }\n return true;\n },\n\n pathAny: function(resp, expected, argument) {\n try {\n var results = jmespath.search(resp.data, argument);\n } catch (err) {\n return false;\n }\n\n if (!Array.isArray(results)) results = [results];\n var numResults = results.length;\n for (var ind = 0 ; ind < numResults; ind++) {\n if (jmespath.strictDeepEqual(results[ind], expected)) {\n return true;\n }\n }\n return false;\n },\n\n status: function(resp, expected) {\n var statusCode = resp.httpResponse.statusCode;\n return (typeof statusCode === 'number') && (statusCode === expected);\n },\n\n error: function(resp, expected) {\n if (typeof expected === 'string' && resp.error) {\n return expected === resp.error.code;\n }\n // if expected is not string, can be boolean indicating presence of error\n return expected === !!resp.error;\n }\n },\n\n listeners: new AWS.SequentialExecutor().addNamedListeners(function(add) {\n add('RETRY_CHECK', 'retry', function(resp) {\n var waiter = resp.request._waiter;\n if (resp.error && resp.error.code === 'ResourceNotReady') {\n resp.error.retryDelay = (waiter.config.delay || 0) * 1000;\n }\n });\n\n add('CHECK_OUTPUT', 'extractData', CHECK_ACCEPTORS);\n\n add('CHECK_ERROR', 'extractError', CHECK_ACCEPTORS);\n }),\n\n /**\n * @return [AWS.Request]\n */\n wait: function wait(params, callback) {\n if (typeof params === 'function') {\n callback = params; params = undefined;\n }\n\n if (params && params.$waiter) {\n params = AWS.util.copy(params);\n if (typeof params.$waiter.delay === 'number') {\n this.config.delay = params.$waiter.delay;\n }\n if (typeof params.$waiter.maxAttempts === 'number') {\n this.config.maxAttempts = params.$waiter.maxAttempts;\n }\n delete params.$waiter;\n }\n\n var request = this.service.makeRequest(this.config.operation, params);\n request._waiter = this;\n request.response.maxRetries = this.config.maxAttempts;\n request.addListeners(this.listeners);\n\n if (callback) request.send(callback);\n return request;\n },\n\n setSuccess: function setSuccess(resp) {\n resp.error = null;\n resp.data = resp.data || {};\n resp.request.removeAllListeners('extractData');\n },\n\n setError: function setError(resp, retryable) {\n resp.data = null;\n resp.error = AWS.util.error(resp.error || new Error(), {\n code: 'ResourceNotReady',\n message: 'Resource is not in the state ' + this.state,\n retryable: retryable\n });\n },\n\n /**\n * Loads waiter configuration from API configuration\n *\n * @api private\n */\n loadWaiterConfig: function loadWaiterConfig(state) {\n if (!this.service.api.waiters[state]) {\n throw new AWS.util.error(new Error(), {\n code: 'StateNotFoundError',\n message: 'State ' + state + ' not found.'\n });\n }\n\n this.config = AWS.util.copy(this.service.api.waiters[state]);\n }\n});\n","var AWS = require('./core');\nvar inherit = AWS.util.inherit;\nvar jmespath = require('jmespath');\n\n/**\n * This class encapsulates the response information\n * from a service request operation sent through {AWS.Request}.\n * The response object has two main properties for getting information\n * back from a request:\n *\n * ## The `data` property\n *\n * The `response.data` property contains the serialized object data\n * retrieved from the service request. For instance, for an\n * Amazon DynamoDB `listTables` method call, the response data might\n * look like:\n *\n * ```\n * > resp.data\n * { TableNames:\n * [ 'table1', 'table2', ... ] }\n * ```\n *\n * The `data` property can be null if an error occurs (see below).\n *\n * ## The `error` property\n *\n * In the event of a service error (or transfer error), the\n * `response.error` property will be filled with the given\n * error data in the form:\n *\n * ```\n * { code: 'SHORT_UNIQUE_ERROR_CODE',\n * message: 'Some human readable error message' }\n * ```\n *\n * In the case of an error, the `data` property will be `null`.\n * Note that if you handle events that can be in a failure state,\n * you should always check whether `response.error` is set\n * before attempting to access the `response.data` property.\n *\n * @!attribute data\n * @readonly\n * @!group Data Properties\n * @note Inside of a {AWS.Request~httpData} event, this\n * property contains a single raw packet instead of the\n * full de-serialized service response.\n * @return [Object] the de-serialized response data\n * from the service.\n *\n * @!attribute error\n * An structure containing information about a service\n * or networking error.\n * @readonly\n * @!group Data Properties\n * @note This attribute is only filled if a service or\n * networking error occurs.\n * @return [Error]\n * * code [String] a unique short code representing the\n * error that was emitted.\n * * message [String] a longer human readable error message\n * * retryable [Boolean] whether the error message is\n * retryable.\n * * statusCode [Numeric] in the case of a request that reached the service,\n * this value contains the response status code.\n * * time [Date] the date time object when the error occurred.\n * * hostname [String] set when a networking error occurs to easily\n * identify the endpoint of the request.\n * * region [String] set when a networking error occurs to easily\n * identify the region of the request.\n *\n * @!attribute requestId\n * @readonly\n * @!group Data Properties\n * @return [String] the unique request ID associated with the response.\n * Log this value when debugging requests for AWS support.\n *\n * @!attribute retryCount\n * @readonly\n * @!group Operation Properties\n * @return [Integer] the number of retries that were\n * attempted before the request was completed.\n *\n * @!attribute redirectCount\n * @readonly\n * @!group Operation Properties\n * @return [Integer] the number of redirects that were\n * followed before the request was completed.\n *\n * @!attribute httpResponse\n * @readonly\n * @!group HTTP Properties\n * @return [AWS.HttpResponse] the raw HTTP response object\n * containing the response headers and body information\n * from the server.\n *\n * @see AWS.Request\n */\nAWS.Response = inherit({\n\n /**\n * @api private\n */\n constructor: function Response(request) {\n this.request = request;\n this.data = null;\n this.error = null;\n this.retryCount = 0;\n this.redirectCount = 0;\n this.httpResponse = new AWS.HttpResponse();\n if (request) {\n this.maxRetries = request.service.numRetries();\n this.maxRedirects = request.service.config.maxRedirects;\n }\n },\n\n /**\n * Creates a new request for the next page of response data, calling the\n * callback with the page data if a callback is provided.\n *\n * @callback callback function(err, data)\n * Called when a page of data is returned from the next request.\n *\n * @param err [Error] an error object, if an error occurred in the request\n * @param data [Object] the next page of data, or null, if there are no\n * more pages left.\n * @return [AWS.Request] the request object for the next page of data\n * @return [null] if no callback is provided and there are no pages left\n * to retrieve.\n * @since v1.4.0\n */\n nextPage: function nextPage(callback) {\n var config;\n var service = this.request.service;\n var operation = this.request.operation;\n try {\n config = service.paginationConfig(operation, true);\n } catch (e) { this.error = e; }\n\n if (!this.hasNextPage()) {\n if (callback) callback(this.error, null);\n else if (this.error) throw this.error;\n return null;\n }\n\n var params = AWS.util.copy(this.request.params);\n if (!this.nextPageTokens) {\n return callback ? callback(null, null) : null;\n } else {\n var inputTokens = config.inputToken;\n if (typeof inputTokens === 'string') inputTokens = [inputTokens];\n for (var i = 0; i < inputTokens.length; i++) {\n params[inputTokens[i]] = this.nextPageTokens[i];\n }\n return service.makeRequest(this.request.operation, params, callback);\n }\n },\n\n /**\n * @return [Boolean] whether more pages of data can be returned by further\n * requests\n * @since v1.4.0\n */\n hasNextPage: function hasNextPage() {\n this.cacheNextPageTokens();\n if (this.nextPageTokens) return true;\n if (this.nextPageTokens === undefined) return undefined;\n else return false;\n },\n\n /**\n * @api private\n */\n cacheNextPageTokens: function cacheNextPageTokens() {\n if (Object.prototype.hasOwnProperty.call(this, 'nextPageTokens')) return this.nextPageTokens;\n this.nextPageTokens = undefined;\n\n var config = this.request.service.paginationConfig(this.request.operation);\n if (!config) return this.nextPageTokens;\n\n this.nextPageTokens = null;\n if (config.moreResults) {\n if (!jmespath.search(this.data, config.moreResults)) {\n return this.nextPageTokens;\n }\n }\n\n var exprs = config.outputToken;\n if (typeof exprs === 'string') exprs = [exprs];\n AWS.util.arrayEach.call(this, exprs, function (expr) {\n var output = jmespath.search(this.data, expr);\n if (output) {\n this.nextPageTokens = this.nextPageTokens || [];\n this.nextPageTokens.push(output);\n }\n });\n\n return this.nextPageTokens;\n }\n\n});\n","var AWS = require('../core');\nvar byteLength = AWS.util.string.byteLength;\nvar Buffer = AWS.util.Buffer;\n\n/**\n * The managed uploader allows for easy and efficient uploading of buffers,\n * blobs, or streams, using a configurable amount of concurrency to perform\n * multipart uploads where possible. This abstraction also enables uploading\n * streams of unknown size due to the use of multipart uploads.\n *\n * To construct a managed upload object, see the {constructor} function.\n *\n * ## Tracking upload progress\n *\n * The managed upload object can also track progress by attaching an\n * 'httpUploadProgress' listener to the upload manager. This event is similar\n * to {AWS.Request~httpUploadProgress} but groups all concurrent upload progress\n * into a single event. See {AWS.S3.ManagedUpload~httpUploadProgress} for more\n * information.\n *\n * ## Handling Multipart Cleanup\n *\n * By default, this class will automatically clean up any multipart uploads\n * when an individual part upload fails. This behavior can be disabled in order\n * to manually handle failures by setting the `leavePartsOnError` configuration\n * option to `true` when initializing the upload object.\n *\n * @!event httpUploadProgress(progress)\n * Triggered when the uploader has uploaded more data.\n * @note The `total` property may not be set if the stream being uploaded has\n * not yet finished chunking. In this case the `total` will be undefined\n * until the total stream size is known.\n * @note This event will not be emitted in Node.js 0.8.x.\n * @param progress [map] An object containing the `loaded` and `total` bytes\n * of the request and the `key` of the S3 object. Note that `total` may be undefined until the payload\n * size is known.\n * @context (see AWS.Request~send)\n */\nAWS.S3.ManagedUpload = AWS.util.inherit({\n /**\n * Creates a managed upload object with a set of configuration options.\n *\n * @note A \"Body\" parameter is required to be set prior to calling {send}.\n * @note In Node.js, sending \"Body\" as {https://nodejs.org/dist/latest/docs/api/stream.html#stream_object_mode object-mode stream}\n * may result in upload hangs. Using buffer stream is preferable.\n * @option options params [map] a map of parameters to pass to the upload\n * requests. The \"Body\" parameter is required to be specified either on\n * the service or in the params option.\n * @note ContentMD5 should not be provided when using the managed upload object.\n * Instead, setting \"computeChecksums\" to true will enable automatic ContentMD5 generation\n * by the managed upload object.\n * @option options queueSize [Number] (4) the size of the concurrent queue\n * manager to upload parts in parallel. Set to 1 for synchronous uploading\n * of parts. Note that the uploader will buffer at most queueSize * partSize\n * bytes into memory at any given time.\n * @option options partSize [Number] (5mb) the size in bytes for each\n * individual part to be uploaded. Adjust the part size to ensure the number\n * of parts does not exceed {maxTotalParts}. See {minPartSize} for the\n * minimum allowed part size.\n * @option options leavePartsOnError [Boolean] (false) whether to abort the\n * multipart upload if an error occurs. Set to true if you want to handle\n * failures manually.\n * @option options service [AWS.S3] an optional S3 service object to use for\n * requests. This object might have bound parameters used by the uploader.\n * @option options tags [Array] The tags to apply to the uploaded object.\n * Each tag should have a `Key` and `Value` keys.\n * @example Creating a default uploader for a stream object\n * var upload = new AWS.S3.ManagedUpload({\n * params: {Bucket: 'bucket', Key: 'key', Body: stream}\n * });\n * @example Creating an uploader with concurrency of 1 and partSize of 10mb\n * var upload = new AWS.S3.ManagedUpload({\n * partSize: 10 * 1024 * 1024, queueSize: 1,\n * params: {Bucket: 'bucket', Key: 'key', Body: stream}\n * });\n * @example Creating an uploader with tags\n * var upload = new AWS.S3.ManagedUpload({\n * params: {Bucket: 'bucket', Key: 'key', Body: stream},\n * tags: [{Key: 'tag1', Value: 'value1'}, {Key: 'tag2', Value: 'value2'}]\n * });\n * @see send\n */\n constructor: function ManagedUpload(options) {\n var self = this;\n AWS.SequentialExecutor.call(self);\n self.body = null;\n self.sliceFn = null;\n self.callback = null;\n self.parts = {};\n self.completeInfo = [];\n self.fillQueue = function() {\n self.callback(new Error('Unsupported body payload ' + typeof self.body));\n };\n\n self.configure(options);\n },\n\n /**\n * @api private\n */\n configure: function configure(options) {\n options = options || {};\n this.partSize = this.minPartSize;\n\n if (options.queueSize) this.queueSize = options.queueSize;\n if (options.partSize) this.partSize = options.partSize;\n if (options.leavePartsOnError) this.leavePartsOnError = true;\n if (options.tags) {\n if (!Array.isArray(options.tags)) {\n throw new Error('Tags must be specified as an array; ' +\n typeof options.tags + ' provided.');\n }\n this.tags = options.tags;\n }\n\n if (this.partSize < this.minPartSize) {\n throw new Error('partSize must be greater than ' +\n this.minPartSize);\n }\n\n this.service = options.service;\n this.bindServiceObject(options.params);\n this.validateBody();\n this.adjustTotalBytes();\n },\n\n /**\n * @api private\n */\n leavePartsOnError: false,\n\n /**\n * @api private\n */\n queueSize: 4,\n\n /**\n * @api private\n */\n partSize: null,\n\n /**\n * @readonly\n * @return [Number] the minimum number of bytes for an individual part\n * upload.\n */\n minPartSize: 1024 * 1024 * 5,\n\n /**\n * @readonly\n * @return [Number] the maximum allowed number of parts in a multipart upload.\n */\n maxTotalParts: 10000,\n\n /**\n * Initiates the managed upload for the payload.\n *\n * @callback callback function(err, data)\n * @param err [Error] an error or null if no error occurred.\n * @param data [map] The response data from the successful upload:\n * * `Location` (String) the URL of the uploaded object\n * * `ETag` (String) the ETag of the uploaded object\n * * `Bucket` (String) the bucket to which the object was uploaded\n * * `Key` (String) the key to which the object was uploaded\n * @example Sending a managed upload object\n * var params = {Bucket: 'bucket', Key: 'key', Body: stream};\n * var upload = new AWS.S3.ManagedUpload({params: params});\n * upload.send(function(err, data) {\n * console.log(err, data);\n * });\n */\n send: function(callback) {\n var self = this;\n self.failed = false;\n self.callback = callback || function(err) { if (err) throw err; };\n\n var runFill = true;\n if (self.sliceFn) {\n self.fillQueue = self.fillBuffer;\n } else if (AWS.util.isNode()) {\n var Stream = AWS.util.stream.Stream;\n if (self.body instanceof Stream) {\n runFill = false;\n self.fillQueue = self.fillStream;\n self.partBuffers = [];\n self.body.\n on('error', function(err) { self.cleanup(err); }).\n on('readable', function() { self.fillQueue(); }).\n on('end', function() {\n self.isDoneChunking = true;\n self.numParts = self.totalPartNumbers;\n self.fillQueue.call(self);\n\n if (self.isDoneChunking && self.totalPartNumbers >= 1 && self.doneParts === self.numParts) {\n self.finishMultiPart();\n }\n });\n }\n }\n\n if (runFill) self.fillQueue.call(self);\n },\n\n /**\n * @!method promise()\n * Returns a 'thenable' promise.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function(data)\n * Called if the promise is fulfilled.\n * @param data [map] The response data from the successful upload:\n * `Location` (String) the URL of the uploaded object\n * `ETag` (String) the ETag of the uploaded object\n * `Bucket` (String) the bucket to which the object was uploaded\n * `Key` (String) the key to which the object was uploaded\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] an error or null if no error occurred.\n * @return [Promise] A promise that represents the state of the upload request.\n * @example Sending an upload request using promises.\n * var upload = s3.upload({Bucket: 'bucket', Key: 'key', Body: stream});\n * var promise = upload.promise();\n * promise.then(function(data) { ... }, function(err) { ... });\n */\n\n /**\n * Aborts a managed upload, including all concurrent upload requests.\n * @note By default, calling this function will cleanup a multipart upload\n * if one was created. To leave the multipart upload around after aborting\n * a request, configure `leavePartsOnError` to `true` in the {constructor}.\n * @note Calling {abort} in the browser environment will not abort any requests\n * that are already in flight. If a multipart upload was created, any parts\n * not yet uploaded will not be sent, and the multipart upload will be cleaned up.\n * @example Aborting an upload\n * var params = {\n * Bucket: 'bucket', Key: 'key',\n * Body: Buffer.alloc(1024 * 1024 * 25) // 25MB payload\n * };\n * var upload = s3.upload(params);\n * upload.send(function (err, data) {\n * if (err) console.log(\"Error:\", err.code, err.message);\n * else console.log(data);\n * });\n *\n * // abort request in 1 second\n * setTimeout(upload.abort.bind(upload), 1000);\n */\n abort: function() {\n var self = this;\n //abort putObject request\n if (self.isDoneChunking === true && self.totalPartNumbers === 1 && self.singlePart) {\n self.singlePart.abort();\n } else {\n self.cleanup(AWS.util.error(new Error('Request aborted by user'), {\n code: 'RequestAbortedError', retryable: false\n }));\n }\n },\n\n /**\n * @api private\n */\n validateBody: function validateBody() {\n var self = this;\n self.body = self.service.config.params.Body;\n if (typeof self.body === 'string') {\n self.body = AWS.util.buffer.toBuffer(self.body);\n } else if (!self.body) {\n throw new Error('params.Body is required');\n }\n self.sliceFn = AWS.util.arraySliceFn(self.body);\n },\n\n /**\n * @api private\n */\n bindServiceObject: function bindServiceObject(params) {\n params = params || {};\n var self = this;\n // bind parameters to new service object\n if (!self.service) {\n self.service = new AWS.S3({params: params});\n } else {\n // Create a new S3 client from the supplied client's constructor.\n var service = self.service;\n var config = AWS.util.copy(service.config);\n config.signatureVersion = service.getSignatureVersion();\n self.service = new service.constructor.__super__(config);\n self.service.config.params =\n AWS.util.merge(self.service.config.params || {}, params);\n Object.defineProperty(self.service, '_originalConfig', {\n get: function() { return service._originalConfig; },\n enumerable: false,\n configurable: true\n });\n }\n },\n\n /**\n * @api private\n */\n adjustTotalBytes: function adjustTotalBytes() {\n var self = this;\n try { // try to get totalBytes\n self.totalBytes = byteLength(self.body);\n } catch (e) { }\n\n // try to adjust partSize if we know payload length\n if (self.totalBytes) {\n var newPartSize = Math.ceil(self.totalBytes / self.maxTotalParts);\n if (newPartSize > self.partSize) self.partSize = newPartSize;\n } else {\n self.totalBytes = undefined;\n }\n },\n\n /**\n * @api private\n */\n isDoneChunking: false,\n\n /**\n * @api private\n */\n partPos: 0,\n\n /**\n * @api private\n */\n totalChunkedBytes: 0,\n\n /**\n * @api private\n */\n totalUploadedBytes: 0,\n\n /**\n * @api private\n */\n totalBytes: undefined,\n\n /**\n * @api private\n */\n numParts: 0,\n\n /**\n * @api private\n */\n totalPartNumbers: 0,\n\n /**\n * @api private\n */\n activeParts: 0,\n\n /**\n * @api private\n */\n doneParts: 0,\n\n /**\n * @api private\n */\n parts: null,\n\n /**\n * @api private\n */\n completeInfo: null,\n\n /**\n * @api private\n */\n failed: false,\n\n /**\n * @api private\n */\n multipartReq: null,\n\n /**\n * @api private\n */\n partBuffers: null,\n\n /**\n * @api private\n */\n partBufferLength: 0,\n\n /**\n * @api private\n */\n fillBuffer: function fillBuffer() {\n var self = this;\n var bodyLen = byteLength(self.body);\n\n if (bodyLen === 0) {\n self.isDoneChunking = true;\n self.numParts = 1;\n self.nextChunk(self.body);\n return;\n }\n\n while (self.activeParts < self.queueSize && self.partPos < bodyLen) {\n var endPos = Math.min(self.partPos + self.partSize, bodyLen);\n var buf = self.sliceFn.call(self.body, self.partPos, endPos);\n self.partPos += self.partSize;\n\n if (byteLength(buf) < self.partSize || self.partPos === bodyLen) {\n self.isDoneChunking = true;\n self.numParts = self.totalPartNumbers + 1;\n }\n self.nextChunk(buf);\n }\n },\n\n /**\n * @api private\n */\n fillStream: function fillStream() {\n var self = this;\n if (self.activeParts >= self.queueSize) return;\n\n var buf = self.body.read(self.partSize - self.partBufferLength) ||\n self.body.read();\n if (buf) {\n self.partBuffers.push(buf);\n self.partBufferLength += buf.length;\n self.totalChunkedBytes += buf.length;\n }\n\n if (self.partBufferLength >= self.partSize) {\n // if we have single buffer we avoid copyfull concat\n var pbuf = self.partBuffers.length === 1 ?\n self.partBuffers[0] : Buffer.concat(self.partBuffers);\n self.partBuffers = [];\n self.partBufferLength = 0;\n\n // if we have more than partSize, push the rest back on the queue\n if (pbuf.length > self.partSize) {\n var rest = pbuf.slice(self.partSize);\n self.partBuffers.push(rest);\n self.partBufferLength += rest.length;\n pbuf = pbuf.slice(0, self.partSize);\n }\n\n self.nextChunk(pbuf);\n }\n\n if (self.isDoneChunking && !self.isDoneSending) {\n // if we have single buffer we avoid copyfull concat\n pbuf = self.partBuffers.length === 1 ?\n self.partBuffers[0] : Buffer.concat(self.partBuffers);\n self.partBuffers = [];\n self.partBufferLength = 0;\n self.totalBytes = self.totalChunkedBytes;\n self.isDoneSending = true;\n\n if (self.numParts === 0 || pbuf.length > 0) {\n self.numParts++;\n self.nextChunk(pbuf);\n }\n }\n\n self.body.read(0);\n },\n\n /**\n * @api private\n */\n nextChunk: function nextChunk(chunk) {\n var self = this;\n if (self.failed) return null;\n\n var partNumber = ++self.totalPartNumbers;\n if (self.isDoneChunking && partNumber === 1) {\n var params = {Body: chunk};\n if (this.tags) {\n params.Tagging = this.getTaggingHeader();\n }\n var req = self.service.putObject(params);\n req._managedUpload = self;\n req.on('httpUploadProgress', self.progress).send(self.finishSinglePart);\n self.singlePart = req; //save the single part request\n return null;\n } else if (self.service.config.params.ContentMD5) {\n var err = AWS.util.error(new Error('The Content-MD5 you specified is invalid for multi-part uploads.'), {\n code: 'InvalidDigest', retryable: false\n });\n\n self.cleanup(err);\n return null;\n }\n\n if (self.completeInfo[partNumber] && self.completeInfo[partNumber].ETag !== null) {\n return null; // Already uploaded this part.\n }\n\n self.activeParts++;\n if (!self.service.config.params.UploadId) {\n\n if (!self.multipartReq) { // create multipart\n self.multipartReq = self.service.createMultipartUpload();\n self.multipartReq.on('success', function(resp) {\n self.service.config.params.UploadId = resp.data.UploadId;\n self.multipartReq = null;\n });\n self.queueChunks(chunk, partNumber);\n self.multipartReq.on('error', function(err) {\n self.cleanup(err);\n });\n self.multipartReq.send();\n } else {\n self.queueChunks(chunk, partNumber);\n }\n } else { // multipart is created, just send\n self.uploadPart(chunk, partNumber);\n }\n },\n\n /**\n * @api private\n */\n getTaggingHeader: function getTaggingHeader() {\n var kvPairStrings = [];\n for (var i = 0; i < this.tags.length; i++) {\n kvPairStrings.push(AWS.util.uriEscape(this.tags[i].Key) + '=' +\n AWS.util.uriEscape(this.tags[i].Value));\n }\n\n return kvPairStrings.join('&');\n },\n\n /**\n * @api private\n */\n uploadPart: function uploadPart(chunk, partNumber) {\n var self = this;\n\n var partParams = {\n Body: chunk,\n ContentLength: AWS.util.string.byteLength(chunk),\n PartNumber: partNumber\n };\n\n var partInfo = {ETag: null, PartNumber: partNumber};\n self.completeInfo[partNumber] = partInfo;\n\n var req = self.service.uploadPart(partParams);\n self.parts[partNumber] = req;\n req._lastUploadedBytes = 0;\n req._managedUpload = self;\n req.on('httpUploadProgress', self.progress);\n req.send(function(err, data) {\n delete self.parts[partParams.PartNumber];\n self.activeParts--;\n\n if (!err && (!data || !data.ETag)) {\n var message = 'No access to ETag property on response.';\n if (AWS.util.isBrowser()) {\n message += ' Check CORS configuration to expose ETag header.';\n }\n\n err = AWS.util.error(new Error(message), {\n code: 'ETagMissing', retryable: false\n });\n }\n if (err) return self.cleanup(err);\n //prevent sending part being returned twice (https://github.com/aws/aws-sdk-js/issues/2304)\n if (self.completeInfo[partNumber] && self.completeInfo[partNumber].ETag !== null) return null;\n partInfo.ETag = data.ETag;\n self.doneParts++;\n if (self.isDoneChunking && self.doneParts === self.totalPartNumbers) {\n self.finishMultiPart();\n } else {\n self.fillQueue.call(self);\n }\n });\n },\n\n /**\n * @api private\n */\n queueChunks: function queueChunks(chunk, partNumber) {\n var self = this;\n self.multipartReq.on('success', function() {\n self.uploadPart(chunk, partNumber);\n });\n },\n\n /**\n * @api private\n */\n cleanup: function cleanup(err) {\n var self = this;\n if (self.failed) return;\n\n // clean up stream\n if (typeof self.body.removeAllListeners === 'function' &&\n typeof self.body.resume === 'function') {\n self.body.removeAllListeners('readable');\n self.body.removeAllListeners('end');\n self.body.resume();\n }\n\n // cleanup multipartReq listeners\n if (self.multipartReq) {\n self.multipartReq.removeAllListeners('success');\n self.multipartReq.removeAllListeners('error');\n self.multipartReq.removeAllListeners('complete');\n delete self.multipartReq;\n }\n\n if (self.service.config.params.UploadId && !self.leavePartsOnError) {\n self.service.abortMultipartUpload().send();\n } else if (self.leavePartsOnError) {\n self.isDoneChunking = false;\n }\n\n AWS.util.each(self.parts, function(partNumber, part) {\n part.removeAllListeners('complete');\n part.abort();\n });\n\n self.activeParts = 0;\n self.partPos = 0;\n self.numParts = 0;\n self.totalPartNumbers = 0;\n self.parts = {};\n self.failed = true;\n self.callback(err);\n },\n\n /**\n * @api private\n */\n finishMultiPart: function finishMultiPart() {\n var self = this;\n var completeParams = { MultipartUpload: { Parts: self.completeInfo.slice(1) } };\n self.service.completeMultipartUpload(completeParams, function(err, data) {\n if (err) {\n return self.cleanup(err);\n }\n\n if (data && typeof data.Location === 'string') {\n data.Location = data.Location.replace(/%2F/g, '/');\n }\n\n if (Array.isArray(self.tags)) {\n for (var i = 0; i < self.tags.length; i++) {\n self.tags[i].Value = String(self.tags[i].Value);\n }\n self.service.putObjectTagging(\n {Tagging: {TagSet: self.tags}},\n function(e, d) {\n if (e) {\n self.callback(e);\n } else {\n self.callback(e, data);\n }\n }\n );\n } else {\n self.callback(err, data);\n }\n });\n },\n\n /**\n * @api private\n */\n finishSinglePart: function finishSinglePart(err, data) {\n var upload = this.request._managedUpload;\n var httpReq = this.request.httpRequest;\n var endpoint = httpReq.endpoint;\n if (err) return upload.callback(err);\n data.Location =\n [endpoint.protocol, '//', endpoint.host, httpReq.path].join('');\n data.key = this.request.params.Key; // will stay undocumented\n data.Key = this.request.params.Key;\n data.Bucket = this.request.params.Bucket;\n upload.callback(err, data);\n },\n\n /**\n * @api private\n */\n progress: function progress(info) {\n var upload = this._managedUpload;\n if (this.operation === 'putObject') {\n info.part = 1;\n info.key = this.params.Key;\n } else {\n upload.totalUploadedBytes += info.loaded - this._lastUploadedBytes;\n this._lastUploadedBytes = info.loaded;\n info = {\n loaded: upload.totalUploadedBytes,\n total: upload.totalBytes,\n part: this.params.PartNumber,\n key: this.params.Key\n };\n }\n upload.emit('httpUploadProgress', [info]);\n }\n});\n\nAWS.util.mixin(AWS.S3.ManagedUpload, AWS.SequentialExecutor);\n\n/**\n * @api private\n */\nAWS.S3.ManagedUpload.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.promise = AWS.util.promisifyMethod('send', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.S3.ManagedUpload.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.promise;\n};\n\nAWS.util.addPromises(AWS.S3.ManagedUpload);\n\n/**\n * @api private\n */\nmodule.exports = AWS.S3.ManagedUpload;\n","var AWS = require('./core');\n\n/**\n * @api private\n * @!method on(eventName, callback)\n * Registers an event listener callback for the event given by `eventName`.\n * Parameters passed to the callback function depend on the individual event\n * being triggered. See the event documentation for those parameters.\n *\n * @param eventName [String] the event name to register the listener for\n * @param callback [Function] the listener callback function\n * @param toHead [Boolean] attach the listener callback to the head of callback array if set to true.\n * Default to be false.\n * @return [AWS.SequentialExecutor] the same object for chaining\n */\nAWS.SequentialExecutor = AWS.util.inherit({\n\n constructor: function SequentialExecutor() {\n this._events = {};\n },\n\n /**\n * @api private\n */\n listeners: function listeners(eventName) {\n return this._events[eventName] ? this._events[eventName].slice(0) : [];\n },\n\n on: function on(eventName, listener, toHead) {\n if (this._events[eventName]) {\n toHead ?\n this._events[eventName].unshift(listener) :\n this._events[eventName].push(listener);\n } else {\n this._events[eventName] = [listener];\n }\n return this;\n },\n\n onAsync: function onAsync(eventName, listener, toHead) {\n listener._isAsync = true;\n return this.on(eventName, listener, toHead);\n },\n\n removeListener: function removeListener(eventName, listener) {\n var listeners = this._events[eventName];\n if (listeners) {\n var length = listeners.length;\n var position = -1;\n for (var i = 0; i < length; ++i) {\n if (listeners[i] === listener) {\n position = i;\n }\n }\n if (position > -1) {\n listeners.splice(position, 1);\n }\n }\n return this;\n },\n\n removeAllListeners: function removeAllListeners(eventName) {\n if (eventName) {\n delete this._events[eventName];\n } else {\n this._events = {};\n }\n return this;\n },\n\n /**\n * @api private\n */\n emit: function emit(eventName, eventArgs, doneCallback) {\n if (!doneCallback) doneCallback = function() { };\n var listeners = this.listeners(eventName);\n var count = listeners.length;\n this.callListeners(listeners, eventArgs, doneCallback);\n return count > 0;\n },\n\n /**\n * @api private\n */\n callListeners: function callListeners(listeners, args, doneCallback, prevError) {\n var self = this;\n var error = prevError || null;\n\n function callNextListener(err) {\n if (err) {\n error = AWS.util.error(error || new Error(), err);\n if (self._haltHandlersOnError) {\n return doneCallback.call(self, error);\n }\n }\n self.callListeners(listeners, args, doneCallback, error);\n }\n\n while (listeners.length > 0) {\n var listener = listeners.shift();\n if (listener._isAsync) { // asynchronous listener\n listener.apply(self, args.concat([callNextListener]));\n return; // stop here, callNextListener will continue\n } else { // synchronous listener\n try {\n listener.apply(self, args);\n } catch (err) {\n error = AWS.util.error(error || new Error(), err);\n }\n if (error && self._haltHandlersOnError) {\n doneCallback.call(self, error);\n return;\n }\n }\n }\n doneCallback.call(self, error);\n },\n\n /**\n * Adds or copies a set of listeners from another list of\n * listeners or SequentialExecutor object.\n *\n * @param listeners [map>, AWS.SequentialExecutor]\n * a list of events and callbacks, or an event emitter object\n * containing listeners to add to this emitter object.\n * @return [AWS.SequentialExecutor] the emitter object, for chaining.\n * @example Adding listeners from a map of listeners\n * emitter.addListeners({\n * event1: [function() { ... }, function() { ... }],\n * event2: [function() { ... }]\n * });\n * emitter.emit('event1'); // emitter has event1\n * emitter.emit('event2'); // emitter has event2\n * @example Adding listeners from another emitter object\n * var emitter1 = new AWS.SequentialExecutor();\n * emitter1.on('event1', function() { ... });\n * emitter1.on('event2', function() { ... });\n * var emitter2 = new AWS.SequentialExecutor();\n * emitter2.addListeners(emitter1);\n * emitter2.emit('event1'); // emitter2 has event1\n * emitter2.emit('event2'); // emitter2 has event2\n */\n addListeners: function addListeners(listeners) {\n var self = this;\n\n // extract listeners if parameter is an SequentialExecutor object\n if (listeners._events) listeners = listeners._events;\n\n AWS.util.each(listeners, function(event, callbacks) {\n if (typeof callbacks === 'function') callbacks = [callbacks];\n AWS.util.arrayEach(callbacks, function(callback) {\n self.on(event, callback);\n });\n });\n\n return self;\n },\n\n /**\n * Registers an event with {on} and saves the callback handle function\n * as a property on the emitter object using a given `name`.\n *\n * @param name [String] the property name to set on this object containing\n * the callback function handle so that the listener can be removed in\n * the future.\n * @param (see on)\n * @return (see on)\n * @example Adding a named listener DATA_CALLBACK\n * var listener = function() { doSomething(); };\n * emitter.addNamedListener('DATA_CALLBACK', 'data', listener);\n *\n * // the following prints: true\n * console.log(emitter.DATA_CALLBACK == listener);\n */\n addNamedListener: function addNamedListener(name, eventName, callback, toHead) {\n this[name] = callback;\n this.addListener(eventName, callback, toHead);\n return this;\n },\n\n /**\n * @api private\n */\n addNamedAsyncListener: function addNamedAsyncListener(name, eventName, callback, toHead) {\n callback._isAsync = true;\n return this.addNamedListener(name, eventName, callback, toHead);\n },\n\n /**\n * Helper method to add a set of named listeners using\n * {addNamedListener}. The callback contains a parameter\n * with a handle to the `addNamedListener` method.\n *\n * @callback callback function(add)\n * The callback function is called immediately in order to provide\n * the `add` function to the block. This simplifies the addition of\n * a large group of named listeners.\n * @param add [Function] the {addNamedListener} function to call\n * when registering listeners.\n * @example Adding a set of named listeners\n * emitter.addNamedListeners(function(add) {\n * add('DATA_CALLBACK', 'data', function() { ... });\n * add('OTHER', 'otherEvent', function() { ... });\n * add('LAST', 'lastEvent', function() { ... });\n * });\n *\n * // these properties are now set:\n * emitter.DATA_CALLBACK;\n * emitter.OTHER;\n * emitter.LAST;\n */\n addNamedListeners: function addNamedListeners(callback) {\n var self = this;\n callback(\n function() {\n self.addNamedListener.apply(self, arguments);\n },\n function() {\n self.addNamedAsyncListener.apply(self, arguments);\n }\n );\n return this;\n }\n});\n\n/**\n * {on} is the prefered method.\n * @api private\n */\nAWS.SequentialExecutor.prototype.addListener = AWS.SequentialExecutor.prototype.on;\n\n/**\n * @api private\n */\nmodule.exports = AWS.SequentialExecutor;\n","var AWS = require('./core');\nvar Api = require('./model/api');\nvar regionConfig = require('./region_config');\n\nvar inherit = AWS.util.inherit;\nvar clientCount = 0;\nvar region_utils = require('./region/utils');\n\n/**\n * The service class representing an AWS service.\n *\n * @class_abstract This class is an abstract class.\n *\n * @!attribute apiVersions\n * @return [Array] the list of API versions supported by this service.\n * @readonly\n */\nAWS.Service = inherit({\n /**\n * Create a new service object with a configuration object\n *\n * @param config [map] a map of configuration options\n */\n constructor: function Service(config) {\n if (!this.loadServiceClass) {\n throw AWS.util.error(new Error(),\n 'Service must be constructed with `new\\' operator');\n }\n\n if (config) {\n if (config.region) {\n var region = config.region;\n if (region_utils.isFipsRegion(region)) {\n config.region = region_utils.getRealRegion(region);\n config.useFipsEndpoint = true;\n }\n if (region_utils.isGlobalRegion(region)) {\n config.region = region_utils.getRealRegion(region);\n }\n }\n if (typeof config.useDualstack === 'boolean'\n && typeof config.useDualstackEndpoint !== 'boolean') {\n config.useDualstackEndpoint = config.useDualstack;\n }\n }\n\n var ServiceClass = this.loadServiceClass(config || {});\n if (ServiceClass) {\n var originalConfig = AWS.util.copy(config);\n var svc = new ServiceClass(config);\n Object.defineProperty(svc, '_originalConfig', {\n get: function() { return originalConfig; },\n enumerable: false,\n configurable: true\n });\n svc._clientId = ++clientCount;\n return svc;\n }\n this.initialize(config);\n },\n\n /**\n * @api private\n */\n initialize: function initialize(config) {\n var svcConfig = AWS.config[this.serviceIdentifier];\n this.config = new AWS.Config(AWS.config);\n if (svcConfig) this.config.update(svcConfig, true);\n if (config) this.config.update(config, true);\n\n this.validateService();\n if (!this.config.endpoint) regionConfig.configureEndpoint(this);\n\n this.config.endpoint = this.endpointFromTemplate(this.config.endpoint);\n this.setEndpoint(this.config.endpoint);\n //enable attaching listeners to service client\n AWS.SequentialExecutor.call(this);\n AWS.Service.addDefaultMonitoringListeners(this);\n if ((this.config.clientSideMonitoring || AWS.Service._clientSideMonitoring) && this.publisher) {\n var publisher = this.publisher;\n this.addNamedListener('PUBLISH_API_CALL', 'apiCall', function PUBLISH_API_CALL(event) {\n process.nextTick(function() {publisher.eventHandler(event);});\n });\n this.addNamedListener('PUBLISH_API_ATTEMPT', 'apiCallAttempt', function PUBLISH_API_ATTEMPT(event) {\n process.nextTick(function() {publisher.eventHandler(event);});\n });\n }\n },\n\n /**\n * @api private\n */\n validateService: function validateService() {\n },\n\n /**\n * @api private\n */\n loadServiceClass: function loadServiceClass(serviceConfig) {\n var config = serviceConfig;\n if (!AWS.util.isEmpty(this.api)) {\n return null;\n } else if (config.apiConfig) {\n return AWS.Service.defineServiceApi(this.constructor, config.apiConfig);\n } else if (!this.constructor.services) {\n return null;\n } else {\n config = new AWS.Config(AWS.config);\n config.update(serviceConfig, true);\n var version = config.apiVersions[this.constructor.serviceIdentifier];\n version = version || config.apiVersion;\n return this.getLatestServiceClass(version);\n }\n },\n\n /**\n * @api private\n */\n getLatestServiceClass: function getLatestServiceClass(version) {\n version = this.getLatestServiceVersion(version);\n if (this.constructor.services[version] === null) {\n AWS.Service.defineServiceApi(this.constructor, version);\n }\n\n return this.constructor.services[version];\n },\n\n /**\n * @api private\n */\n getLatestServiceVersion: function getLatestServiceVersion(version) {\n if (!this.constructor.services || this.constructor.services.length === 0) {\n throw new Error('No services defined on ' +\n this.constructor.serviceIdentifier);\n }\n\n if (!version) {\n version = 'latest';\n } else if (AWS.util.isType(version, Date)) {\n version = AWS.util.date.iso8601(version).split('T')[0];\n }\n\n if (Object.hasOwnProperty(this.constructor.services, version)) {\n return version;\n }\n\n var keys = Object.keys(this.constructor.services).sort();\n var selectedVersion = null;\n for (var i = keys.length - 1; i >= 0; i--) {\n // versions that end in \"*\" are not available on disk and can be\n // skipped, so do not choose these as selectedVersions\n if (keys[i][keys[i].length - 1] !== '*') {\n selectedVersion = keys[i];\n }\n if (keys[i].substr(0, 10) <= version) {\n return selectedVersion;\n }\n }\n\n throw new Error('Could not find ' + this.constructor.serviceIdentifier +\n ' API to satisfy version constraint `' + version + '\\'');\n },\n\n /**\n * @api private\n */\n api: {},\n\n /**\n * @api private\n */\n defaultRetryCount: 3,\n\n /**\n * @api private\n */\n customizeRequests: function customizeRequests(callback) {\n if (!callback) {\n this.customRequestHandler = null;\n } else if (typeof callback === 'function') {\n this.customRequestHandler = callback;\n } else {\n throw new Error('Invalid callback type \\'' + typeof callback + '\\' provided in customizeRequests');\n }\n },\n\n /**\n * Calls an operation on a service with the given input parameters.\n *\n * @param operation [String] the name of the operation to call on the service.\n * @param params [map] a map of input options for the operation\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n */\n makeRequest: function makeRequest(operation, params, callback) {\n if (typeof params === 'function') {\n callback = params;\n params = null;\n }\n\n params = params || {};\n if (this.config.params) { // copy only toplevel bound params\n var rules = this.api.operations[operation];\n if (rules) {\n params = AWS.util.copy(params);\n AWS.util.each(this.config.params, function(key, value) {\n if (rules.input.members[key]) {\n if (params[key] === undefined || params[key] === null) {\n params[key] = value;\n }\n }\n });\n }\n }\n\n var request = new AWS.Request(this, operation, params);\n this.addAllRequestListeners(request);\n this.attachMonitoringEmitter(request);\n if (callback) request.send(callback);\n return request;\n },\n\n /**\n * Calls an operation on a service with the given input parameters, without\n * any authentication data. This method is useful for \"public\" API operations.\n *\n * @param operation [String] the name of the operation to call on the service.\n * @param params [map] a map of input options for the operation\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n */\n makeUnauthenticatedRequest: function makeUnauthenticatedRequest(operation, params, callback) {\n if (typeof params === 'function') {\n callback = params;\n params = {};\n }\n\n var request = this.makeRequest(operation, params).toUnauthenticated();\n return callback ? request.send(callback) : request;\n },\n\n /**\n * Waits for a given state\n *\n * @param state [String] the state on the service to wait for\n * @param params [map] a map of parameters to pass with each request\n * @option params $waiter [map] a map of configuration options for the waiter\n * @option params $waiter.delay [Number] The number of seconds to wait between\n * requests\n * @option params $waiter.maxAttempts [Number] The maximum number of requests\n * to send while waiting\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n */\n waitFor: function waitFor(state, params, callback) {\n var waiter = new AWS.ResourceWaiter(this, state);\n return waiter.wait(params, callback);\n },\n\n /**\n * @api private\n */\n addAllRequestListeners: function addAllRequestListeners(request) {\n var list = [AWS.events, AWS.EventListeners.Core, this.serviceInterface(),\n AWS.EventListeners.CorePost];\n for (var i = 0; i < list.length; i++) {\n if (list[i]) request.addListeners(list[i]);\n }\n\n // disable parameter validation\n if (!this.config.paramValidation) {\n request.removeListener('validate',\n AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n }\n\n if (this.config.logger) { // add logging events\n request.addListeners(AWS.EventListeners.Logger);\n }\n\n this.setupRequestListeners(request);\n // call prototype's customRequestHandler\n if (typeof this.constructor.prototype.customRequestHandler === 'function') {\n this.constructor.prototype.customRequestHandler(request);\n }\n // call instance's customRequestHandler\n if (Object.prototype.hasOwnProperty.call(this, 'customRequestHandler') && typeof this.customRequestHandler === 'function') {\n this.customRequestHandler(request);\n }\n },\n\n /**\n * Event recording metrics for a whole API call.\n * @returns {object} a subset of api call metrics\n * @api private\n */\n apiCallEvent: function apiCallEvent(request) {\n var api = request.service.api.operations[request.operation];\n var monitoringEvent = {\n Type: 'ApiCall',\n Api: api ? api.name : request.operation,\n Version: 1,\n Service: request.service.api.serviceId || request.service.api.endpointPrefix,\n Region: request.httpRequest.region,\n MaxRetriesExceeded: 0,\n UserAgent: request.httpRequest.getUserAgent(),\n };\n var response = request.response;\n if (response.httpResponse.statusCode) {\n monitoringEvent.FinalHttpStatusCode = response.httpResponse.statusCode;\n }\n if (response.error) {\n var error = response.error;\n var statusCode = response.httpResponse.statusCode;\n if (statusCode > 299) {\n if (error.code) monitoringEvent.FinalAwsException = error.code;\n if (error.message) monitoringEvent.FinalAwsExceptionMessage = error.message;\n } else {\n if (error.code || error.name) monitoringEvent.FinalSdkException = error.code || error.name;\n if (error.message) monitoringEvent.FinalSdkExceptionMessage = error.message;\n }\n }\n return monitoringEvent;\n },\n\n /**\n * Event recording metrics for an API call attempt.\n * @returns {object} a subset of api call attempt metrics\n * @api private\n */\n apiAttemptEvent: function apiAttemptEvent(request) {\n var api = request.service.api.operations[request.operation];\n var monitoringEvent = {\n Type: 'ApiCallAttempt',\n Api: api ? api.name : request.operation,\n Version: 1,\n Service: request.service.api.serviceId || request.service.api.endpointPrefix,\n Fqdn: request.httpRequest.endpoint.hostname,\n UserAgent: request.httpRequest.getUserAgent(),\n };\n var response = request.response;\n if (response.httpResponse.statusCode) {\n monitoringEvent.HttpStatusCode = response.httpResponse.statusCode;\n }\n if (\n !request._unAuthenticated &&\n request.service.config.credentials &&\n request.service.config.credentials.accessKeyId\n ) {\n monitoringEvent.AccessKey = request.service.config.credentials.accessKeyId;\n }\n if (!response.httpResponse.headers) return monitoringEvent;\n if (request.httpRequest.headers['x-amz-security-token']) {\n monitoringEvent.SessionToken = request.httpRequest.headers['x-amz-security-token'];\n }\n if (response.httpResponse.headers['x-amzn-requestid']) {\n monitoringEvent.XAmznRequestId = response.httpResponse.headers['x-amzn-requestid'];\n }\n if (response.httpResponse.headers['x-amz-request-id']) {\n monitoringEvent.XAmzRequestId = response.httpResponse.headers['x-amz-request-id'];\n }\n if (response.httpResponse.headers['x-amz-id-2']) {\n monitoringEvent.XAmzId2 = response.httpResponse.headers['x-amz-id-2'];\n }\n return monitoringEvent;\n },\n\n /**\n * Add metrics of failed request.\n * @api private\n */\n attemptFailEvent: function attemptFailEvent(request) {\n var monitoringEvent = this.apiAttemptEvent(request);\n var response = request.response;\n var error = response.error;\n if (response.httpResponse.statusCode > 299 ) {\n if (error.code) monitoringEvent.AwsException = error.code;\n if (error.message) monitoringEvent.AwsExceptionMessage = error.message;\n } else {\n if (error.code || error.name) monitoringEvent.SdkException = error.code || error.name;\n if (error.message) monitoringEvent.SdkExceptionMessage = error.message;\n }\n return monitoringEvent;\n },\n\n /**\n * Attach listeners to request object to fetch metrics of each request\n * and emit data object through \\'ApiCall\\' and \\'ApiCallAttempt\\' events.\n * @api private\n */\n attachMonitoringEmitter: function attachMonitoringEmitter(request) {\n var attemptTimestamp; //timestamp marking the beginning of a request attempt\n var attemptStartRealTime; //Start time of request attempt. Used to calculating attemptLatency\n var attemptLatency; //latency from request sent out to http response reaching SDK\n var callStartRealTime; //Start time of API call. Used to calculating API call latency\n var attemptCount = 0; //request.retryCount is not reliable here\n var region; //region cache region for each attempt since it can be updated in plase (e.g. s3)\n var callTimestamp; //timestamp when the request is created\n var self = this;\n var addToHead = true;\n\n request.on('validate', function () {\n callStartRealTime = AWS.util.realClock.now();\n callTimestamp = Date.now();\n }, addToHead);\n request.on('sign', function () {\n attemptStartRealTime = AWS.util.realClock.now();\n attemptTimestamp = Date.now();\n region = request.httpRequest.region;\n attemptCount++;\n }, addToHead);\n request.on('validateResponse', function() {\n attemptLatency = Math.round(AWS.util.realClock.now() - attemptStartRealTime);\n });\n request.addNamedListener('API_CALL_ATTEMPT', 'success', function API_CALL_ATTEMPT() {\n var apiAttemptEvent = self.apiAttemptEvent(request);\n apiAttemptEvent.Timestamp = attemptTimestamp;\n apiAttemptEvent.AttemptLatency = attemptLatency >= 0 ? attemptLatency : 0;\n apiAttemptEvent.Region = region;\n self.emit('apiCallAttempt', [apiAttemptEvent]);\n });\n request.addNamedListener('API_CALL_ATTEMPT_RETRY', 'retry', function API_CALL_ATTEMPT_RETRY() {\n var apiAttemptEvent = self.attemptFailEvent(request);\n apiAttemptEvent.Timestamp = attemptTimestamp;\n //attemptLatency may not be available if fail before response\n attemptLatency = attemptLatency ||\n Math.round(AWS.util.realClock.now() - attemptStartRealTime);\n apiAttemptEvent.AttemptLatency = attemptLatency >= 0 ? attemptLatency : 0;\n apiAttemptEvent.Region = region;\n self.emit('apiCallAttempt', [apiAttemptEvent]);\n });\n request.addNamedListener('API_CALL', 'complete', function API_CALL() {\n var apiCallEvent = self.apiCallEvent(request);\n apiCallEvent.AttemptCount = attemptCount;\n if (apiCallEvent.AttemptCount <= 0) return;\n apiCallEvent.Timestamp = callTimestamp;\n var latency = Math.round(AWS.util.realClock.now() - callStartRealTime);\n apiCallEvent.Latency = latency >= 0 ? latency : 0;\n var response = request.response;\n if (\n response.error &&\n response.error.retryable &&\n typeof response.retryCount === 'number' &&\n typeof response.maxRetries === 'number' &&\n (response.retryCount >= response.maxRetries)\n ) {\n apiCallEvent.MaxRetriesExceeded = 1;\n }\n self.emit('apiCall', [apiCallEvent]);\n });\n },\n\n /**\n * Override this method to setup any custom request listeners for each\n * new request to the service.\n *\n * @method_abstract This is an abstract method.\n */\n setupRequestListeners: function setupRequestListeners(request) {\n },\n\n /**\n * Gets the signing name for a given request\n * @api private\n */\n getSigningName: function getSigningName() {\n return this.api.signingName || this.api.endpointPrefix;\n },\n\n /**\n * Gets the signer class for a given request\n * @api private\n */\n getSignerClass: function getSignerClass(request) {\n var version;\n // get operation authtype if present\n var operation = null;\n var authtype = '';\n if (request) {\n var operations = request.service.api.operations || {};\n operation = operations[request.operation] || null;\n authtype = operation ? operation.authtype : '';\n }\n if (this.config.signatureVersion) {\n version = this.config.signatureVersion;\n } else if (authtype === 'v4' || authtype === 'v4-unsigned-body') {\n version = 'v4';\n } else if (authtype === 'bearer') {\n version = 'bearer';\n } else {\n version = this.api.signatureVersion;\n }\n return AWS.Signers.RequestSigner.getVersion(version);\n },\n\n /**\n * @api private\n */\n serviceInterface: function serviceInterface() {\n switch (this.api.protocol) {\n case 'ec2': return AWS.EventListeners.Query;\n case 'query': return AWS.EventListeners.Query;\n case 'json': return AWS.EventListeners.Json;\n case 'rest-json': return AWS.EventListeners.RestJson;\n case 'rest-xml': return AWS.EventListeners.RestXml;\n }\n if (this.api.protocol) {\n throw new Error('Invalid service `protocol\\' ' +\n this.api.protocol + ' in API config');\n }\n },\n\n /**\n * @api private\n */\n successfulResponse: function successfulResponse(resp) {\n return resp.httpResponse.statusCode < 300;\n },\n\n /**\n * How many times a failed request should be retried before giving up.\n * the defaultRetryCount can be overriden by service classes.\n *\n * @api private\n */\n numRetries: function numRetries() {\n if (this.config.maxRetries !== undefined) {\n return this.config.maxRetries;\n } else {\n return this.defaultRetryCount;\n }\n },\n\n /**\n * @api private\n */\n retryDelays: function retryDelays(retryCount, err) {\n return AWS.util.calculateRetryDelay(retryCount, this.config.retryDelayOptions, err);\n },\n\n /**\n * @api private\n */\n retryableError: function retryableError(error) {\n if (this.timeoutError(error)) return true;\n if (this.networkingError(error)) return true;\n if (this.expiredCredentialsError(error)) return true;\n if (this.throttledError(error)) return true;\n if (error.statusCode >= 500) return true;\n return false;\n },\n\n /**\n * @api private\n */\n networkingError: function networkingError(error) {\n return error.code === 'NetworkingError';\n },\n\n /**\n * @api private\n */\n timeoutError: function timeoutError(error) {\n return error.code === 'TimeoutError';\n },\n\n /**\n * @api private\n */\n expiredCredentialsError: function expiredCredentialsError(error) {\n // TODO : this only handles *one* of the expired credential codes\n return (error.code === 'ExpiredTokenException');\n },\n\n /**\n * @api private\n */\n clockSkewError: function clockSkewError(error) {\n switch (error.code) {\n case 'RequestTimeTooSkewed':\n case 'RequestExpired':\n case 'InvalidSignatureException':\n case 'SignatureDoesNotMatch':\n case 'AuthFailure':\n case 'RequestInTheFuture':\n return true;\n default: return false;\n }\n },\n\n /**\n * @api private\n */\n getSkewCorrectedDate: function getSkewCorrectedDate() {\n return new Date(Date.now() + this.config.systemClockOffset);\n },\n\n /**\n * @api private\n */\n applyClockOffset: function applyClockOffset(newServerTime) {\n if (newServerTime) {\n this.config.systemClockOffset = newServerTime - Date.now();\n }\n },\n\n /**\n * @api private\n */\n isClockSkewed: function isClockSkewed(newServerTime) {\n if (newServerTime) {\n return Math.abs(this.getSkewCorrectedDate().getTime() - newServerTime) >= 300000;\n }\n },\n\n /**\n * @api private\n */\n throttledError: function throttledError(error) {\n // this logic varies between services\n if (error.statusCode === 429) return true;\n switch (error.code) {\n case 'ProvisionedThroughputExceededException':\n case 'Throttling':\n case 'ThrottlingException':\n case 'RequestLimitExceeded':\n case 'RequestThrottled':\n case 'RequestThrottledException':\n case 'TooManyRequestsException':\n case 'TransactionInProgressException': //dynamodb\n case 'EC2ThrottledException':\n return true;\n default:\n return false;\n }\n },\n\n /**\n * @api private\n */\n endpointFromTemplate: function endpointFromTemplate(endpoint) {\n if (typeof endpoint !== 'string') return endpoint;\n\n var e = endpoint;\n e = e.replace(/\\{service\\}/g, this.api.endpointPrefix);\n e = e.replace(/\\{region\\}/g, this.config.region);\n e = e.replace(/\\{scheme\\}/g, this.config.sslEnabled ? 'https' : 'http');\n return e;\n },\n\n /**\n * @api private\n */\n setEndpoint: function setEndpoint(endpoint) {\n this.endpoint = new AWS.Endpoint(endpoint, this.config);\n },\n\n /**\n * @api private\n */\n paginationConfig: function paginationConfig(operation, throwException) {\n var paginator = this.api.operations[operation].paginator;\n if (!paginator) {\n if (throwException) {\n var e = new Error();\n throw AWS.util.error(e, 'No pagination configuration for ' + operation);\n }\n return null;\n }\n\n return paginator;\n }\n});\n\nAWS.util.update(AWS.Service, {\n\n /**\n * Adds one method for each operation described in the api configuration\n *\n * @api private\n */\n defineMethods: function defineMethods(svc) {\n AWS.util.each(svc.prototype.api.operations, function iterator(method) {\n if (svc.prototype[method]) return;\n var operation = svc.prototype.api.operations[method];\n if (operation.authtype === 'none') {\n svc.prototype[method] = function (params, callback) {\n return this.makeUnauthenticatedRequest(method, params, callback);\n };\n } else {\n svc.prototype[method] = function (params, callback) {\n return this.makeRequest(method, params, callback);\n };\n }\n });\n },\n\n /**\n * Defines a new Service class using a service identifier and list of versions\n * including an optional set of features (functions) to apply to the class\n * prototype.\n *\n * @param serviceIdentifier [String] the identifier for the service\n * @param versions [Array] a list of versions that work with this\n * service\n * @param features [Object] an object to attach to the prototype\n * @return [Class] the service class defined by this function.\n */\n defineService: function defineService(serviceIdentifier, versions, features) {\n AWS.Service._serviceMap[serviceIdentifier] = true;\n if (!Array.isArray(versions)) {\n features = versions;\n versions = [];\n }\n\n var svc = inherit(AWS.Service, features || {});\n\n if (typeof serviceIdentifier === 'string') {\n AWS.Service.addVersions(svc, versions);\n\n var identifier = svc.serviceIdentifier || serviceIdentifier;\n svc.serviceIdentifier = identifier;\n } else { // defineService called with an API\n svc.prototype.api = serviceIdentifier;\n AWS.Service.defineMethods(svc);\n }\n AWS.SequentialExecutor.call(this.prototype);\n //util.clientSideMonitoring is only available in node\n if (!this.prototype.publisher && AWS.util.clientSideMonitoring) {\n var Publisher = AWS.util.clientSideMonitoring.Publisher;\n var configProvider = AWS.util.clientSideMonitoring.configProvider;\n var publisherConfig = configProvider();\n this.prototype.publisher = new Publisher(publisherConfig);\n if (publisherConfig.enabled) {\n //if csm is enabled in environment, SDK should send all metrics\n AWS.Service._clientSideMonitoring = true;\n }\n }\n AWS.SequentialExecutor.call(svc.prototype);\n AWS.Service.addDefaultMonitoringListeners(svc.prototype);\n return svc;\n },\n\n /**\n * @api private\n */\n addVersions: function addVersions(svc, versions) {\n if (!Array.isArray(versions)) versions = [versions];\n\n svc.services = svc.services || {};\n for (var i = 0; i < versions.length; i++) {\n if (svc.services[versions[i]] === undefined) {\n svc.services[versions[i]] = null;\n }\n }\n\n svc.apiVersions = Object.keys(svc.services).sort();\n },\n\n /**\n * @api private\n */\n defineServiceApi: function defineServiceApi(superclass, version, apiConfig) {\n var svc = inherit(superclass, {\n serviceIdentifier: superclass.serviceIdentifier\n });\n\n function setApi(api) {\n if (api.isApi) {\n svc.prototype.api = api;\n } else {\n svc.prototype.api = new Api(api, {\n serviceIdentifier: superclass.serviceIdentifier\n });\n }\n }\n\n if (typeof version === 'string') {\n if (apiConfig) {\n setApi(apiConfig);\n } else {\n try {\n setApi(AWS.apiLoader(superclass.serviceIdentifier, version));\n } catch (err) {\n throw AWS.util.error(err, {\n message: 'Could not find API configuration ' +\n superclass.serviceIdentifier + '-' + version\n });\n }\n }\n if (!Object.prototype.hasOwnProperty.call(superclass.services, version)) {\n superclass.apiVersions = superclass.apiVersions.concat(version).sort();\n }\n superclass.services[version] = svc;\n } else {\n setApi(version);\n }\n\n AWS.Service.defineMethods(svc);\n return svc;\n },\n\n /**\n * @api private\n */\n hasService: function(identifier) {\n return Object.prototype.hasOwnProperty.call(AWS.Service._serviceMap, identifier);\n },\n\n /**\n * @param attachOn attach default monitoring listeners to object\n *\n * Each monitoring event should be emitted from service client to service constructor prototype and then\n * to global service prototype like bubbling up. These default monitoring events listener will transfer\n * the monitoring events to the upper layer.\n * @api private\n */\n addDefaultMonitoringListeners: function addDefaultMonitoringListeners(attachOn) {\n attachOn.addNamedListener('MONITOR_EVENTS_BUBBLE', 'apiCallAttempt', function EVENTS_BUBBLE(event) {\n var baseClass = Object.getPrototypeOf(attachOn);\n if (baseClass._events) baseClass.emit('apiCallAttempt', [event]);\n });\n attachOn.addNamedListener('CALL_EVENTS_BUBBLE', 'apiCall', function CALL_EVENTS_BUBBLE(event) {\n var baseClass = Object.getPrototypeOf(attachOn);\n if (baseClass._events) baseClass.emit('apiCall', [event]);\n });\n },\n\n /**\n * @api private\n */\n _serviceMap: {}\n});\n\nAWS.util.mixin(AWS.Service, AWS.SequentialExecutor);\n\n/**\n * @api private\n */\nmodule.exports = AWS.Service;\n","var AWS = require('../core');\n\nAWS.util.update(AWS.APIGateway.prototype, {\n/**\n * Sets the Accept header to application/json.\n *\n * @api private\n */\n setAcceptHeader: function setAcceptHeader(req) {\n var httpRequest = req.httpRequest;\n if (!httpRequest.headers.Accept) {\n httpRequest.headers['Accept'] = 'application/json';\n }\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('build', this.setAcceptHeader);\n if (request.operation === 'getExport') {\n var params = request.params || {};\n if (params.exportType === 'swagger') {\n request.addListener('extractData', AWS.util.convertPayloadToString);\n }\n }\n }\n});\n\n","var AWS = require('../core');\n\n// pull in CloudFront signer\nrequire('../cloudfront/signer');\n\nAWS.util.update(AWS.CloudFront.prototype, {\n\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('extractData', AWS.util.hoistPayloadMember);\n }\n\n});\n","var AWS = require('../core');\nrequire('../dynamodb/document_client');\n\nAWS.util.update(AWS.DynamoDB.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n if (request.service.config.dynamoDbCrc32) {\n request.removeListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA);\n request.addListener('extractData', this.checkCrc32);\n request.addListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA);\n }\n },\n\n /**\n * @api private\n */\n checkCrc32: function checkCrc32(resp) {\n if (!resp.httpResponse.streaming && !resp.request.service.crc32IsValid(resp)) {\n resp.data = null;\n resp.error = AWS.util.error(new Error(), {\n code: 'CRC32CheckFailed',\n message: 'CRC32 integrity check failed',\n retryable: true\n });\n resp.request.haltHandlersOnError();\n throw (resp.error);\n }\n },\n\n /**\n * @api private\n */\n crc32IsValid: function crc32IsValid(resp) {\n var crc = resp.httpResponse.headers['x-amz-crc32'];\n if (!crc) return true; // no (valid) CRC32 header\n return parseInt(crc, 10) === AWS.util.crypto.crc32(resp.httpResponse.body);\n },\n\n /**\n * @api private\n */\n defaultRetryCount: 10,\n\n /**\n * @api private\n */\n retryDelays: function retryDelays(retryCount, err) {\n var retryDelayOptions = AWS.util.copy(this.config.retryDelayOptions);\n\n if (typeof retryDelayOptions.base !== 'number') {\n retryDelayOptions.base = 50; // default for dynamodb\n }\n var delay = AWS.util.calculateRetryDelay(retryCount, retryDelayOptions, err);\n return delay;\n }\n});\n","var AWS = require('../core');\n\nAWS.util.update(AWS.EC2.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.removeListener('extractError', AWS.EventListeners.Query.EXTRACT_ERROR);\n request.addListener('extractError', this.extractError);\n\n if (request.operation === 'copySnapshot') {\n request.onAsync('validate', this.buildCopySnapshotPresignedUrl);\n }\n },\n\n /**\n * @api private\n */\n buildCopySnapshotPresignedUrl: function buildCopySnapshotPresignedUrl(req, done) {\n if (req.params.PresignedUrl || req._subRequest) {\n return done();\n }\n\n req.params = AWS.util.copy(req.params);\n req.params.DestinationRegion = req.service.config.region;\n\n var config = AWS.util.copy(req.service.config);\n delete config.endpoint;\n config.region = req.params.SourceRegion;\n var svc = new req.service.constructor(config);\n var newReq = svc[req.operation](req.params);\n newReq._subRequest = true;\n newReq.presign(function(err, url) {\n if (err) done(err);\n else {\n req.params.PresignedUrl = url;\n done();\n }\n });\n },\n\n /**\n * @api private\n */\n extractError: function extractError(resp) {\n // EC2 nests the error code and message deeper than other AWS Query services.\n var httpResponse = resp.httpResponse;\n var data = new AWS.XML.Parser().parse(httpResponse.body.toString() || '');\n if (data.Errors) {\n resp.error = AWS.util.error(new Error(), {\n code: data.Errors.Error.Code,\n message: data.Errors.Error.Message\n });\n } else {\n resp.error = AWS.util.error(new Error(), {\n code: httpResponse.statusCode,\n message: null\n });\n }\n resp.error.requestId = data.RequestID || null;\n }\n});\n","var AWS = require('../core');\n\n/**\n * @api private\n */\nvar blobPayloadOutputOps = [\n 'deleteThingShadow',\n 'getThingShadow',\n 'updateThingShadow'\n];\n\n/**\n * Constructs a service interface object. Each API operation is exposed as a\n * function on service.\n *\n * ### Sending a Request Using IotData\n *\n * ```javascript\n * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'});\n * iotdata.getThingShadow(params, function (err, data) {\n * if (err) console.log(err, err.stack); // an error occurred\n * else console.log(data); // successful response\n * });\n * ```\n *\n * ### Locking the API Version\n *\n * In order to ensure that the IotData object uses this specific API,\n * you can construct the object by passing the `apiVersion` option to the\n * constructor:\n *\n * ```javascript\n * var iotdata = new AWS.IotData({\n * endpoint: 'my.host.tld',\n * apiVersion: '2015-05-28'\n * });\n * ```\n *\n * You can also set the API version globally in `AWS.config.apiVersions` using\n * the **iotdata** service identifier:\n *\n * ```javascript\n * AWS.config.apiVersions = {\n * iotdata: '2015-05-28',\n * // other service API versions\n * };\n *\n * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'});\n * ```\n *\n * @note You *must* provide an `endpoint` configuration parameter when\n * constructing this service. See {constructor} for more information.\n *\n * @!method constructor(options = {})\n * Constructs a service object. This object has one method for each\n * API operation.\n *\n * @example Constructing a IotData object\n * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'});\n * @note You *must* provide an `endpoint` when constructing this service.\n * @option (see AWS.Config.constructor)\n *\n * @service iotdata\n * @version 2015-05-28\n */\nAWS.util.update(AWS.IotData.prototype, {\n /**\n * @api private\n */\n validateService: function validateService() {\n if (!this.config.endpoint || this.config.endpoint.indexOf('{') >= 0) {\n var msg = 'AWS.IotData requires an explicit ' +\n '`endpoint\\' configuration option.';\n throw AWS.util.error(new Error(),\n {name: 'InvalidEndpoint', message: msg});\n }\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('validateResponse', this.validateResponseBody);\n if (blobPayloadOutputOps.indexOf(request.operation) > -1) {\n request.addListener('extractData', AWS.util.convertPayloadToString);\n }\n },\n\n /**\n * @api private\n */\n validateResponseBody: function validateResponseBody(resp) {\n var body = resp.httpResponse.body.toString() || '{}';\n var bodyCheck = body.trim();\n if (!bodyCheck || bodyCheck.charAt(0) !== '{') {\n resp.httpResponse.body = '';\n }\n }\n\n});\n","var AWS = require('../core');\n\nAWS.util.update(AWS.Lambda.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n if (request.operation === 'invoke') {\n request.addListener('extractData', AWS.util.convertPayloadToString);\n }\n }\n});\n\n","var AWS = require('../core');\n\nAWS.util.update(AWS.MachineLearning.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n if (request.operation === 'predict') {\n request.addListener('build', this.buildEndpoint);\n }\n },\n\n /**\n * Updates request endpoint from PredictEndpoint\n * @api private\n */\n buildEndpoint: function buildEndpoint(request) {\n var url = request.params.PredictEndpoint;\n if (url) {\n request.httpRequest.endpoint = new AWS.Endpoint(url);\n }\n }\n\n});\n","require('../polly/presigner');\n","var AWS = require('../core');\nvar rdsutil = require('./rdsutil');\nrequire('../rds/signer');\n /**\n * @api private\n */\n var crossRegionOperations = ['copyDBSnapshot', 'createDBInstanceReadReplica', 'createDBCluster', 'copyDBClusterSnapshot', 'startDBInstanceAutomatedBackupsReplication'];\n\n AWS.util.update(AWS.RDS.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n rdsutil.setupRequestListeners(this, request, crossRegionOperations);\n },\n });\n","var AWS = require('../core');\n\nvar rdsutil = {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(service, request, crossRegionOperations) {\n if (crossRegionOperations.indexOf(request.operation) !== -1 &&\n request.params.SourceRegion) {\n request.params = AWS.util.copy(request.params);\n if (request.params.PreSignedUrl ||\n request.params.SourceRegion === service.config.region) {\n delete request.params.SourceRegion;\n } else {\n var doesParamValidation = !!service.config.paramValidation;\n // remove the validate parameters listener so we can re-add it after we build the URL\n if (doesParamValidation) {\n request.removeListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n }\n request.onAsync('validate', rdsutil.buildCrossRegionPresignedUrl);\n if (doesParamValidation) {\n request.addListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n }\n }\n }\n },\n\n /**\n * @api private\n */\n buildCrossRegionPresignedUrl: function buildCrossRegionPresignedUrl(req, done) {\n var config = AWS.util.copy(req.service.config);\n config.region = req.params.SourceRegion;\n delete req.params.SourceRegion;\n delete config.endpoint;\n // relevant params for the operation will already be in req.params\n delete config.params;\n config.signatureVersion = 'v4';\n var destinationRegion = req.service.config.region;\n\n var svc = new req.service.constructor(config);\n var newReq = svc[req.operation](AWS.util.copy(req.params));\n newReq.on('build', function addDestinationRegionParam(request) {\n var httpRequest = request.httpRequest;\n httpRequest.params.DestinationRegion = destinationRegion;\n httpRequest.body = AWS.util.queryParamsToString(httpRequest.params);\n });\n newReq.presign(function(err, url) {\n if (err) done(err);\n else {\n req.params.PreSignedUrl = url;\n done();\n }\n });\n }\n};\n\n/**\n * @api private\n */\nmodule.exports = rdsutil;\n","var AWS = require('../core');\n\nAWS.util.update(AWS.Route53.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.on('build', this.sanitizeUrl);\n },\n\n /**\n * @api private\n */\n sanitizeUrl: function sanitizeUrl(request) {\n var path = request.httpRequest.path;\n request.httpRequest.path = path.replace(/\\/%2F\\w+%2F/, '/');\n },\n\n /**\n * @return [Boolean] whether the error can be retried\n * @api private\n */\n retryableError: function retryableError(error) {\n if (error.code === 'PriorRequestNotComplete' &&\n error.statusCode === 400) {\n return true;\n } else {\n var _super = AWS.Service.prototype.retryableError;\n return _super.call(this, error);\n }\n }\n});\n","var AWS = require('../core');\nvar v4Credentials = require('../signers/v4_credentials');\nvar resolveRegionalEndpointsFlag = require('../config_regional_endpoint');\nvar s3util = require('./s3util');\nvar regionUtil = require('../region_config');\n\n// Pull in managed upload extension\nrequire('../s3/managed_upload');\n\n/**\n * @api private\n */\nvar operationsWith200StatusCodeError = {\n 'completeMultipartUpload': true,\n 'copyObject': true,\n 'uploadPartCopy': true\n};\n\n/**\n * @api private\n */\n var regionRedirectErrorCodes = [\n 'AuthorizationHeaderMalformed', // non-head operations on virtual-hosted global bucket endpoints\n 'BadRequest', // head operations on virtual-hosted global bucket endpoints\n 'PermanentRedirect', // non-head operations on path-style or regional endpoints\n 301 // head operations on path-style or regional endpoints\n ];\n\nvar OBJECT_LAMBDA_SERVICE = 's3-object-lambda';\n\nAWS.util.update(AWS.S3.prototype, {\n /**\n * @api private\n */\n getSignatureVersion: function getSignatureVersion(request) {\n var defaultApiVersion = this.api.signatureVersion;\n var userDefinedVersion = this._originalConfig ? this._originalConfig.signatureVersion : null;\n var regionDefinedVersion = this.config.signatureVersion;\n var isPresigned = request ? request.isPresigned() : false;\n /*\n 1) User defined version specified:\n a) always return user defined version\n 2) No user defined version specified:\n a) If not using presigned urls, default to V4\n b) If using presigned urls, default to lowest version the region supports\n */\n if (userDefinedVersion) {\n userDefinedVersion = userDefinedVersion === 'v2' ? 's3' : userDefinedVersion;\n return userDefinedVersion;\n }\n if (isPresigned !== true) {\n defaultApiVersion = 'v4';\n } else if (regionDefinedVersion) {\n defaultApiVersion = regionDefinedVersion;\n }\n return defaultApiVersion;\n },\n\n /**\n * @api private\n */\n getSigningName: function getSigningName(req) {\n if (req && req.operation === 'writeGetObjectResponse') {\n return OBJECT_LAMBDA_SERVICE;\n }\n\n var _super = AWS.Service.prototype.getSigningName;\n return (req && req._parsedArn && req._parsedArn.service)\n ? req._parsedArn.service\n : _super.call(this);\n },\n\n /**\n * @api private\n */\n getSignerClass: function getSignerClass(request) {\n var signatureVersion = this.getSignatureVersion(request);\n return AWS.Signers.RequestSigner.getVersion(signatureVersion);\n },\n\n /**\n * @api private\n */\n validateService: function validateService() {\n var msg;\n var messages = [];\n\n // default to us-east-1 when no region is provided\n if (!this.config.region) this.config.region = 'us-east-1';\n\n if (!this.config.endpoint && this.config.s3BucketEndpoint) {\n messages.push('An endpoint must be provided when configuring ' +\n '`s3BucketEndpoint` to true.');\n }\n if (messages.length === 1) {\n msg = messages[0];\n } else if (messages.length > 1) {\n msg = 'Multiple configuration errors:\\n' + messages.join('\\n');\n }\n if (msg) {\n throw AWS.util.error(new Error(),\n {name: 'InvalidEndpoint', message: msg});\n }\n },\n\n /**\n * @api private\n */\n shouldDisableBodySigning: function shouldDisableBodySigning(request) {\n var signerClass = this.getSignerClass();\n if (this.config.s3DisableBodySigning === true && signerClass === AWS.Signers.V4\n && request.httpRequest.endpoint.protocol === 'https:') {\n return true;\n }\n return false;\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('validateResponse', this.setExpiresString);\n var prependListener = true;\n request.addListener('validate', this.validateScheme);\n request.addListener('validate', this.validateBucketName, prependListener);\n request.addListener('validate', this.optInUsEast1RegionalEndpoint, prependListener);\n\n request.removeListener('validate',\n AWS.EventListeners.Core.VALIDATE_REGION);\n request.addListener('build', this.addContentType);\n request.addListener('build', this.computeContentMd5);\n request.addListener('build', this.computeSseCustomerKeyMd5);\n request.addListener('build', this.populateURI);\n request.addListener('afterBuild', this.addExpect100Continue);\n request.addListener('extractError', this.extractError);\n request.addListener('extractData', AWS.util.hoistPayloadMember);\n request.addListener('extractData', this.extractData);\n request.addListener('extractData', this.extractErrorFrom200Response);\n request.addListener('beforePresign', this.prepareSignedUrl);\n if (this.shouldDisableBodySigning(request)) {\n request.removeListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256);\n request.addListener('afterBuild', this.disableBodySigning);\n }\n //deal with ARNs supplied to Bucket\n if (request.operation !== 'createBucket' && s3util.isArnInParam(request, 'Bucket')) {\n // avoid duplicate parsing in the future\n request._parsedArn = AWS.util.ARN.parse(request.params.Bucket);\n\n request.removeListener('validate', this.validateBucketName);\n request.removeListener('build', this.populateURI);\n if (request._parsedArn.service === 's3') {\n request.addListener('validate', s3util.validateS3AccessPointArn);\n request.addListener('validate', this.validateArnResourceType);\n request.addListener('validate', this.validateArnRegion);\n } else if (request._parsedArn.service === 's3-outposts') {\n request.addListener('validate', s3util.validateOutpostsAccessPointArn);\n request.addListener('validate', s3util.validateOutpostsArn);\n request.addListener('validate', s3util.validateArnRegion);\n }\n request.addListener('validate', s3util.validateArnAccount);\n request.addListener('validate', s3util.validateArnService);\n request.addListener('build', this.populateUriFromAccessPointArn);\n request.addListener('build', s3util.validatePopulateUriFromArn);\n return;\n }\n //listeners regarding region inference\n request.addListener('validate', this.validateBucketEndpoint);\n request.addListener('validate', this.correctBucketRegionFromCache);\n request.onAsync('extractError', this.requestBucketRegion);\n if (AWS.util.isBrowser()) {\n request.onAsync('retry', this.reqRegionForNetworkingError);\n }\n },\n\n /**\n * @api private\n */\n validateScheme: function(req) {\n var params = req.params,\n scheme = req.httpRequest.endpoint.protocol,\n sensitive = params.SSECustomerKey || params.CopySourceSSECustomerKey;\n if (sensitive && scheme !== 'https:') {\n var msg = 'Cannot send SSE keys over HTTP. Set \\'sslEnabled\\'' +\n 'to \\'true\\' in your configuration';\n throw AWS.util.error(new Error(),\n { code: 'ConfigError', message: msg });\n }\n },\n\n /**\n * @api private\n */\n validateBucketEndpoint: function(req) {\n if (!req.params.Bucket && req.service.config.s3BucketEndpoint) {\n var msg = 'Cannot send requests to root API with `s3BucketEndpoint` set.';\n throw AWS.util.error(new Error(),\n { code: 'ConfigError', message: msg });\n }\n },\n\n /**\n * @api private\n */\n validateArnRegion: function validateArnRegion(req) {\n s3util.validateArnRegion(req, { allowFipsEndpoint: true });\n },\n\n /**\n * Validate resource-type supplied in S3 ARN\n */\n validateArnResourceType: function validateArnResourceType(req) {\n var resource = req._parsedArn.resource;\n\n if (\n resource.indexOf('accesspoint:') !== 0 &&\n resource.indexOf('accesspoint/') !== 0\n ) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'ARN resource should begin with \\'accesspoint/\\''\n });\n }\n },\n\n /**\n * @api private\n */\n validateBucketName: function validateBucketName(req) {\n var service = req.service;\n var signatureVersion = service.getSignatureVersion(req);\n var bucket = req.params && req.params.Bucket;\n var key = req.params && req.params.Key;\n var slashIndex = bucket && bucket.indexOf('/');\n if (bucket && slashIndex >= 0) {\n if (typeof key === 'string' && slashIndex > 0) {\n req.params = AWS.util.copy(req.params);\n // Need to include trailing slash to match sigv2 behavior\n var prefix = bucket.substr(slashIndex + 1) || '';\n req.params.Key = prefix + '/' + key;\n req.params.Bucket = bucket.substr(0, slashIndex);\n } else if (signatureVersion === 'v4') {\n var msg = 'Bucket names cannot contain forward slashes. Bucket: ' + bucket;\n throw AWS.util.error(new Error(),\n { code: 'InvalidBucket', message: msg });\n }\n }\n },\n\n /**\n * @api private\n */\n isValidAccelerateOperation: function isValidAccelerateOperation(operation) {\n var invalidOperations = [\n 'createBucket',\n 'deleteBucket',\n 'listBuckets'\n ];\n return invalidOperations.indexOf(operation) === -1;\n },\n\n /**\n * When us-east-1 region endpoint configuration is set, in stead of sending request to\n * global endpoint(e.g. 's3.amazonaws.com'), we will send request to\n * 's3.us-east-1.amazonaws.com'.\n * @api private\n */\n optInUsEast1RegionalEndpoint: function optInUsEast1RegionalEndpoint(req) {\n var service = req.service;\n var config = service.config;\n config.s3UsEast1RegionalEndpoint = resolveRegionalEndpointsFlag(service._originalConfig, {\n env: 'AWS_S3_US_EAST_1_REGIONAL_ENDPOINT',\n sharedConfig: 's3_us_east_1_regional_endpoint',\n clientConfig: 's3UsEast1RegionalEndpoint'\n });\n if (\n !(service._originalConfig || {}).endpoint &&\n req.httpRequest.region === 'us-east-1' &&\n config.s3UsEast1RegionalEndpoint === 'regional' &&\n req.httpRequest.endpoint.hostname.indexOf('s3.amazonaws.com') >= 0\n ) {\n var insertPoint = config.endpoint.indexOf('.amazonaws.com');\n var regionalEndpoint = config.endpoint.substring(0, insertPoint) +\n '.us-east-1' + config.endpoint.substring(insertPoint);\n req.httpRequest.updateEndpoint(regionalEndpoint);\n }\n },\n\n /**\n * S3 prefers dns-compatible bucket names to be moved from the uri path\n * to the hostname as a sub-domain. This is not possible, even for dns-compat\n * buckets when using SSL and the bucket name contains a dot ('.'). The\n * ssl wildcard certificate is only 1-level deep.\n *\n * @api private\n */\n populateURI: function populateURI(req) {\n var httpRequest = req.httpRequest;\n var b = req.params.Bucket;\n var service = req.service;\n var endpoint = httpRequest.endpoint;\n if (b) {\n if (!service.pathStyleBucketName(b)) {\n if (service.config.useAccelerateEndpoint && service.isValidAccelerateOperation(req.operation)) {\n if (service.config.useDualstackEndpoint) {\n endpoint.hostname = b + '.s3-accelerate.dualstack.amazonaws.com';\n } else {\n endpoint.hostname = b + '.s3-accelerate.amazonaws.com';\n }\n } else if (!service.config.s3BucketEndpoint) {\n endpoint.hostname =\n b + '.' + endpoint.hostname;\n }\n\n var port = endpoint.port;\n if (port !== 80 && port !== 443) {\n endpoint.host = endpoint.hostname + ':' +\n endpoint.port;\n } else {\n endpoint.host = endpoint.hostname;\n }\n\n httpRequest.virtualHostedBucket = b; // needed for signing the request\n service.removeVirtualHostedBucketFromPath(req);\n }\n }\n },\n\n /**\n * Takes the bucket name out of the path if bucket is virtual-hosted\n *\n * @api private\n */\n removeVirtualHostedBucketFromPath: function removeVirtualHostedBucketFromPath(req) {\n var httpRequest = req.httpRequest;\n var bucket = httpRequest.virtualHostedBucket;\n if (bucket && httpRequest.path) {\n if (req.params && req.params.Key) {\n var encodedS3Key = '/' + AWS.util.uriEscapePath(req.params.Key);\n if (httpRequest.path.indexOf(encodedS3Key) === 0 && (httpRequest.path.length === encodedS3Key.length || httpRequest.path[encodedS3Key.length] === '?')) {\n //path only contains key or path contains only key and querystring\n return;\n }\n }\n httpRequest.path = httpRequest.path.replace(new RegExp('/' + bucket), '');\n if (httpRequest.path[0] !== '/') {\n httpRequest.path = '/' + httpRequest.path;\n }\n }\n },\n\n /**\n * When user supply an access point ARN in the Bucket parameter, we need to\n * populate the URI according to the ARN.\n */\n populateUriFromAccessPointArn: function populateUriFromAccessPointArn(req) {\n var accessPointArn = req._parsedArn;\n\n var isOutpostArn = accessPointArn.service === 's3-outposts';\n var isObjectLambdaArn = accessPointArn.service === 's3-object-lambda';\n\n var outpostsSuffix = isOutpostArn ? '.' + accessPointArn.outpostId: '';\n var serviceName = isOutpostArn ? 's3-outposts': 's3-accesspoint';\n var fipsSuffix = !isOutpostArn && req.service.config.useFipsEndpoint ? '-fips': '';\n var dualStackSuffix = !isOutpostArn &&\n req.service.config.useDualstackEndpoint ? '.dualstack' : '';\n\n var endpoint = req.httpRequest.endpoint;\n var dnsSuffix = regionUtil.getEndpointSuffix(accessPointArn.region);\n var useArnRegion = req.service.config.s3UseArnRegion;\n\n endpoint.hostname = [\n accessPointArn.accessPoint + '-' + accessPointArn.accountId + outpostsSuffix,\n serviceName + fipsSuffix + dualStackSuffix,\n useArnRegion ? accessPointArn.region : req.service.config.region,\n dnsSuffix\n ].join('.');\n\n if (isObjectLambdaArn) {\n // should be in the format: \"accesspoint/${accesspointName}\"\n var serviceName = 's3-object-lambda';\n var accesspointName = accessPointArn.resource.split('/')[1];\n var fipsSuffix = req.service.config.useFipsEndpoint ? '-fips': '';\n endpoint.hostname = [\n accesspointName + '-' + accessPointArn.accountId,\n serviceName + fipsSuffix,\n useArnRegion ? accessPointArn.region : req.service.config.region,\n dnsSuffix\n ].join('.');\n }\n endpoint.host = endpoint.hostname;\n var encodedArn = AWS.util.uriEscape(req.params.Bucket);\n var path = req.httpRequest.path;\n //remove the Bucket value from path\n req.httpRequest.path = path.replace(new RegExp('/' + encodedArn), '');\n if (req.httpRequest.path[0] !== '/') {\n req.httpRequest.path = '/' + req.httpRequest.path;\n }\n req.httpRequest.region = accessPointArn.region; //region used to sign\n },\n\n /**\n * Adds Expect: 100-continue header if payload is greater-or-equal 1MB\n * @api private\n */\n addExpect100Continue: function addExpect100Continue(req) {\n var len = req.httpRequest.headers['Content-Length'];\n if (AWS.util.isNode() && (len >= 1024 * 1024 || req.params.Body instanceof AWS.util.stream.Stream)) {\n req.httpRequest.headers['Expect'] = '100-continue';\n }\n },\n\n /**\n * Adds a default content type if none is supplied.\n *\n * @api private\n */\n addContentType: function addContentType(req) {\n var httpRequest = req.httpRequest;\n if (httpRequest.method === 'GET' || httpRequest.method === 'HEAD') {\n // Content-Type is not set in GET/HEAD requests\n delete httpRequest.headers['Content-Type'];\n return;\n }\n\n if (!httpRequest.headers['Content-Type']) { // always have a Content-Type\n httpRequest.headers['Content-Type'] = 'application/octet-stream';\n }\n\n var contentType = httpRequest.headers['Content-Type'];\n if (AWS.util.isBrowser()) {\n if (typeof httpRequest.body === 'string' && !contentType.match(/;\\s*charset=/)) {\n var charset = '; charset=UTF-8';\n httpRequest.headers['Content-Type'] += charset;\n } else {\n var replaceFn = function(_, prefix, charsetName) {\n return prefix + charsetName.toUpperCase();\n };\n\n httpRequest.headers['Content-Type'] =\n contentType.replace(/(;\\s*charset=)(.+)$/, replaceFn);\n }\n }\n },\n\n /**\n * Checks whether checksums should be computed for the request if it's not\n * already set by {AWS.EventListeners.Core.COMPUTE_CHECKSUM}. It depends on\n * whether {AWS.Config.computeChecksums} is set.\n *\n * @param req [AWS.Request] the request to check against\n * @return [Boolean] whether to compute checksums for a request.\n * @api private\n */\n willComputeChecksums: function willComputeChecksums(req) {\n var rules = req.service.api.operations[req.operation].input.members;\n var body = req.httpRequest.body;\n var needsContentMD5 = req.service.config.computeChecksums &&\n rules.ContentMD5 &&\n !req.params.ContentMD5 &&\n body &&\n (AWS.util.Buffer.isBuffer(req.httpRequest.body) || typeof req.httpRequest.body === 'string');\n\n // Sha256 signing disabled, and not a presigned url\n if (needsContentMD5 && req.service.shouldDisableBodySigning(req) && !req.isPresigned()) {\n return true;\n }\n\n // SigV2 and presign, for backwards compatibility purpose.\n if (needsContentMD5 && this.getSignatureVersion(req) === 's3' && req.isPresigned()) {\n return true;\n }\n\n return false;\n },\n\n /**\n * A listener that computes the Content-MD5 and sets it in the header.\n * This listener is to support S3-specific features like\n * s3DisableBodySigning and SigV2 presign. Content MD5 logic for SigV4 is\n * handled in AWS.EventListeners.Core.COMPUTE_CHECKSUM\n *\n * @api private\n */\n computeContentMd5: function computeContentMd5(req) {\n if (req.service.willComputeChecksums(req)) {\n var md5 = AWS.util.crypto.md5(req.httpRequest.body, 'base64');\n req.httpRequest.headers['Content-MD5'] = md5;\n }\n },\n\n /**\n * @api private\n */\n computeSseCustomerKeyMd5: function computeSseCustomerKeyMd5(req) {\n var keys = {\n SSECustomerKey: 'x-amz-server-side-encryption-customer-key-MD5',\n CopySourceSSECustomerKey: 'x-amz-copy-source-server-side-encryption-customer-key-MD5'\n };\n AWS.util.each(keys, function(key, header) {\n if (req.params[key]) {\n var value = AWS.util.crypto.md5(req.params[key], 'base64');\n req.httpRequest.headers[header] = value;\n }\n });\n },\n\n /**\n * Returns true if the bucket name should be left in the URI path for\n * a request to S3. This function takes into account the current\n * endpoint protocol (e.g. http or https).\n *\n * @api private\n */\n pathStyleBucketName: function pathStyleBucketName(bucketName) {\n // user can force path style requests via the configuration\n if (this.config.s3ForcePathStyle) return true;\n if (this.config.s3BucketEndpoint) return false;\n\n if (s3util.dnsCompatibleBucketName(bucketName)) {\n return (this.config.sslEnabled && bucketName.match(/\\./)) ? true : false;\n } else {\n return true; // not dns compatible names must always use path style\n }\n },\n\n /**\n * For COPY operations, some can be error even with status code 200.\n * SDK treats the response as exception when response body indicates\n * an exception or body is empty.\n *\n * @api private\n */\n extractErrorFrom200Response: function extractErrorFrom200Response(resp) {\n var service = this.service ? this.service : this;\n if (!service.is200Error(resp) && !operationsWith200StatusCodeError[resp.request.operation]) {\n return;\n }\n var httpResponse = resp.httpResponse;\n var bodyString = httpResponse.body && httpResponse.body.toString() || '';\n if (bodyString && bodyString.indexOf('') === bodyString.length - 8) {\n // Response body with '...' indicates an exception.\n // Get S3 client object. In ManagedUpload, this.service refers to\n // S3 client object.\n resp.data = null;\n service.extractError(resp);\n resp.error.is200Error = true;\n throw resp.error;\n } else if (!httpResponse.body || !bodyString.match(/<[\\w_]/)) {\n // When body is empty or incomplete, S3 might stop the request on detecting client\n // side aborting the request.\n resp.data = null;\n throw AWS.util.error(new Error(), {\n code: 'InternalError',\n message: 'S3 aborted request'\n });\n }\n },\n\n /**\n * @api private\n * @param resp - to evaluate.\n * @return true if the response has status code 200 but is an error.\n */\n is200Error: function is200Error(resp) {\n var code = resp && resp.httpResponse && resp.httpResponse.statusCode;\n if (code !== 200) {\n return false;\n }\n try {\n var req = resp.request;\n var outputMembers = req.service.api.operations[req.operation].output.members;\n var keys = Object.keys(outputMembers);\n for (var i = 0; i < keys.length; ++i) {\n var member = outputMembers[keys[i]];\n if (member.type === 'binary' && member.isStreaming) {\n return false;\n }\n }\n\n var body = resp.httpResponse.body;\n if (body && body.byteLength !== undefined) {\n if (body.byteLength < 15 || body.byteLength > 3000) {\n // body is too short or long to be an error message.\n return false;\n }\n }\n if (!body) {\n return false;\n }\n var bodyString = body.toString();\n if (bodyString.indexOf('') === bodyString.length - 8) {\n return true;\n }\n } catch (e) {\n return false;\n }\n return false;\n },\n\n /**\n * @return [Boolean] whether the error can be retried\n * @api private\n */\n retryableError: function retryableError(error, request) {\n if (error.is200Error ||\n (operationsWith200StatusCodeError[request.operation] && error.statusCode === 200)) {\n return true;\n } else if (request._requestRegionForBucket &&\n request.service.bucketRegionCache[request._requestRegionForBucket]) {\n return false;\n } else if (error && error.code === 'RequestTimeout') {\n return true;\n } else if (error &&\n regionRedirectErrorCodes.indexOf(error.code) != -1 &&\n error.region && error.region != request.httpRequest.region) {\n request.httpRequest.region = error.region;\n if (error.statusCode === 301) {\n request.service.updateReqBucketRegion(request);\n }\n return true;\n } else {\n var _super = AWS.Service.prototype.retryableError;\n return _super.call(this, error, request);\n }\n },\n\n /**\n * Updates httpRequest with region. If region is not provided, then\n * the httpRequest will be updated based on httpRequest.region\n *\n * @api private\n */\n updateReqBucketRegion: function updateReqBucketRegion(request, region) {\n var httpRequest = request.httpRequest;\n if (typeof region === 'string' && region.length) {\n httpRequest.region = region;\n }\n if (!httpRequest.endpoint.host.match(/s3(?!-accelerate).*\\.amazonaws\\.com$/)) {\n return;\n }\n var service = request.service;\n var s3Config = service.config;\n var s3BucketEndpoint = s3Config.s3BucketEndpoint;\n if (s3BucketEndpoint) {\n delete s3Config.s3BucketEndpoint;\n }\n var newConfig = AWS.util.copy(s3Config);\n delete newConfig.endpoint;\n newConfig.region = httpRequest.region;\n\n httpRequest.endpoint = (new AWS.S3(newConfig)).endpoint;\n service.populateURI(request);\n s3Config.s3BucketEndpoint = s3BucketEndpoint;\n httpRequest.headers.Host = httpRequest.endpoint.host;\n\n if (request._asm.currentState === 'validate') {\n request.removeListener('build', service.populateURI);\n request.addListener('build', service.removeVirtualHostedBucketFromPath);\n }\n },\n\n /**\n * Provides a specialized parser for getBucketLocation -- all other\n * operations are parsed by the super class.\n *\n * @api private\n */\n extractData: function extractData(resp) {\n var req = resp.request;\n if (req.operation === 'getBucketLocation') {\n var match = resp.httpResponse.body.toString().match(/>(.+)<\\/Location/);\n delete resp.data['_'];\n if (match) {\n resp.data.LocationConstraint = match[1];\n } else {\n resp.data.LocationConstraint = '';\n }\n }\n var bucket = req.params.Bucket || null;\n if (req.operation === 'deleteBucket' && typeof bucket === 'string' && !resp.error) {\n req.service.clearBucketRegionCache(bucket);\n } else {\n var headers = resp.httpResponse.headers || {};\n var region = headers['x-amz-bucket-region'] || null;\n if (!region && req.operation === 'createBucket' && !resp.error) {\n var createBucketConfiguration = req.params.CreateBucketConfiguration;\n if (!createBucketConfiguration) {\n region = 'us-east-1';\n } else if (createBucketConfiguration.LocationConstraint === 'EU') {\n region = 'eu-west-1';\n } else {\n region = createBucketConfiguration.LocationConstraint;\n }\n }\n if (region) {\n if (bucket && region !== req.service.bucketRegionCache[bucket]) {\n req.service.bucketRegionCache[bucket] = region;\n }\n }\n }\n req.service.extractRequestIds(resp);\n },\n\n /**\n * Extracts an error object from the http response.\n *\n * @api private\n */\n extractError: function extractError(resp) {\n var codes = {\n 304: 'NotModified',\n 403: 'Forbidden',\n 400: 'BadRequest',\n 404: 'NotFound'\n };\n\n var req = resp.request;\n var code = resp.httpResponse.statusCode;\n var body = resp.httpResponse.body || '';\n\n var headers = resp.httpResponse.headers || {};\n var region = headers['x-amz-bucket-region'] || null;\n var bucket = req.params.Bucket || null;\n var bucketRegionCache = req.service.bucketRegionCache;\n if (region && bucket && region !== bucketRegionCache[bucket]) {\n bucketRegionCache[bucket] = region;\n }\n\n var cachedRegion;\n if (codes[code] && body.length === 0) {\n if (bucket && !region) {\n cachedRegion = bucketRegionCache[bucket] || null;\n if (cachedRegion !== req.httpRequest.region) {\n region = cachedRegion;\n }\n }\n resp.error = AWS.util.error(new Error(), {\n code: codes[code],\n message: null,\n region: region\n });\n } else {\n var data = new AWS.XML.Parser().parse(body.toString());\n\n if (data.Region && !region) {\n region = data.Region;\n if (bucket && region !== bucketRegionCache[bucket]) {\n bucketRegionCache[bucket] = region;\n }\n } else if (bucket && !region && !data.Region) {\n cachedRegion = bucketRegionCache[bucket] || null;\n if (cachedRegion !== req.httpRequest.region) {\n region = cachedRegion;\n }\n }\n\n resp.error = AWS.util.error(new Error(), {\n code: data.Code || code,\n message: data.Message || null,\n region: region\n });\n }\n req.service.extractRequestIds(resp);\n },\n\n /**\n * If region was not obtained synchronously, then send async request\n * to get bucket region for errors resulting from wrong region.\n *\n * @api private\n */\n requestBucketRegion: function requestBucketRegion(resp, done) {\n var error = resp.error;\n var req = resp.request;\n var bucket = req.params.Bucket || null;\n\n if (!error || !bucket || error.region || req.operation === 'listObjects' ||\n (AWS.util.isNode() && req.operation === 'headBucket') ||\n (error.statusCode === 400 && req.operation !== 'headObject') ||\n regionRedirectErrorCodes.indexOf(error.code) === -1) {\n return done();\n }\n var reqOperation = AWS.util.isNode() ? 'headBucket' : 'listObjects';\n var reqParams = {Bucket: bucket};\n if (reqOperation === 'listObjects') reqParams.MaxKeys = 0;\n var regionReq = req.service[reqOperation](reqParams);\n regionReq._requestRegionForBucket = bucket;\n regionReq.send(function() {\n var region = req.service.bucketRegionCache[bucket] || null;\n error.region = region;\n done();\n });\n },\n\n /**\n * For browser only. If NetworkingError received, will attempt to obtain\n * the bucket region.\n *\n * @api private\n */\n reqRegionForNetworkingError: function reqRegionForNetworkingError(resp, done) {\n if (!AWS.util.isBrowser()) {\n return done();\n }\n var error = resp.error;\n var request = resp.request;\n var bucket = request.params.Bucket;\n if (!error || error.code !== 'NetworkingError' || !bucket ||\n request.httpRequest.region === 'us-east-1') {\n return done();\n }\n var service = request.service;\n var bucketRegionCache = service.bucketRegionCache;\n var cachedRegion = bucketRegionCache[bucket] || null;\n\n if (cachedRegion && cachedRegion !== request.httpRequest.region) {\n service.updateReqBucketRegion(request, cachedRegion);\n done();\n } else if (!s3util.dnsCompatibleBucketName(bucket)) {\n service.updateReqBucketRegion(request, 'us-east-1');\n if (bucketRegionCache[bucket] !== 'us-east-1') {\n bucketRegionCache[bucket] = 'us-east-1';\n }\n done();\n } else if (request.httpRequest.virtualHostedBucket) {\n var getRegionReq = service.listObjects({Bucket: bucket, MaxKeys: 0});\n service.updateReqBucketRegion(getRegionReq, 'us-east-1');\n getRegionReq._requestRegionForBucket = bucket;\n\n getRegionReq.send(function() {\n var region = service.bucketRegionCache[bucket] || null;\n if (region && region !== request.httpRequest.region) {\n service.updateReqBucketRegion(request, region);\n }\n done();\n });\n } else {\n // DNS-compatible path-style\n // (s3ForcePathStyle or bucket name with dot over https)\n // Cannot obtain region information for this case\n done();\n }\n },\n\n /**\n * Cache for bucket region.\n *\n * @api private\n */\n bucketRegionCache: {},\n\n /**\n * Clears bucket region cache.\n *\n * @api private\n */\n clearBucketRegionCache: function(buckets) {\n var bucketRegionCache = this.bucketRegionCache;\n if (!buckets) {\n buckets = Object.keys(bucketRegionCache);\n } else if (typeof buckets === 'string') {\n buckets = [buckets];\n }\n for (var i = 0; i < buckets.length; i++) {\n delete bucketRegionCache[buckets[i]];\n }\n return bucketRegionCache;\n },\n\n /**\n * Corrects request region if bucket's cached region is different\n *\n * @api private\n */\n correctBucketRegionFromCache: function correctBucketRegionFromCache(req) {\n var bucket = req.params.Bucket || null;\n if (bucket) {\n var service = req.service;\n var requestRegion = req.httpRequest.region;\n var cachedRegion = service.bucketRegionCache[bucket];\n if (cachedRegion && cachedRegion !== requestRegion) {\n service.updateReqBucketRegion(req, cachedRegion);\n }\n }\n },\n\n /**\n * Extracts S3 specific request ids from the http response.\n *\n * @api private\n */\n extractRequestIds: function extractRequestIds(resp) {\n var extendedRequestId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-id-2'] : null;\n var cfId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-cf-id'] : null;\n resp.extendedRequestId = extendedRequestId;\n resp.cfId = cfId;\n\n if (resp.error) {\n resp.error.requestId = resp.requestId || null;\n resp.error.extendedRequestId = extendedRequestId;\n resp.error.cfId = cfId;\n }\n },\n\n /**\n * Get a pre-signed URL for a given operation name.\n *\n * @note You must ensure that you have static or previously resolved\n * credentials if you call this method synchronously (with no callback),\n * otherwise it may not properly sign the request. If you cannot guarantee\n * this (you are using an asynchronous credential provider, i.e., EC2\n * IAM roles), you should always call this method with an asynchronous\n * callback.\n * @note Not all operation parameters are supported when using pre-signed\n * URLs. Certain parameters, such as `SSECustomerKey`, `ACL`, `Expires`,\n * `ContentLength`, or `Tagging` must be provided as headers when sending a\n * request. If you are using pre-signed URLs to upload from a browser and\n * need to use these fields, see {createPresignedPost}.\n * @note The default signer allows altering the request by adding corresponding\n * headers to set some parameters (e.g. Range) and these added parameters\n * won't be signed. You must use signatureVersion v4 to to include these\n * parameters in the signed portion of the URL and enforce exact matching\n * between headers and signed params in the URL.\n * @note This operation cannot be used with a promise. See note above regarding\n * asynchronous credentials and use with a callback.\n * @param operation [String] the name of the operation to call\n * @param params [map] parameters to pass to the operation. See the given\n * operation for the expected operation parameters. In addition, you can\n * also pass the \"Expires\" parameter to inform S3 how long the URL should\n * work for.\n * @option params Expires [Integer] (900) the number of seconds to expire\n * the pre-signed URL operation in. Defaults to 15 minutes.\n * @param callback [Function] if a callback is provided, this function will\n * pass the URL as the second parameter (after the error parameter) to\n * the callback function.\n * @return [String] if called synchronously (with no callback), returns the\n * signed URL.\n * @return [null] nothing is returned if a callback is provided.\n * @example Pre-signing a getObject operation (synchronously)\n * var params = {Bucket: 'bucket', Key: 'key'};\n * var url = s3.getSignedUrl('getObject', params);\n * console.log('The URL is', url);\n * @example Pre-signing a putObject (asynchronously)\n * var params = {Bucket: 'bucket', Key: 'key'};\n * s3.getSignedUrl('putObject', params, function (err, url) {\n * console.log('The URL is', url);\n * });\n * @example Pre-signing a putObject operation with a specific payload\n * var params = {Bucket: 'bucket', Key: 'key', Body: 'body'};\n * var url = s3.getSignedUrl('putObject', params);\n * console.log('The URL is', url);\n * @example Passing in a 1-minute expiry time for a pre-signed URL\n * var params = {Bucket: 'bucket', Key: 'key', Expires: 60};\n * var url = s3.getSignedUrl('getObject', params);\n * console.log('The URL is', url); // expires in 60 seconds\n */\n getSignedUrl: function getSignedUrl(operation, params, callback) {\n params = AWS.util.copy(params || {});\n var expires = params.Expires || 900;\n\n if (typeof expires !== 'number') {\n throw AWS.util.error(new Error(),\n { code: 'InvalidParameterException', message: 'The expiration must be a number, received ' + typeof expires });\n }\n\n delete params.Expires; // we can't validate this\n var request = this.makeRequest(operation, params);\n\n if (callback) {\n AWS.util.defer(function() {\n request.presign(expires, callback);\n });\n } else {\n return request.presign(expires, callback);\n }\n },\n\n /**\n * @!method getSignedUrlPromise()\n * Returns a 'thenable' promise that will be resolved with a pre-signed URL\n * for a given operation name.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @note Not all operation parameters are supported when using pre-signed\n * URLs. Certain parameters, such as `SSECustomerKey`, `ACL`, `Expires`,\n * `ContentLength`, or `Tagging` must be provided as headers when sending a\n * request. If you are using pre-signed URLs to upload from a browser and\n * need to use these fields, see {createPresignedPost}.\n * @param operation [String] the name of the operation to call\n * @param params [map] parameters to pass to the operation. See the given\n * operation for the expected operation parameters. In addition, you can\n * also pass the \"Expires\" parameter to inform S3 how long the URL should\n * work for.\n * @option params Expires [Integer] (900) the number of seconds to expire\n * the pre-signed URL operation in. Defaults to 15 minutes.\n * @callback fulfilledCallback function(url)\n * Called if the promise is fulfilled.\n * @param url [String] the signed url\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] if an error occurred, this value will be filled\n * @return [Promise] A promise that represents the state of the `refresh` call.\n * @example Pre-signing a getObject operation\n * var params = {Bucket: 'bucket', Key: 'key'};\n * var promise = s3.getSignedUrlPromise('getObject', params);\n * promise.then(function(url) {\n * console.log('The URL is', url);\n * }, function(err) { ... });\n * @example Pre-signing a putObject operation with a specific payload\n * var params = {Bucket: 'bucket', Key: 'key', Body: 'body'};\n * var promise = s3.getSignedUrlPromise('putObject', params);\n * promise.then(function(url) {\n * console.log('The URL is', url);\n * }, function(err) { ... });\n * @example Passing in a 1-minute expiry time for a pre-signed URL\n * var params = {Bucket: 'bucket', Key: 'key', Expires: 60};\n * var promise = s3.getSignedUrlPromise('getObject', params);\n * promise.then(function(url) {\n * console.log('The URL is', url);\n * }, function(err) { ... });\n */\n\n /**\n * Get a pre-signed POST policy to support uploading to S3 directly from an\n * HTML form.\n *\n * @param params [map]\n * @option params Bucket [String] The bucket to which the post should be\n * uploaded\n * @option params Expires [Integer] (3600) The number of seconds for which\n * the presigned policy should be valid.\n * @option params Conditions [Array] An array of conditions that must be met\n * for the presigned policy to allow the\n * upload. This can include required tags,\n * the accepted range for content lengths,\n * etc.\n * @see http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html\n * @option params Fields [map] Fields to include in the form. All\n * values passed in as fields will be\n * signed as exact match conditions.\n * @param callback [Function]\n *\n * @note All fields passed in when creating presigned post data will be signed\n * as exact match conditions. Any fields that will be interpolated by S3\n * must be added to the fields hash after signing, and an appropriate\n * condition for such fields must be explicitly added to the Conditions\n * array passed to this function before signing.\n *\n * @example Presiging post data with a known key\n * var params = {\n * Bucket: 'bucket',\n * Fields: {\n * key: 'key'\n * }\n * };\n * s3.createPresignedPost(params, function(err, data) {\n * if (err) {\n * console.error('Presigning post data encountered an error', err);\n * } else {\n * console.log('The post data is', data);\n * }\n * });\n *\n * @example Presigning post data with an interpolated key\n * var params = {\n * Bucket: 'bucket',\n * Conditions: [\n * ['starts-with', '$key', 'path/to/uploads/']\n * ]\n * };\n * s3.createPresignedPost(params, function(err, data) {\n * if (err) {\n * console.error('Presigning post data encountered an error', err);\n * } else {\n * data.Fields.key = 'path/to/uploads/${filename}';\n * console.log('The post data is', data);\n * }\n * });\n *\n * @note You must ensure that you have static or previously resolved\n * credentials if you call this method synchronously (with no callback),\n * otherwise it may not properly sign the request. If you cannot guarantee\n * this (you are using an asynchronous credential provider, i.e., EC2\n * IAM roles), you should always call this method with an asynchronous\n * callback.\n *\n * @return [map] If called synchronously (with no callback), returns a hash\n * with the url to set as the form action and a hash of fields\n * to include in the form.\n * @return [null] Nothing is returned if a callback is provided.\n *\n * @callback callback function (err, data)\n * @param err [Error] the error object returned from the policy signer\n * @param data [map] The data necessary to construct an HTML form\n * @param data.url [String] The URL to use as the action of the form\n * @param data.fields [map] A hash of fields that must be included in the\n * form for the upload to succeed. This hash will\n * include the signed POST policy, your access key\n * ID and security token (if present), etc. These\n * may be safely included as input elements of type\n * 'hidden.'\n */\n createPresignedPost: function createPresignedPost(params, callback) {\n if (typeof params === 'function' && callback === undefined) {\n callback = params;\n params = null;\n }\n\n params = AWS.util.copy(params || {});\n var boundParams = this.config.params || {};\n var bucket = params.Bucket || boundParams.Bucket,\n self = this,\n config = this.config,\n endpoint = AWS.util.copy(this.endpoint);\n if (!config.s3BucketEndpoint) {\n endpoint.pathname = '/' + bucket;\n }\n\n function finalizePost() {\n return {\n url: AWS.util.urlFormat(endpoint),\n fields: self.preparePostFields(\n config.credentials,\n config.region,\n bucket,\n params.Fields,\n params.Conditions,\n params.Expires\n )\n };\n }\n\n if (callback) {\n config.getCredentials(function (err) {\n if (err) {\n callback(err);\n } else {\n try {\n callback(null, finalizePost());\n } catch (err) {\n callback(err);\n }\n }\n });\n } else {\n return finalizePost();\n }\n },\n\n /**\n * @api private\n */\n preparePostFields: function preparePostFields(\n credentials,\n region,\n bucket,\n fields,\n conditions,\n expiresInSeconds\n ) {\n var now = this.getSkewCorrectedDate();\n if (!credentials || !region || !bucket) {\n throw new Error('Unable to create a POST object policy without a bucket,'\n + ' region, and credentials');\n }\n fields = AWS.util.copy(fields || {});\n conditions = (conditions || []).slice(0);\n expiresInSeconds = expiresInSeconds || 3600;\n\n var signingDate = AWS.util.date.iso8601(now).replace(/[:\\-]|\\.\\d{3}/g, '');\n var shortDate = signingDate.substr(0, 8);\n var scope = v4Credentials.createScope(shortDate, region, 's3');\n var credential = credentials.accessKeyId + '/' + scope;\n\n fields['bucket'] = bucket;\n fields['X-Amz-Algorithm'] = 'AWS4-HMAC-SHA256';\n fields['X-Amz-Credential'] = credential;\n fields['X-Amz-Date'] = signingDate;\n if (credentials.sessionToken) {\n fields['X-Amz-Security-Token'] = credentials.sessionToken;\n }\n for (var field in fields) {\n if (fields.hasOwnProperty(field)) {\n var condition = {};\n condition[field] = fields[field];\n conditions.push(condition);\n }\n }\n\n fields.Policy = this.preparePostPolicy(\n new Date(now.valueOf() + expiresInSeconds * 1000),\n conditions\n );\n fields['X-Amz-Signature'] = AWS.util.crypto.hmac(\n v4Credentials.getSigningKey(credentials, shortDate, region, 's3', true),\n fields.Policy,\n 'hex'\n );\n\n return fields;\n },\n\n /**\n * @api private\n */\n preparePostPolicy: function preparePostPolicy(expiration, conditions) {\n return AWS.util.base64.encode(JSON.stringify({\n expiration: AWS.util.date.iso8601(expiration),\n conditions: conditions\n }));\n },\n\n /**\n * @api private\n */\n prepareSignedUrl: function prepareSignedUrl(request) {\n request.addListener('validate', request.service.noPresignedContentLength);\n request.removeListener('build', request.service.addContentType);\n if (!request.params.Body) {\n // no Content-MD5/SHA-256 if body is not provided\n request.removeListener('build', request.service.computeContentMd5);\n } else {\n request.addListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256);\n }\n },\n\n /**\n * @api private\n * @param request\n */\n disableBodySigning: function disableBodySigning(request) {\n var headers = request.httpRequest.headers;\n // Add the header to anything that isn't a presigned url, unless that presigned url had a body defined\n if (!Object.prototype.hasOwnProperty.call(headers, 'presigned-expires')) {\n headers['X-Amz-Content-Sha256'] = 'UNSIGNED-PAYLOAD';\n }\n },\n\n /**\n * @api private\n */\n noPresignedContentLength: function noPresignedContentLength(request) {\n if (request.params.ContentLength !== undefined) {\n throw AWS.util.error(new Error(), {code: 'UnexpectedParameter',\n message: 'ContentLength is not supported in pre-signed URLs.'});\n }\n },\n\n createBucket: function createBucket(params, callback) {\n // When creating a bucket *outside* the classic region, the location\n // constraint must be set for the bucket and it must match the endpoint.\n // This chunk of code will set the location constraint param based\n // on the region (when possible), but it will not override a passed-in\n // location constraint.\n if (typeof params === 'function' || !params) {\n callback = callback || params;\n params = {};\n }\n var hostname = this.endpoint.hostname;\n // copy params so that appending keys does not unintentioinallly\n // mutate params object argument passed in by user\n var copiedParams = AWS.util.copy(params);\n\n if (hostname !== this.api.globalEndpoint && !params.CreateBucketConfiguration) {\n copiedParams.CreateBucketConfiguration = { LocationConstraint: this.config.region };\n }\n return this.makeRequest('createBucket', copiedParams, callback);\n },\n\n writeGetObjectResponse: function writeGetObjectResponse(params, callback) {\n\n var request = this.makeRequest('writeGetObjectResponse', AWS.util.copy(params), callback);\n var hostname = this.endpoint.hostname;\n if (hostname.indexOf(this.config.region) !== -1) {\n // hostname specifies a region already\n hostname = hostname.replace('s3.', OBJECT_LAMBDA_SERVICE + '.');\n } else {\n // Hostname doesn't have a region.\n // Object Lambda requires an explicit region.\n hostname = hostname.replace('s3.', OBJECT_LAMBDA_SERVICE + '.' + this.config.region + '.');\n }\n\n request.httpRequest.endpoint = new AWS.Endpoint(hostname, this.config);\n return request;\n },\n\n /**\n * @see AWS.S3.ManagedUpload\n * @overload upload(params = {}, [options], [callback])\n * Uploads an arbitrarily sized buffer, blob, or stream, using intelligent\n * concurrent handling of parts if the payload is large enough. You can\n * configure the concurrent queue size by setting `options`. Note that this\n * is the only operation for which the SDK can retry requests with stream\n * bodies.\n *\n * @param (see AWS.S3.putObject)\n * @option (see AWS.S3.ManagedUpload.constructor)\n * @return [AWS.S3.ManagedUpload] the managed upload object that can call\n * `send()` or track progress.\n * @example Uploading a stream object\n * var params = {Bucket: 'bucket', Key: 'key', Body: stream};\n * s3.upload(params, function(err, data) {\n * console.log(err, data);\n * });\n * @example Uploading a stream with concurrency of 1 and partSize of 10mb\n * var params = {Bucket: 'bucket', Key: 'key', Body: stream};\n * var options = {partSize: 10 * 1024 * 1024, queueSize: 1};\n * s3.upload(params, options, function(err, data) {\n * console.log(err, data);\n * });\n * @callback callback function(err, data)\n * @param err [Error] an error or null if no error occurred.\n * @param data [map] The response data from the successful upload:\n * @param data.Location [String] the URL of the uploaded object\n * @param data.ETag [String] the ETag of the uploaded object\n * @param data.Bucket [String] the bucket to which the object was uploaded\n * @param data.Key [String] the key to which the object was uploaded\n */\n upload: function upload(params, options, callback) {\n if (typeof options === 'function' && callback === undefined) {\n callback = options;\n options = null;\n }\n\n options = options || {};\n options = AWS.util.merge(options || {}, {service: this, params: params});\n\n var uploader = new AWS.S3.ManagedUpload(options);\n if (typeof callback === 'function') uploader.send(callback);\n return uploader;\n },\n\n /**\n * @api private\n */\n setExpiresString: function setExpiresString(response) {\n // Check if response contains Expires value, and populate ExpiresString.\n if (response && response.httpResponse && response.httpResponse.headers) {\n if ('expires' in response.httpResponse.headers) {\n response.httpResponse.headers.expiresstring = response.httpResponse.headers.expires;\n }\n }\n\n // Check if value in Expires is not a Date using parseTimestamp.\n try {\n if (response && response.httpResponse && response.httpResponse.headers) {\n if ('expires' in response.httpResponse.headers) {\n AWS.util.date.parseTimestamp(response.httpResponse.headers.expires);\n }\n }\n } catch (e) {\n console.log('AWS SDK', '(warning)', e);\n delete response.httpResponse.headers.expires;\n }\n }\n});\n\n/**\n * @api private\n */\nAWS.S3.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.getSignedUrlPromise = AWS.util.promisifyMethod('getSignedUrl', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.S3.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.getSignedUrlPromise;\n};\n\nAWS.util.addPromises(AWS.S3);\n","var AWS = require('../core');\nvar regionUtil = require('../region_config');\n\nvar s3util = {\n /**\n * @api private\n */\n isArnInParam: function isArnInParam(req, paramName) {\n var inputShape = (req.service.api.operations[req.operation] || {}).input || {};\n var inputMembers = inputShape.members || {};\n if (!req.params[paramName] || !inputMembers[paramName]) return false;\n return AWS.util.ARN.validate(req.params[paramName]);\n },\n\n /**\n * Validate service component from ARN supplied in Bucket parameter\n */\n validateArnService: function validateArnService(req) {\n var parsedArn = req._parsedArn;\n\n if (parsedArn.service !== 's3'\n && parsedArn.service !== 's3-outposts'\n && parsedArn.service !== 's3-object-lambda') {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'expect \\'s3\\' or \\'s3-outposts\\' or \\'s3-object-lambda\\' in ARN service component'\n });\n }\n },\n\n /**\n * Validate account ID from ARN supplied in Bucket parameter is a valid account\n */\n validateArnAccount: function validateArnAccount(req) {\n var parsedArn = req._parsedArn;\n\n if (!/[0-9]{12}/.exec(parsedArn.accountId)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'ARN accountID does not match regex \"[0-9]{12}\"'\n });\n }\n },\n\n /**\n * Validate ARN supplied in Bucket parameter is a valid access point ARN\n */\n validateS3AccessPointArn: function validateS3AccessPointArn(req) {\n var parsedArn = req._parsedArn;\n\n //can be ':' or '/'\n var delimiter = parsedArn.resource['accesspoint'.length];\n\n if (parsedArn.resource.split(delimiter).length !== 2) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Access Point ARN should have one resource accesspoint/{accesspointName}'\n });\n }\n\n var accessPoint = parsedArn.resource.split(delimiter)[1];\n var accessPointPrefix = accessPoint + '-' + parsedArn.accountId;\n if (!s3util.dnsCompatibleBucketName(accessPointPrefix) || accessPointPrefix.match(/\\./)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Access point resource in ARN is not DNS compatible. Got ' + accessPoint\n });\n }\n\n //set parsed valid access point\n req._parsedArn.accessPoint = accessPoint;\n },\n\n /**\n * Validate Outposts ARN supplied in Bucket parameter is a valid outposts ARN\n */\n validateOutpostsArn: function validateOutpostsArn(req) {\n var parsedArn = req._parsedArn;\n\n if (\n parsedArn.resource.indexOf('outpost:') !== 0 &&\n parsedArn.resource.indexOf('outpost/') !== 0\n ) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'ARN resource should begin with \\'outpost/\\''\n });\n }\n\n //can be ':' or '/'\n var delimiter = parsedArn.resource['outpost'.length];\n var outpostId = parsedArn.resource.split(delimiter)[1];\n var dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/);\n if (!dnsHostRegex.test(outpostId)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Outpost resource in ARN is not DNS compatible. Got ' + outpostId\n });\n }\n req._parsedArn.outpostId = outpostId;\n },\n\n /**\n * Validate Outposts ARN supplied in Bucket parameter is a valid outposts ARN\n */\n validateOutpostsAccessPointArn: function validateOutpostsAccessPointArn(req) {\n var parsedArn = req._parsedArn;\n\n //can be ':' or '/'\n var delimiter = parsedArn.resource['outpost'.length];\n\n if (parsedArn.resource.split(delimiter).length !== 4) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Outposts ARN should have two resources outpost/{outpostId}/accesspoint/{accesspointName}'\n });\n }\n\n var accessPoint = parsedArn.resource.split(delimiter)[3];\n var accessPointPrefix = accessPoint + '-' + parsedArn.accountId;\n if (!s3util.dnsCompatibleBucketName(accessPointPrefix) || accessPointPrefix.match(/\\./)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Access point resource in ARN is not DNS compatible. Got ' + accessPoint\n });\n }\n\n //set parsed valid access point\n req._parsedArn.accessPoint = accessPoint;\n },\n\n /**\n * Validate region field in ARN supplied in Bucket parameter is a valid region\n */\n validateArnRegion: function validateArnRegion(req, options) {\n if (options === undefined) {\n options = {};\n }\n\n var useArnRegion = s3util.loadUseArnRegionConfig(req);\n var regionFromArn = req._parsedArn.region;\n var clientRegion = req.service.config.region;\n var useFipsEndpoint = req.service.config.useFipsEndpoint;\n var allowFipsEndpoint = options.allowFipsEndpoint || false;\n\n if (!regionFromArn) {\n var message = 'ARN region is empty';\n if (req._parsedArn.service === 's3') {\n message = message + '\\nYou may want to use multi-regional ARN. The feature is not supported in current SDK. ' +\n 'You should consider switching to V3(https://github.com/aws/aws-sdk-js-v3).';\n }\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: message\n });\n }\n\n if (useFipsEndpoint && !allowFipsEndpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'ARN endpoint is not compatible with FIPS region'\n });\n }\n\n if (regionFromArn.indexOf('fips') >= 0) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'FIPS region not allowed in ARN'\n });\n }\n\n if (!useArnRegion && regionFromArn !== clientRegion) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Configured region conflicts with access point region'\n });\n } else if (\n useArnRegion &&\n regionUtil.getEndpointSuffix(regionFromArn) !== regionUtil.getEndpointSuffix(clientRegion)\n ) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Configured region and access point region not in same partition'\n });\n }\n\n if (req.service.config.useAccelerateEndpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'useAccelerateEndpoint config is not supported with access point ARN'\n });\n }\n\n if (req._parsedArn.service === 's3-outposts' && req.service.config.useDualstackEndpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Dualstack is not supported with outposts access point ARN'\n });\n }\n },\n\n loadUseArnRegionConfig: function loadUseArnRegionConfig(req) {\n var envName = 'AWS_S3_USE_ARN_REGION';\n var configName = 's3_use_arn_region';\n var useArnRegion = true;\n var originalConfig = req.service._originalConfig || {};\n if (req.service.config.s3UseArnRegion !== undefined) {\n return req.service.config.s3UseArnRegion;\n } else if (originalConfig.s3UseArnRegion !== undefined) {\n useArnRegion = originalConfig.s3UseArnRegion === true;\n } else if (AWS.util.isNode()) {\n //load from environmental variable AWS_USE_ARN_REGION\n if (process.env[envName]) {\n var value = process.env[envName].trim().toLowerCase();\n if (['false', 'true'].indexOf(value) < 0) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: envName + ' only accepts true or false. Got ' + process.env[envName],\n retryable: false\n });\n }\n useArnRegion = value === 'true';\n } else { //load from shared config property use_arn_region\n var profiles = {};\n var profile = {};\n try {\n profiles = AWS.util.getProfilesFromSharedConfig(AWS.util.iniLoader);\n profile = profiles[process.env.AWS_PROFILE || AWS.util.defaultProfile];\n } catch (e) {}\n if (profile[configName]) {\n if (['false', 'true'].indexOf(profile[configName].trim().toLowerCase()) < 0) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: configName + ' only accepts true or false. Got ' + profile[configName],\n retryable: false\n });\n }\n useArnRegion = profile[configName].trim().toLowerCase() === 'true';\n }\n }\n }\n req.service.config.s3UseArnRegion = useArnRegion;\n return useArnRegion;\n },\n\n /**\n * Validations before URI can be populated\n */\n validatePopulateUriFromArn: function validatePopulateUriFromArn(req) {\n if (req.service._originalConfig && req.service._originalConfig.endpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Custom endpoint is not compatible with access point ARN'\n });\n }\n\n if (req.service.config.s3ForcePathStyle) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Cannot construct path-style endpoint with access point'\n });\n }\n },\n\n /**\n * Returns true if the bucket name is DNS compatible. Buckets created\n * outside of the classic region MUST be DNS compatible.\n *\n * @api private\n */\n dnsCompatibleBucketName: function dnsCompatibleBucketName(bucketName) {\n var b = bucketName;\n var domain = new RegExp(/^[a-z0-9][a-z0-9\\.\\-]{1,61}[a-z0-9]$/);\n var ipAddress = new RegExp(/(\\d+\\.){3}\\d+/);\n var dots = new RegExp(/\\.\\./);\n return (b.match(domain) && !b.match(ipAddress) && !b.match(dots)) ? true : false;\n },\n};\n\n/**\n * @api private\n */\nmodule.exports = s3util;\n","var AWS = require('../core');\n\nAWS.util.update(AWS.SQS.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('build', this.buildEndpoint);\n\n if (request.service.config.computeChecksums) {\n if (request.operation === 'sendMessage') {\n request.addListener('extractData', this.verifySendMessageChecksum);\n } else if (request.operation === 'sendMessageBatch') {\n request.addListener('extractData', this.verifySendMessageBatchChecksum);\n } else if (request.operation === 'receiveMessage') {\n request.addListener('extractData', this.verifyReceiveMessageChecksum);\n }\n }\n },\n\n /**\n * @api private\n */\n verifySendMessageChecksum: function verifySendMessageChecksum(response) {\n if (!response.data) return;\n\n var md5 = response.data.MD5OfMessageBody;\n var body = this.params.MessageBody;\n var calculatedMd5 = this.service.calculateChecksum(body);\n if (calculatedMd5 !== md5) {\n var msg = 'Got \"' + response.data.MD5OfMessageBody +\n '\", expecting \"' + calculatedMd5 + '\".';\n this.service.throwInvalidChecksumError(response,\n [response.data.MessageId], msg);\n }\n },\n\n /**\n * @api private\n */\n verifySendMessageBatchChecksum: function verifySendMessageBatchChecksum(response) {\n if (!response.data) return;\n\n var service = this.service;\n var entries = {};\n var errors = [];\n var messageIds = [];\n AWS.util.arrayEach(response.data.Successful, function (entry) {\n entries[entry.Id] = entry;\n });\n AWS.util.arrayEach(this.params.Entries, function (entry) {\n if (entries[entry.Id]) {\n var md5 = entries[entry.Id].MD5OfMessageBody;\n var body = entry.MessageBody;\n if (!service.isChecksumValid(md5, body)) {\n errors.push(entry.Id);\n messageIds.push(entries[entry.Id].MessageId);\n }\n }\n });\n\n if (errors.length > 0) {\n service.throwInvalidChecksumError(response, messageIds,\n 'Invalid messages: ' + errors.join(', '));\n }\n },\n\n /**\n * @api private\n */\n verifyReceiveMessageChecksum: function verifyReceiveMessageChecksum(response) {\n if (!response.data) return;\n\n var service = this.service;\n var messageIds = [];\n AWS.util.arrayEach(response.data.Messages, function(message) {\n var md5 = message.MD5OfBody;\n var body = message.Body;\n if (!service.isChecksumValid(md5, body)) {\n messageIds.push(message.MessageId);\n }\n });\n\n if (messageIds.length > 0) {\n service.throwInvalidChecksumError(response, messageIds,\n 'Invalid messages: ' + messageIds.join(', '));\n }\n },\n\n /**\n * @api private\n */\n throwInvalidChecksumError: function throwInvalidChecksumError(response, ids, message) {\n response.error = AWS.util.error(new Error(), {\n retryable: true,\n code: 'InvalidChecksum',\n messageIds: ids,\n message: response.request.operation +\n ' returned an invalid MD5 response. ' + message\n });\n },\n\n /**\n * @api private\n */\n isChecksumValid: function isChecksumValid(checksum, data) {\n return this.calculateChecksum(data) === checksum;\n },\n\n /**\n * @api private\n */\n calculateChecksum: function calculateChecksum(data) {\n return AWS.util.crypto.md5(data, 'hex');\n },\n\n /**\n * @api private\n */\n buildEndpoint: function buildEndpoint(request) {\n var url = request.httpRequest.params.QueueUrl;\n if (url) {\n request.httpRequest.endpoint = new AWS.Endpoint(url);\n\n // signature version 4 requires the region name to be set,\n // sqs queue urls contain the region name\n var matches = request.httpRequest.endpoint.host.match(/^sqs\\.(.+?)\\./);\n if (matches) request.httpRequest.region = matches[1];\n }\n }\n});\n","var AWS = require('../core');\nvar resolveRegionalEndpointsFlag = require('../config_regional_endpoint');\nvar ENV_REGIONAL_ENDPOINT_ENABLED = 'AWS_STS_REGIONAL_ENDPOINTS';\nvar CONFIG_REGIONAL_ENDPOINT_ENABLED = 'sts_regional_endpoints';\n\nAWS.util.update(AWS.STS.prototype, {\n /**\n * @overload credentialsFrom(data, credentials = null)\n * Creates a credentials object from STS response data containing\n * credentials information. Useful for quickly setting AWS credentials.\n *\n * @note This is a low-level utility function. If you want to load temporary\n * credentials into your process for subsequent requests to AWS resources,\n * you should use {AWS.TemporaryCredentials} instead.\n * @param data [map] data retrieved from a call to {getFederatedToken},\n * {getSessionToken}, {assumeRole}, or {assumeRoleWithWebIdentity}.\n * @param credentials [AWS.Credentials] an optional credentials object to\n * fill instead of creating a new object. Useful when modifying an\n * existing credentials object from a refresh call.\n * @return [AWS.TemporaryCredentials] the set of temporary credentials\n * loaded from a raw STS operation response.\n * @example Using credentialsFrom to load global AWS credentials\n * var sts = new AWS.STS();\n * sts.getSessionToken(function (err, data) {\n * if (err) console.log(\"Error getting credentials\");\n * else {\n * AWS.config.credentials = sts.credentialsFrom(data);\n * }\n * });\n * @see AWS.TemporaryCredentials\n */\n credentialsFrom: function credentialsFrom(data, credentials) {\n if (!data) return null;\n if (!credentials) credentials = new AWS.TemporaryCredentials();\n credentials.expired = false;\n credentials.accessKeyId = data.Credentials.AccessKeyId;\n credentials.secretAccessKey = data.Credentials.SecretAccessKey;\n credentials.sessionToken = data.Credentials.SessionToken;\n credentials.expireTime = data.Credentials.Expiration;\n return credentials;\n },\n\n assumeRoleWithWebIdentity: function assumeRoleWithWebIdentity(params, callback) {\n return this.makeUnauthenticatedRequest('assumeRoleWithWebIdentity', params, callback);\n },\n\n assumeRoleWithSAML: function assumeRoleWithSAML(params, callback) {\n return this.makeUnauthenticatedRequest('assumeRoleWithSAML', params, callback);\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('validate', this.optInRegionalEndpoint, true);\n },\n\n /**\n * @api private\n */\n optInRegionalEndpoint: function optInRegionalEndpoint(req) {\n var service = req.service;\n var config = service.config;\n config.stsRegionalEndpoints = resolveRegionalEndpointsFlag(service._originalConfig, {\n env: ENV_REGIONAL_ENDPOINT_ENABLED,\n sharedConfig: CONFIG_REGIONAL_ENDPOINT_ENABLED,\n clientConfig: 'stsRegionalEndpoints'\n });\n if (\n config.stsRegionalEndpoints === 'regional' &&\n service.isGlobalEndpoint\n ) {\n //client will throw if region is not supplied; request will be signed with specified region\n if (!config.region) {\n throw AWS.util.error(new Error(),\n {code: 'ConfigError', message: 'Missing region in config'});\n }\n var insertPoint = config.endpoint.indexOf('.amazonaws.com');\n var regionalEndpoint = config.endpoint.substring(0, insertPoint) +\n '.' + config.region + config.endpoint.substring(insertPoint);\n req.httpRequest.updateEndpoint(regionalEndpoint);\n req.httpRequest.region = config.region;\n }\n }\n\n});\n","var AWS = require('../core');\n\n/**\n * @api private\n */\nAWS.Signers.Bearer = AWS.util.inherit(AWS.Signers.RequestSigner, {\n constructor: function Bearer(request) {\n AWS.Signers.RequestSigner.call(this, request);\n },\n\n addAuthorization: function addAuthorization(token) {\n this.request.headers['Authorization'] = 'Bearer ' + token.token;\n }\n});\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nvar expiresHeader = 'presigned-expires';\n\n/**\n * @api private\n */\nfunction signedUrlBuilder(request) {\n var expires = request.httpRequest.headers[expiresHeader];\n var signerClass = request.service.getSignerClass(request);\n\n delete request.httpRequest.headers['User-Agent'];\n delete request.httpRequest.headers['X-Amz-User-Agent'];\n\n if (signerClass === AWS.Signers.V4) {\n if (expires > 604800) { // one week expiry is invalid\n var message = 'Presigning does not support expiry time greater ' +\n 'than a week with SigV4 signing.';\n throw AWS.util.error(new Error(), {\n code: 'InvalidExpiryTime', message: message, retryable: false\n });\n }\n request.httpRequest.headers[expiresHeader] = expires;\n } else if (signerClass === AWS.Signers.S3) {\n var now = request.service ? request.service.getSkewCorrectedDate() : AWS.util.date.getDate();\n request.httpRequest.headers[expiresHeader] = parseInt(\n AWS.util.date.unixTimestamp(now) + expires, 10).toString();\n } else {\n throw AWS.util.error(new Error(), {\n message: 'Presigning only supports S3 or SigV4 signing.',\n code: 'UnsupportedSigner', retryable: false\n });\n }\n}\n\n/**\n * @api private\n */\nfunction signedUrlSigner(request) {\n var endpoint = request.httpRequest.endpoint;\n var parsedUrl = AWS.util.urlParse(request.httpRequest.path);\n var queryParams = {};\n\n if (parsedUrl.search) {\n queryParams = AWS.util.queryStringParse(parsedUrl.search.substr(1));\n }\n\n var auth = request.httpRequest.headers['Authorization'].split(' ');\n if (auth[0] === 'AWS') {\n auth = auth[1].split(':');\n queryParams['Signature'] = auth.pop();\n queryParams['AWSAccessKeyId'] = auth.join(':');\n\n AWS.util.each(request.httpRequest.headers, function (key, value) {\n if (key === expiresHeader) key = 'Expires';\n if (key.indexOf('x-amz-meta-') === 0) {\n // Delete existing, potentially not normalized key\n delete queryParams[key];\n key = key.toLowerCase();\n }\n queryParams[key] = value;\n });\n delete request.httpRequest.headers[expiresHeader];\n delete queryParams['Authorization'];\n delete queryParams['Host'];\n } else if (auth[0] === 'AWS4-HMAC-SHA256') { // SigV4 signing\n auth.shift();\n var rest = auth.join(' ');\n var signature = rest.match(/Signature=(.*?)(?:,|\\s|\\r?\\n|$)/)[1];\n queryParams['X-Amz-Signature'] = signature;\n delete queryParams['Expires'];\n }\n\n // build URL\n endpoint.pathname = parsedUrl.pathname;\n endpoint.search = AWS.util.queryParamsToString(queryParams);\n}\n\n/**\n * @api private\n */\nAWS.Signers.Presign = inherit({\n /**\n * @api private\n */\n sign: function sign(request, expireTime, callback) {\n request.httpRequest.headers[expiresHeader] = expireTime || 3600;\n request.on('build', signedUrlBuilder);\n request.on('sign', signedUrlSigner);\n request.removeListener('afterBuild',\n AWS.EventListeners.Core.SET_CONTENT_LENGTH);\n request.removeListener('afterBuild',\n AWS.EventListeners.Core.COMPUTE_SHA256);\n\n request.emit('beforePresign', [request]);\n\n if (callback) {\n request.build(function() {\n if (this.response.error) callback(this.response.error);\n else {\n callback(null, AWS.util.urlFormat(request.httpRequest.endpoint));\n }\n });\n } else {\n request.build();\n if (request.response.error) throw request.response.error;\n return AWS.util.urlFormat(request.httpRequest.endpoint);\n }\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.Presign;\n","var AWS = require('../core');\n\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.RequestSigner = inherit({\n constructor: function RequestSigner(request) {\n this.request = request;\n },\n\n setServiceClientId: function setServiceClientId(id) {\n this.serviceClientId = id;\n },\n\n getServiceClientId: function getServiceClientId() {\n return this.serviceClientId;\n }\n});\n\nAWS.Signers.RequestSigner.getVersion = function getVersion(version) {\n switch (version) {\n case 'v2': return AWS.Signers.V2;\n case 'v3': return AWS.Signers.V3;\n case 's3v4': return AWS.Signers.V4;\n case 'v4': return AWS.Signers.V4;\n case 's3': return AWS.Signers.S3;\n case 'v3https': return AWS.Signers.V3Https;\n case 'bearer': return AWS.Signers.Bearer;\n }\n throw new Error('Unknown signing version ' + version);\n};\n\nrequire('./v2');\nrequire('./v3');\nrequire('./v3https');\nrequire('./v4');\nrequire('./s3');\nrequire('./presign');\nrequire('./bearer');\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.S3 = inherit(AWS.Signers.RequestSigner, {\n /**\n * When building the stringToSign, these sub resource params should be\n * part of the canonical resource string with their NON-decoded values\n */\n subResources: {\n 'acl': 1,\n 'accelerate': 1,\n 'analytics': 1,\n 'cors': 1,\n 'lifecycle': 1,\n 'delete': 1,\n 'inventory': 1,\n 'location': 1,\n 'logging': 1,\n 'metrics': 1,\n 'notification': 1,\n 'partNumber': 1,\n 'policy': 1,\n 'requestPayment': 1,\n 'replication': 1,\n 'restore': 1,\n 'tagging': 1,\n 'torrent': 1,\n 'uploadId': 1,\n 'uploads': 1,\n 'versionId': 1,\n 'versioning': 1,\n 'versions': 1,\n 'website': 1\n },\n\n // when building the stringToSign, these querystring params should be\n // part of the canonical resource string with their NON-encoded values\n responseHeaders: {\n 'response-content-type': 1,\n 'response-content-language': 1,\n 'response-expires': 1,\n 'response-cache-control': 1,\n 'response-content-disposition': 1,\n 'response-content-encoding': 1\n },\n\n addAuthorization: function addAuthorization(credentials, date) {\n if (!this.request.headers['presigned-expires']) {\n this.request.headers['X-Amz-Date'] = AWS.util.date.rfc822(date);\n }\n\n if (credentials.sessionToken) {\n // presigned URLs require this header to be lowercased\n this.request.headers['x-amz-security-token'] = credentials.sessionToken;\n }\n\n var signature = this.sign(credentials.secretAccessKey, this.stringToSign());\n var auth = 'AWS ' + credentials.accessKeyId + ':' + signature;\n\n this.request.headers['Authorization'] = auth;\n },\n\n stringToSign: function stringToSign() {\n var r = this.request;\n\n var parts = [];\n parts.push(r.method);\n parts.push(r.headers['Content-MD5'] || '');\n parts.push(r.headers['Content-Type'] || '');\n\n // This is the \"Date\" header, but we use X-Amz-Date.\n // The S3 signing mechanism requires us to pass an empty\n // string for this Date header regardless.\n parts.push(r.headers['presigned-expires'] || '');\n\n var headers = this.canonicalizedAmzHeaders();\n if (headers) parts.push(headers);\n parts.push(this.canonicalizedResource());\n\n return parts.join('\\n');\n\n },\n\n canonicalizedAmzHeaders: function canonicalizedAmzHeaders() {\n\n var amzHeaders = [];\n\n AWS.util.each(this.request.headers, function (name) {\n if (name.match(/^x-amz-/i))\n amzHeaders.push(name);\n });\n\n amzHeaders.sort(function (a, b) {\n return a.toLowerCase() < b.toLowerCase() ? -1 : 1;\n });\n\n var parts = [];\n AWS.util.arrayEach.call(this, amzHeaders, function (name) {\n parts.push(name.toLowerCase() + ':' + String(this.request.headers[name]));\n });\n\n return parts.join('\\n');\n\n },\n\n canonicalizedResource: function canonicalizedResource() {\n\n var r = this.request;\n\n var parts = r.path.split('?');\n var path = parts[0];\n var querystring = parts[1];\n\n var resource = '';\n\n if (r.virtualHostedBucket)\n resource += '/' + r.virtualHostedBucket;\n\n resource += path;\n\n if (querystring) {\n\n // collect a list of sub resources and query params that need to be signed\n var resources = [];\n\n AWS.util.arrayEach.call(this, querystring.split('&'), function (param) {\n var name = param.split('=')[0];\n var value = param.split('=')[1];\n if (this.subResources[name] || this.responseHeaders[name]) {\n var subresource = { name: name };\n if (value !== undefined) {\n if (this.subResources[name]) {\n subresource.value = value;\n } else {\n subresource.value = decodeURIComponent(value);\n }\n }\n resources.push(subresource);\n }\n });\n\n resources.sort(function (a, b) { return a.name < b.name ? -1 : 1; });\n\n if (resources.length) {\n\n querystring = [];\n AWS.util.arrayEach(resources, function (res) {\n if (res.value === undefined) {\n querystring.push(res.name);\n } else {\n querystring.push(res.name + '=' + res.value);\n }\n });\n\n resource += '?' + querystring.join('&');\n }\n\n }\n\n return resource;\n\n },\n\n sign: function sign(secret, string) {\n return AWS.util.crypto.hmac(secret, string, 'base64', 'sha1');\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.S3;\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.V2 = inherit(AWS.Signers.RequestSigner, {\n addAuthorization: function addAuthorization(credentials, date) {\n\n if (!date) date = AWS.util.date.getDate();\n\n var r = this.request;\n\n r.params.Timestamp = AWS.util.date.iso8601(date);\n r.params.SignatureVersion = '2';\n r.params.SignatureMethod = 'HmacSHA256';\n r.params.AWSAccessKeyId = credentials.accessKeyId;\n\n if (credentials.sessionToken) {\n r.params.SecurityToken = credentials.sessionToken;\n }\n\n delete r.params.Signature; // delete old Signature for re-signing\n r.params.Signature = this.signature(credentials);\n\n r.body = AWS.util.queryParamsToString(r.params);\n r.headers['Content-Length'] = r.body.length;\n },\n\n signature: function signature(credentials) {\n return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64');\n },\n\n stringToSign: function stringToSign() {\n var parts = [];\n parts.push(this.request.method);\n parts.push(this.request.endpoint.host.toLowerCase());\n parts.push(this.request.pathname());\n parts.push(AWS.util.queryParamsToString(this.request.params));\n return parts.join('\\n');\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V2;\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.V3 = inherit(AWS.Signers.RequestSigner, {\n addAuthorization: function addAuthorization(credentials, date) {\n\n var datetime = AWS.util.date.rfc822(date);\n\n this.request.headers['X-Amz-Date'] = datetime;\n\n if (credentials.sessionToken) {\n this.request.headers['x-amz-security-token'] = credentials.sessionToken;\n }\n\n this.request.headers['X-Amzn-Authorization'] =\n this.authorization(credentials, datetime);\n\n },\n\n authorization: function authorization(credentials) {\n return 'AWS3 ' +\n 'AWSAccessKeyId=' + credentials.accessKeyId + ',' +\n 'Algorithm=HmacSHA256,' +\n 'SignedHeaders=' + this.signedHeaders() + ',' +\n 'Signature=' + this.signature(credentials);\n },\n\n signedHeaders: function signedHeaders() {\n var headers = [];\n AWS.util.arrayEach(this.headersToSign(), function iterator(h) {\n headers.push(h.toLowerCase());\n });\n return headers.sort().join(';');\n },\n\n canonicalHeaders: function canonicalHeaders() {\n var headers = this.request.headers;\n var parts = [];\n AWS.util.arrayEach(this.headersToSign(), function iterator(h) {\n parts.push(h.toLowerCase().trim() + ':' + String(headers[h]).trim());\n });\n return parts.sort().join('\\n') + '\\n';\n },\n\n headersToSign: function headersToSign() {\n var headers = [];\n AWS.util.each(this.request.headers, function iterator(k) {\n if (k === 'Host' || k === 'Content-Encoding' || k.match(/^X-Amz/i)) {\n headers.push(k);\n }\n });\n return headers;\n },\n\n signature: function signature(credentials) {\n return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64');\n },\n\n stringToSign: function stringToSign() {\n var parts = [];\n parts.push(this.request.method);\n parts.push('/');\n parts.push('');\n parts.push(this.canonicalHeaders());\n parts.push(this.request.body);\n return AWS.util.crypto.sha256(parts.join('\\n'));\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V3;\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\nrequire('./v3');\n\n/**\n * @api private\n */\nAWS.Signers.V3Https = inherit(AWS.Signers.V3, {\n authorization: function authorization(credentials) {\n return 'AWS3-HTTPS ' +\n 'AWSAccessKeyId=' + credentials.accessKeyId + ',' +\n 'Algorithm=HmacSHA256,' +\n 'Signature=' + this.signature(credentials);\n },\n\n stringToSign: function stringToSign() {\n return this.request.headers['X-Amz-Date'];\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V3Https;\n","var AWS = require('../core');\nvar v4Credentials = require('./v4_credentials');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nvar expiresHeader = 'presigned-expires';\n\n/**\n * @api private\n */\nAWS.Signers.V4 = inherit(AWS.Signers.RequestSigner, {\n constructor: function V4(request, serviceName, options) {\n AWS.Signers.RequestSigner.call(this, request);\n this.serviceName = serviceName;\n options = options || {};\n this.signatureCache = typeof options.signatureCache === 'boolean' ? options.signatureCache : true;\n this.operation = options.operation;\n this.signatureVersion = options.signatureVersion;\n },\n\n algorithm: 'AWS4-HMAC-SHA256',\n\n addAuthorization: function addAuthorization(credentials, date) {\n var datetime = AWS.util.date.iso8601(date).replace(/[:\\-]|\\.\\d{3}/g, '');\n\n if (this.isPresigned()) {\n this.updateForPresigned(credentials, datetime);\n } else {\n this.addHeaders(credentials, datetime);\n }\n\n this.request.headers['Authorization'] =\n this.authorization(credentials, datetime);\n },\n\n addHeaders: function addHeaders(credentials, datetime) {\n this.request.headers['X-Amz-Date'] = datetime;\n if (credentials.sessionToken) {\n this.request.headers['x-amz-security-token'] = credentials.sessionToken;\n }\n },\n\n updateForPresigned: function updateForPresigned(credentials, datetime) {\n var credString = this.credentialString(datetime);\n var qs = {\n 'X-Amz-Date': datetime,\n 'X-Amz-Algorithm': this.algorithm,\n 'X-Amz-Credential': credentials.accessKeyId + '/' + credString,\n 'X-Amz-Expires': this.request.headers[expiresHeader],\n 'X-Amz-SignedHeaders': this.signedHeaders()\n };\n\n if (credentials.sessionToken) {\n qs['X-Amz-Security-Token'] = credentials.sessionToken;\n }\n\n if (this.request.headers['Content-Type']) {\n qs['Content-Type'] = this.request.headers['Content-Type'];\n }\n if (this.request.headers['Content-MD5']) {\n qs['Content-MD5'] = this.request.headers['Content-MD5'];\n }\n if (this.request.headers['Cache-Control']) {\n qs['Cache-Control'] = this.request.headers['Cache-Control'];\n }\n\n // need to pull in any other X-Amz-* headers\n AWS.util.each.call(this, this.request.headers, function(key, value) {\n if (key === expiresHeader) return;\n if (this.isSignableHeader(key)) {\n var lowerKey = key.toLowerCase();\n // Metadata should be normalized\n if (lowerKey.indexOf('x-amz-meta-') === 0) {\n qs[lowerKey] = value;\n } else if (lowerKey.indexOf('x-amz-') === 0) {\n qs[key] = value;\n }\n }\n });\n\n var sep = this.request.path.indexOf('?') >= 0 ? '&' : '?';\n this.request.path += sep + AWS.util.queryParamsToString(qs);\n },\n\n authorization: function authorization(credentials, datetime) {\n var parts = [];\n var credString = this.credentialString(datetime);\n parts.push(this.algorithm + ' Credential=' +\n credentials.accessKeyId + '/' + credString);\n parts.push('SignedHeaders=' + this.signedHeaders());\n parts.push('Signature=' + this.signature(credentials, datetime));\n return parts.join(', ');\n },\n\n signature: function signature(credentials, datetime) {\n var signingKey = v4Credentials.getSigningKey(\n credentials,\n datetime.substr(0, 8),\n this.request.region,\n this.serviceName,\n this.signatureCache\n );\n return AWS.util.crypto.hmac(signingKey, this.stringToSign(datetime), 'hex');\n },\n\n stringToSign: function stringToSign(datetime) {\n var parts = [];\n parts.push('AWS4-HMAC-SHA256');\n parts.push(datetime);\n parts.push(this.credentialString(datetime));\n parts.push(this.hexEncodedHash(this.canonicalString()));\n return parts.join('\\n');\n },\n\n canonicalString: function canonicalString() {\n var parts = [], pathname = this.request.pathname();\n if (this.serviceName !== 's3' && this.signatureVersion !== 's3v4') pathname = AWS.util.uriEscapePath(pathname);\n\n parts.push(this.request.method);\n parts.push(pathname);\n parts.push(this.request.search());\n parts.push(this.canonicalHeaders() + '\\n');\n parts.push(this.signedHeaders());\n parts.push(this.hexEncodedBodyHash());\n return parts.join('\\n');\n },\n\n canonicalHeaders: function canonicalHeaders() {\n var headers = [];\n AWS.util.each.call(this, this.request.headers, function (key, item) {\n headers.push([key, item]);\n });\n headers.sort(function (a, b) {\n return a[0].toLowerCase() < b[0].toLowerCase() ? -1 : 1;\n });\n var parts = [];\n AWS.util.arrayEach.call(this, headers, function (item) {\n var key = item[0].toLowerCase();\n if (this.isSignableHeader(key)) {\n var value = item[1];\n if (typeof value === 'undefined' || value === null || typeof value.toString !== 'function') {\n throw AWS.util.error(new Error('Header ' + key + ' contains invalid value'), {\n code: 'InvalidHeader'\n });\n }\n parts.push(key + ':' +\n this.canonicalHeaderValues(value.toString()));\n }\n });\n return parts.join('\\n');\n },\n\n canonicalHeaderValues: function canonicalHeaderValues(values) {\n return values.replace(/\\s+/g, ' ').replace(/^\\s+|\\s+$/g, '');\n },\n\n signedHeaders: function signedHeaders() {\n var keys = [];\n AWS.util.each.call(this, this.request.headers, function (key) {\n key = key.toLowerCase();\n if (this.isSignableHeader(key)) keys.push(key);\n });\n return keys.sort().join(';');\n },\n\n credentialString: function credentialString(datetime) {\n return v4Credentials.createScope(\n datetime.substr(0, 8),\n this.request.region,\n this.serviceName\n );\n },\n\n hexEncodedHash: function hash(string) {\n return AWS.util.crypto.sha256(string, 'hex');\n },\n\n hexEncodedBodyHash: function hexEncodedBodyHash() {\n var request = this.request;\n if (this.isPresigned() && (['s3', 's3-object-lambda'].indexOf(this.serviceName) > -1) && !request.body) {\n return 'UNSIGNED-PAYLOAD';\n } else if (request.headers['X-Amz-Content-Sha256']) {\n return request.headers['X-Amz-Content-Sha256'];\n } else {\n return this.hexEncodedHash(this.request.body || '');\n }\n },\n\n unsignableHeaders: [\n 'authorization',\n 'content-type',\n 'content-length',\n 'user-agent',\n expiresHeader,\n 'expect',\n 'x-amzn-trace-id'\n ],\n\n isSignableHeader: function isSignableHeader(key) {\n if (key.toLowerCase().indexOf('x-amz-') === 0) return true;\n return this.unsignableHeaders.indexOf(key) < 0;\n },\n\n isPresigned: function isPresigned() {\n return this.request.headers[expiresHeader] ? true : false;\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V4;\n","var AWS = require('../core');\n\n/**\n * @api private\n */\nvar cachedSecret = {};\n\n/**\n * @api private\n */\nvar cacheQueue = [];\n\n/**\n * @api private\n */\nvar maxCacheEntries = 50;\n\n/**\n * @api private\n */\nvar v4Identifier = 'aws4_request';\n\n/**\n * @api private\n */\nmodule.exports = {\n /**\n * @api private\n *\n * @param date [String]\n * @param region [String]\n * @param serviceName [String]\n * @return [String]\n */\n createScope: function createScope(date, region, serviceName) {\n return [\n date.substr(0, 8),\n region,\n serviceName,\n v4Identifier\n ].join('/');\n },\n\n /**\n * @api private\n *\n * @param credentials [Credentials]\n * @param date [String]\n * @param region [String]\n * @param service [String]\n * @param shouldCache [Boolean]\n * @return [String]\n */\n getSigningKey: function getSigningKey(\n credentials,\n date,\n region,\n service,\n shouldCache\n ) {\n var credsIdentifier = AWS.util.crypto\n .hmac(credentials.secretAccessKey, credentials.accessKeyId, 'base64');\n var cacheKey = [credsIdentifier, date, region, service].join('_');\n shouldCache = shouldCache !== false;\n if (shouldCache && (cacheKey in cachedSecret)) {\n return cachedSecret[cacheKey];\n }\n\n var kDate = AWS.util.crypto.hmac(\n 'AWS4' + credentials.secretAccessKey,\n date,\n 'buffer'\n );\n var kRegion = AWS.util.crypto.hmac(kDate, region, 'buffer');\n var kService = AWS.util.crypto.hmac(kRegion, service, 'buffer');\n\n var signingKey = AWS.util.crypto.hmac(kService, v4Identifier, 'buffer');\n if (shouldCache) {\n cachedSecret[cacheKey] = signingKey;\n cacheQueue.push(cacheKey);\n if (cacheQueue.length > maxCacheEntries) {\n // remove the oldest entry (not the least recently used)\n delete cachedSecret[cacheQueue.shift()];\n }\n }\n\n return signingKey;\n },\n\n /**\n * @api private\n *\n * Empties the derived signing key cache. Made available for testing purposes\n * only.\n */\n emptyCache: function emptyCache() {\n cachedSecret = {};\n cacheQueue = [];\n }\n};\n","function AcceptorStateMachine(states, state) {\n this.currentState = state || null;\n this.states = states || {};\n}\n\nAcceptorStateMachine.prototype.runTo = function runTo(finalState, done, bindObject, inputError) {\n if (typeof finalState === 'function') {\n inputError = bindObject; bindObject = done;\n done = finalState; finalState = null;\n }\n\n var self = this;\n var state = self.states[self.currentState];\n state.fn.call(bindObject || self, inputError, function(err) {\n if (err) {\n if (state.fail) self.currentState = state.fail;\n else return done ? done.call(bindObject, err) : null;\n } else {\n if (state.accept) self.currentState = state.accept;\n else return done ? done.call(bindObject) : null;\n }\n if (self.currentState === finalState) {\n return done ? done.call(bindObject, err) : null;\n }\n\n self.runTo(finalState, done, bindObject, err);\n });\n};\n\nAcceptorStateMachine.prototype.addState = function addState(name, acceptState, failState, fn) {\n if (typeof acceptState === 'function') {\n fn = acceptState; acceptState = null; failState = null;\n } else if (typeof failState === 'function') {\n fn = failState; failState = null;\n }\n\n if (!this.currentState) this.currentState = name;\n this.states[name] = { accept: acceptState, fail: failState, fn: fn };\n return this;\n};\n\n/**\n * @api private\n */\nmodule.exports = AcceptorStateMachine;\n","/* eslint guard-for-in:0 */\nvar AWS;\n\n/**\n * A set of utility methods for use with the AWS SDK.\n *\n * @!attribute abort\n * Return this value from an iterator function {each} or {arrayEach}\n * to break out of the iteration.\n * @example Breaking out of an iterator function\n * AWS.util.each({a: 1, b: 2, c: 3}, function(key, value) {\n * if (key == 'b') return AWS.util.abort;\n * });\n * @see each\n * @see arrayEach\n * @api private\n */\nvar util = {\n environment: 'nodejs',\n engine: function engine() {\n if (util.isBrowser() && typeof navigator !== 'undefined') {\n return navigator.userAgent;\n } else {\n var engine = process.platform + '/' + process.version;\n if (process.env.AWS_EXECUTION_ENV) {\n engine += ' exec-env/' + process.env.AWS_EXECUTION_ENV;\n }\n return engine;\n }\n },\n\n userAgent: function userAgent() {\n var name = util.environment;\n var agent = 'aws-sdk-' + name + '/' + require('./core').VERSION;\n if (name === 'nodejs') agent += ' ' + util.engine();\n return agent;\n },\n\n uriEscape: function uriEscape(string) {\n var output = encodeURIComponent(string);\n output = output.replace(/[^A-Za-z0-9_.~\\-%]+/g, escape);\n\n // AWS percent-encodes some extra non-standard characters in a URI\n output = output.replace(/[*]/g, function(ch) {\n return '%' + ch.charCodeAt(0).toString(16).toUpperCase();\n });\n\n return output;\n },\n\n uriEscapePath: function uriEscapePath(string) {\n var parts = [];\n util.arrayEach(string.split('/'), function (part) {\n parts.push(util.uriEscape(part));\n });\n return parts.join('/');\n },\n\n urlParse: function urlParse(url) {\n return util.url.parse(url);\n },\n\n urlFormat: function urlFormat(url) {\n return util.url.format(url);\n },\n\n queryStringParse: function queryStringParse(qs) {\n return util.querystring.parse(qs);\n },\n\n queryParamsToString: function queryParamsToString(params) {\n var items = [];\n var escape = util.uriEscape;\n var sortedKeys = Object.keys(params).sort();\n\n util.arrayEach(sortedKeys, function(name) {\n var value = params[name];\n var ename = escape(name);\n var result = ename + '=';\n if (Array.isArray(value)) {\n var vals = [];\n util.arrayEach(value, function(item) { vals.push(escape(item)); });\n result = ename + '=' + vals.sort().join('&' + ename + '=');\n } else if (value !== undefined && value !== null) {\n result = ename + '=' + escape(value);\n }\n items.push(result);\n });\n\n return items.join('&');\n },\n\n readFileSync: function readFileSync(path) {\n if (util.isBrowser()) return null;\n return require('fs').readFileSync(path, 'utf-8');\n },\n\n base64: {\n encode: function encode64(string) {\n if (typeof string === 'number') {\n throw util.error(new Error('Cannot base64 encode number ' + string));\n }\n if (string === null || typeof string === 'undefined') {\n return string;\n }\n var buf = util.buffer.toBuffer(string);\n return buf.toString('base64');\n },\n\n decode: function decode64(string) {\n if (typeof string === 'number') {\n throw util.error(new Error('Cannot base64 decode number ' + string));\n }\n if (string === null || typeof string === 'undefined') {\n return string;\n }\n return util.buffer.toBuffer(string, 'base64');\n }\n\n },\n\n buffer: {\n /**\n * Buffer constructor for Node buffer and buffer pollyfill\n */\n toBuffer: function(data, encoding) {\n return (typeof util.Buffer.from === 'function' && util.Buffer.from !== Uint8Array.from) ?\n util.Buffer.from(data, encoding) : new util.Buffer(data, encoding);\n },\n\n alloc: function(size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new Error('size passed to alloc must be a number.');\n }\n if (typeof util.Buffer.alloc === 'function') {\n return util.Buffer.alloc(size, fill, encoding);\n } else {\n var buf = new util.Buffer(size);\n if (fill !== undefined && typeof buf.fill === 'function') {\n buf.fill(fill, undefined, undefined, encoding);\n }\n return buf;\n }\n },\n\n toStream: function toStream(buffer) {\n if (!util.Buffer.isBuffer(buffer)) buffer = util.buffer.toBuffer(buffer);\n\n var readable = new (util.stream.Readable)();\n var pos = 0;\n readable._read = function(size) {\n if (pos >= buffer.length) return readable.push(null);\n\n var end = pos + size;\n if (end > buffer.length) end = buffer.length;\n readable.push(buffer.slice(pos, end));\n pos = end;\n };\n\n return readable;\n },\n\n /**\n * Concatenates a list of Buffer objects.\n */\n concat: function(buffers) {\n var length = 0,\n offset = 0,\n buffer = null, i;\n\n for (i = 0; i < buffers.length; i++) {\n length += buffers[i].length;\n }\n\n buffer = util.buffer.alloc(length);\n\n for (i = 0; i < buffers.length; i++) {\n buffers[i].copy(buffer, offset);\n offset += buffers[i].length;\n }\n\n return buffer;\n }\n },\n\n string: {\n byteLength: function byteLength(string) {\n if (string === null || string === undefined) return 0;\n if (typeof string === 'string') string = util.buffer.toBuffer(string);\n\n if (typeof string.byteLength === 'number') {\n return string.byteLength;\n } else if (typeof string.length === 'number') {\n return string.length;\n } else if (typeof string.size === 'number') {\n return string.size;\n } else if (typeof string.path === 'string') {\n return require('fs').lstatSync(string.path).size;\n } else {\n throw util.error(new Error('Cannot determine length of ' + string),\n { object: string });\n }\n },\n\n upperFirst: function upperFirst(string) {\n return string[0].toUpperCase() + string.substr(1);\n },\n\n lowerFirst: function lowerFirst(string) {\n return string[0].toLowerCase() + string.substr(1);\n }\n },\n\n ini: {\n parse: function string(ini) {\n var currentSection, map = {};\n util.arrayEach(ini.split(/\\r?\\n/), function(line) {\n line = line.split(/(^|\\s)[;#]/)[0].trim(); // remove comments and trim\n var isSection = line[0] === '[' && line[line.length - 1] === ']';\n if (isSection) {\n currentSection = line.substring(1, line.length - 1);\n if (currentSection === '__proto__' || currentSection.split(/\\s/)[1] === '__proto__') {\n throw util.error(\n new Error('Cannot load profile name \\'' + currentSection + '\\' from shared ini file.')\n );\n }\n } else if (currentSection) {\n var indexOfEqualsSign = line.indexOf('=');\n var start = 0;\n var end = line.length - 1;\n var isAssignment =\n indexOfEqualsSign !== -1 && indexOfEqualsSign !== start && indexOfEqualsSign !== end;\n\n if (isAssignment) {\n var name = line.substring(0, indexOfEqualsSign).trim();\n var value = line.substring(indexOfEqualsSign + 1).trim();\n\n map[currentSection] = map[currentSection] || {};\n map[currentSection][name] = value;\n }\n }\n });\n\n return map;\n }\n },\n\n fn: {\n noop: function() {},\n callback: function (err) { if (err) throw err; },\n\n /**\n * Turn a synchronous function into as \"async\" function by making it call\n * a callback. The underlying function is called with all but the last argument,\n * which is treated as the callback. The callback is passed passed a first argument\n * of null on success to mimick standard node callbacks.\n */\n makeAsync: function makeAsync(fn, expectedArgs) {\n if (expectedArgs && expectedArgs <= fn.length) {\n return fn;\n }\n\n return function() {\n var args = Array.prototype.slice.call(arguments, 0);\n var callback = args.pop();\n var result = fn.apply(null, args);\n callback(result);\n };\n }\n },\n\n /**\n * Date and time utility functions.\n */\n date: {\n\n /**\n * @return [Date] the current JavaScript date object. Since all\n * AWS services rely on this date object, you can override\n * this function to provide a special time value to AWS service\n * requests.\n */\n getDate: function getDate() {\n if (!AWS) AWS = require('./core');\n if (AWS.config.systemClockOffset) { // use offset when non-zero\n return new Date(new Date().getTime() + AWS.config.systemClockOffset);\n } else {\n return new Date();\n }\n },\n\n /**\n * @return [String] the date in ISO-8601 format\n */\n iso8601: function iso8601(date) {\n if (date === undefined) { date = util.date.getDate(); }\n return date.toISOString().replace(/\\.\\d{3}Z$/, 'Z');\n },\n\n /**\n * @return [String] the date in RFC 822 format\n */\n rfc822: function rfc822(date) {\n if (date === undefined) { date = util.date.getDate(); }\n return date.toUTCString();\n },\n\n /**\n * @return [Integer] the UNIX timestamp value for the current time\n */\n unixTimestamp: function unixTimestamp(date) {\n if (date === undefined) { date = util.date.getDate(); }\n return date.getTime() / 1000;\n },\n\n /**\n * @param [String,number,Date] date\n * @return [Date]\n */\n from: function format(date) {\n if (typeof date === 'number') {\n return new Date(date * 1000); // unix timestamp\n } else {\n return new Date(date);\n }\n },\n\n /**\n * Given a Date or date-like value, this function formats the\n * date into a string of the requested value.\n * @param [String,number,Date] date\n * @param [String] formatter Valid formats are:\n # * 'iso8601'\n # * 'rfc822'\n # * 'unixTimestamp'\n * @return [String]\n */\n format: function format(date, formatter) {\n if (!formatter) formatter = 'iso8601';\n return util.date[formatter](util.date.from(date));\n },\n\n parseTimestamp: function parseTimestamp(value) {\n if (typeof value === 'number') { // unix timestamp (number)\n return new Date(value * 1000);\n } else if (value.match(/^\\d+$/)) { // unix timestamp\n return new Date(value * 1000);\n } else if (value.match(/^\\d{4}/)) { // iso8601\n return new Date(value);\n } else if (value.match(/^\\w{3},/)) { // rfc822\n return new Date(value);\n } else {\n throw util.error(\n new Error('unhandled timestamp format: ' + value),\n {code: 'TimestampParserError'});\n }\n }\n\n },\n\n crypto: {\n crc32Table: [\n 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419,\n 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4,\n 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07,\n 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,\n 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856,\n 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9,\n 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4,\n 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,\n 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3,\n 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A,\n 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599,\n 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,\n 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190,\n 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F,\n 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E,\n 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,\n 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED,\n 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950,\n 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3,\n 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,\n 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A,\n 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5,\n 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010,\n 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,\n 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17,\n 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6,\n 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615,\n 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,\n 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344,\n 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB,\n 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A,\n 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,\n 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1,\n 0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C,\n 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF,\n 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,\n 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE,\n 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31,\n 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C,\n 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,\n 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B,\n 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242,\n 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1,\n 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,\n 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278,\n 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7,\n 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66,\n 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,\n 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605,\n 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8,\n 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B,\n 0x2D02EF8D],\n\n crc32: function crc32(data) {\n var tbl = util.crypto.crc32Table;\n var crc = 0 ^ -1;\n\n if (typeof data === 'string') {\n data = util.buffer.toBuffer(data);\n }\n\n for (var i = 0; i < data.length; i++) {\n var code = data.readUInt8(i);\n crc = (crc >>> 8) ^ tbl[(crc ^ code) & 0xFF];\n }\n return (crc ^ -1) >>> 0;\n },\n\n hmac: function hmac(key, string, digest, fn) {\n if (!digest) digest = 'binary';\n if (digest === 'buffer') { digest = undefined; }\n if (!fn) fn = 'sha256';\n if (typeof string === 'string') string = util.buffer.toBuffer(string);\n return util.crypto.lib.createHmac(fn, key).update(string).digest(digest);\n },\n\n md5: function md5(data, digest, callback) {\n return util.crypto.hash('md5', data, digest, callback);\n },\n\n sha256: function sha256(data, digest, callback) {\n return util.crypto.hash('sha256', data, digest, callback);\n },\n\n hash: function(algorithm, data, digest, callback) {\n var hash = util.crypto.createHash(algorithm);\n if (!digest) { digest = 'binary'; }\n if (digest === 'buffer') { digest = undefined; }\n if (typeof data === 'string') data = util.buffer.toBuffer(data);\n var sliceFn = util.arraySliceFn(data);\n var isBuffer = util.Buffer.isBuffer(data);\n //Identifying objects with an ArrayBuffer as buffers\n if (util.isBrowser() && typeof ArrayBuffer !== 'undefined' && data && data.buffer instanceof ArrayBuffer) isBuffer = true;\n\n if (callback && typeof data === 'object' &&\n typeof data.on === 'function' && !isBuffer) {\n data.on('data', function(chunk) { hash.update(chunk); });\n data.on('error', function(err) { callback(err); });\n data.on('end', function() { callback(null, hash.digest(digest)); });\n } else if (callback && sliceFn && !isBuffer &&\n typeof FileReader !== 'undefined') {\n // this might be a File/Blob\n var index = 0, size = 1024 * 512;\n var reader = new FileReader();\n reader.onerror = function() {\n callback(new Error('Failed to read data.'));\n };\n reader.onload = function() {\n var buf = new util.Buffer(new Uint8Array(reader.result));\n hash.update(buf);\n index += buf.length;\n reader._continueReading();\n };\n reader._continueReading = function() {\n if (index >= data.size) {\n callback(null, hash.digest(digest));\n return;\n }\n\n var back = index + size;\n if (back > data.size) back = data.size;\n reader.readAsArrayBuffer(sliceFn.call(data, index, back));\n };\n\n reader._continueReading();\n } else {\n if (util.isBrowser() && typeof data === 'object' && !isBuffer) {\n data = new util.Buffer(new Uint8Array(data));\n }\n var out = hash.update(data).digest(digest);\n if (callback) callback(null, out);\n return out;\n }\n },\n\n toHex: function toHex(data) {\n var out = [];\n for (var i = 0; i < data.length; i++) {\n out.push(('0' + data.charCodeAt(i).toString(16)).substr(-2, 2));\n }\n return out.join('');\n },\n\n createHash: function createHash(algorithm) {\n return util.crypto.lib.createHash(algorithm);\n }\n\n },\n\n /** @!ignore */\n\n /* Abort constant */\n abort: {},\n\n each: function each(object, iterFunction) {\n for (var key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n var ret = iterFunction.call(this, key, object[key]);\n if (ret === util.abort) break;\n }\n }\n },\n\n arrayEach: function arrayEach(array, iterFunction) {\n for (var idx in array) {\n if (Object.prototype.hasOwnProperty.call(array, idx)) {\n var ret = iterFunction.call(this, array[idx], parseInt(idx, 10));\n if (ret === util.abort) break;\n }\n }\n },\n\n update: function update(obj1, obj2) {\n util.each(obj2, function iterator(key, item) {\n obj1[key] = item;\n });\n return obj1;\n },\n\n merge: function merge(obj1, obj2) {\n return util.update(util.copy(obj1), obj2);\n },\n\n copy: function copy(object) {\n if (object === null || object === undefined) return object;\n var dupe = {};\n // jshint forin:false\n for (var key in object) {\n dupe[key] = object[key];\n }\n return dupe;\n },\n\n isEmpty: function isEmpty(obj) {\n for (var prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n return false;\n }\n }\n return true;\n },\n\n arraySliceFn: function arraySliceFn(obj) {\n var fn = obj.slice || obj.webkitSlice || obj.mozSlice;\n return typeof fn === 'function' ? fn : null;\n },\n\n isType: function isType(obj, type) {\n // handle cross-\"frame\" objects\n if (typeof type === 'function') type = util.typeName(type);\n return Object.prototype.toString.call(obj) === '[object ' + type + ']';\n },\n\n typeName: function typeName(type) {\n if (Object.prototype.hasOwnProperty.call(type, 'name')) return type.name;\n var str = type.toString();\n var match = str.match(/^\\s*function (.+)\\(/);\n return match ? match[1] : str;\n },\n\n error: function error(err, options) {\n var originalError = null;\n if (typeof err.message === 'string' && err.message !== '') {\n if (typeof options === 'string' || (options && options.message)) {\n originalError = util.copy(err);\n originalError.message = err.message;\n }\n }\n err.message = err.message || null;\n\n if (typeof options === 'string') {\n err.message = options;\n } else if (typeof options === 'object' && options !== null) {\n util.update(err, options);\n if (options.message)\n err.message = options.message;\n if (options.code || options.name)\n err.code = options.code || options.name;\n if (options.stack)\n err.stack = options.stack;\n }\n\n if (typeof Object.defineProperty === 'function') {\n Object.defineProperty(err, 'name', {writable: true, enumerable: false});\n Object.defineProperty(err, 'message', {enumerable: true});\n }\n\n err.name = String(options && options.name || err.name || err.code || 'Error');\n err.time = new Date();\n\n if (originalError) {\n err.originalError = originalError;\n }\n\n\n for (var key in options || {}) {\n if (key[0] === '[' && key[key.length - 1] === ']') {\n key = key.slice(1, -1);\n if (key === 'code' || key === 'message') {\n continue;\n }\n err['[' + key + ']'] = 'See error.' + key + ' for details.';\n Object.defineProperty(err, key, {\n value: err[key] || (options && options[key]) || (originalError && originalError[key]),\n enumerable: false,\n writable: true\n });\n }\n }\n\n return err;\n },\n\n /**\n * @api private\n */\n inherit: function inherit(klass, features) {\n var newObject = null;\n if (features === undefined) {\n features = klass;\n klass = Object;\n newObject = {};\n } else {\n var ctor = function ConstructorWrapper() {};\n ctor.prototype = klass.prototype;\n newObject = new ctor();\n }\n\n // constructor not supplied, create pass-through ctor\n if (features.constructor === Object) {\n features.constructor = function() {\n if (klass !== Object) {\n return klass.apply(this, arguments);\n }\n };\n }\n\n features.constructor.prototype = newObject;\n util.update(features.constructor.prototype, features);\n features.constructor.__super__ = klass;\n return features.constructor;\n },\n\n /**\n * @api private\n */\n mixin: function mixin() {\n var klass = arguments[0];\n for (var i = 1; i < arguments.length; i++) {\n // jshint forin:false\n for (var prop in arguments[i].prototype) {\n var fn = arguments[i].prototype[prop];\n if (prop !== 'constructor') {\n klass.prototype[prop] = fn;\n }\n }\n }\n return klass;\n },\n\n /**\n * @api private\n */\n hideProperties: function hideProperties(obj, props) {\n if (typeof Object.defineProperty !== 'function') return;\n\n util.arrayEach(props, function (key) {\n Object.defineProperty(obj, key, {\n enumerable: false, writable: true, configurable: true });\n });\n },\n\n /**\n * @api private\n */\n property: function property(obj, name, value, enumerable, isValue) {\n var opts = {\n configurable: true,\n enumerable: enumerable !== undefined ? enumerable : true\n };\n if (typeof value === 'function' && !isValue) {\n opts.get = value;\n }\n else {\n opts.value = value; opts.writable = true;\n }\n\n Object.defineProperty(obj, name, opts);\n },\n\n /**\n * @api private\n */\n memoizedProperty: function memoizedProperty(obj, name, get, enumerable) {\n var cachedValue = null;\n\n // build enumerable attribute for each value with lazy accessor.\n util.property(obj, name, function() {\n if (cachedValue === null) {\n cachedValue = get();\n }\n return cachedValue;\n }, enumerable);\n },\n\n /**\n * TODO Remove in major version revision\n * This backfill populates response data without the\n * top-level payload name.\n *\n * @api private\n */\n hoistPayloadMember: function hoistPayloadMember(resp) {\n var req = resp.request;\n var operationName = req.operation;\n var operation = req.service.api.operations[operationName];\n var output = operation.output;\n if (output.payload && !operation.hasEventOutput) {\n var payloadMember = output.members[output.payload];\n var responsePayload = resp.data[output.payload];\n if (payloadMember.type === 'structure') {\n util.each(responsePayload, function(key, value) {\n util.property(resp.data, key, value, false);\n });\n }\n }\n },\n\n /**\n * Compute SHA-256 checksums of streams\n *\n * @api private\n */\n computeSha256: function computeSha256(body, done) {\n if (util.isNode()) {\n var Stream = util.stream.Stream;\n var fs = require('fs');\n if (typeof Stream === 'function' && body instanceof Stream) {\n if (typeof body.path === 'string') { // assume file object\n var settings = {};\n if (typeof body.start === 'number') {\n settings.start = body.start;\n }\n if (typeof body.end === 'number') {\n settings.end = body.end;\n }\n body = fs.createReadStream(body.path, settings);\n } else { // TODO support other stream types\n return done(new Error('Non-file stream objects are ' +\n 'not supported with SigV4'));\n }\n }\n }\n\n util.crypto.sha256(body, 'hex', function(err, sha) {\n if (err) done(err);\n else done(null, sha);\n });\n },\n\n /**\n * @api private\n */\n isClockSkewed: function isClockSkewed(serverTime) {\n if (serverTime) {\n util.property(AWS.config, 'isClockSkewed',\n Math.abs(new Date().getTime() - serverTime) >= 300000, false);\n return AWS.config.isClockSkewed;\n }\n },\n\n applyClockOffset: function applyClockOffset(serverTime) {\n if (serverTime)\n AWS.config.systemClockOffset = serverTime - new Date().getTime();\n },\n\n /**\n * @api private\n */\n extractRequestId: function extractRequestId(resp) {\n var requestId = resp.httpResponse.headers['x-amz-request-id'] ||\n resp.httpResponse.headers['x-amzn-requestid'];\n\n if (!requestId && resp.data && resp.data.ResponseMetadata) {\n requestId = resp.data.ResponseMetadata.RequestId;\n }\n\n if (requestId) {\n resp.requestId = requestId;\n }\n\n if (resp.error) {\n resp.error.requestId = requestId;\n }\n },\n\n /**\n * @api private\n */\n addPromises: function addPromises(constructors, PromiseDependency) {\n var deletePromises = false;\n if (PromiseDependency === undefined && AWS && AWS.config) {\n PromiseDependency = AWS.config.getPromisesDependency();\n }\n if (PromiseDependency === undefined && typeof Promise !== 'undefined') {\n PromiseDependency = Promise;\n }\n if (typeof PromiseDependency !== 'function') deletePromises = true;\n if (!Array.isArray(constructors)) constructors = [constructors];\n\n for (var ind = 0; ind < constructors.length; ind++) {\n var constructor = constructors[ind];\n if (deletePromises) {\n if (constructor.deletePromisesFromClass) {\n constructor.deletePromisesFromClass();\n }\n } else if (constructor.addPromisesToClass) {\n constructor.addPromisesToClass(PromiseDependency);\n }\n }\n },\n\n /**\n * @api private\n * Return a function that will return a promise whose fate is decided by the\n * callback behavior of the given method with `methodName`. The method to be\n * promisified should conform to node.js convention of accepting a callback as\n * last argument and calling that callback with error as the first argument\n * and success value on the second argument.\n */\n promisifyMethod: function promisifyMethod(methodName, PromiseDependency) {\n return function promise() {\n var self = this;\n var args = Array.prototype.slice.call(arguments);\n return new PromiseDependency(function(resolve, reject) {\n args.push(function(err, data) {\n if (err) {\n reject(err);\n } else {\n resolve(data);\n }\n });\n self[methodName].apply(self, args);\n });\n };\n },\n\n /**\n * @api private\n */\n isDualstackAvailable: function isDualstackAvailable(service) {\n if (!service) return false;\n var metadata = require('../apis/metadata.json');\n if (typeof service !== 'string') service = service.serviceIdentifier;\n if (typeof service !== 'string' || !metadata.hasOwnProperty(service)) return false;\n return !!metadata[service].dualstackAvailable;\n },\n\n /**\n * @api private\n */\n calculateRetryDelay: function calculateRetryDelay(retryCount, retryDelayOptions, err) {\n if (!retryDelayOptions) retryDelayOptions = {};\n var customBackoff = retryDelayOptions.customBackoff || null;\n if (typeof customBackoff === 'function') {\n return customBackoff(retryCount, err);\n }\n var base = typeof retryDelayOptions.base === 'number' ? retryDelayOptions.base : 100;\n var delay = Math.random() * (Math.pow(2, retryCount) * base);\n return delay;\n },\n\n /**\n * @api private\n */\n handleRequestWithRetries: function handleRequestWithRetries(httpRequest, options, cb) {\n if (!options) options = {};\n var http = AWS.HttpClient.getInstance();\n var httpOptions = options.httpOptions || {};\n var retryCount = 0;\n\n var errCallback = function(err) {\n var maxRetries = options.maxRetries || 0;\n if (err && err.code === 'TimeoutError') err.retryable = true;\n\n // Call `calculateRetryDelay()` only when relevant, see #3401\n if (err && err.retryable && retryCount < maxRetries) {\n var delay = util.calculateRetryDelay(retryCount, options.retryDelayOptions, err);\n if (delay >= 0) {\n retryCount++;\n setTimeout(sendRequest, delay + (err.retryAfter || 0));\n return;\n }\n }\n cb(err);\n };\n\n var sendRequest = function() {\n var data = '';\n http.handleRequest(httpRequest, httpOptions, function(httpResponse) {\n httpResponse.on('data', function(chunk) { data += chunk.toString(); });\n httpResponse.on('end', function() {\n var statusCode = httpResponse.statusCode;\n if (statusCode < 300) {\n cb(null, data);\n } else {\n var retryAfter = parseInt(httpResponse.headers['retry-after'], 10) * 1000 || 0;\n var err = util.error(new Error(),\n {\n statusCode: statusCode,\n retryable: statusCode >= 500 || statusCode === 429\n }\n );\n if (retryAfter && err.retryable) err.retryAfter = retryAfter;\n errCallback(err);\n }\n });\n }, errCallback);\n };\n\n AWS.util.defer(sendRequest);\n },\n\n /**\n * @api private\n */\n uuid: {\n v4: function uuidV4() {\n return require('uuid').v4();\n }\n },\n\n /**\n * @api private\n */\n convertPayloadToString: function convertPayloadToString(resp) {\n var req = resp.request;\n var operation = req.operation;\n var rules = req.service.api.operations[operation].output || {};\n if (rules.payload && resp.data[rules.payload]) {\n resp.data[rules.payload] = resp.data[rules.payload].toString();\n }\n },\n\n /**\n * @api private\n */\n defer: function defer(callback) {\n if (typeof process === 'object' && typeof process.nextTick === 'function') {\n process.nextTick(callback);\n } else if (typeof setImmediate === 'function') {\n setImmediate(callback);\n } else {\n setTimeout(callback, 0);\n }\n },\n\n /**\n * @api private\n */\n getRequestPayloadShape: function getRequestPayloadShape(req) {\n var operations = req.service.api.operations;\n if (!operations) return undefined;\n var operation = (operations || {})[req.operation];\n if (!operation || !operation.input || !operation.input.payload) return undefined;\n return operation.input.members[operation.input.payload];\n },\n\n getProfilesFromSharedConfig: function getProfilesFromSharedConfig(iniLoader, filename) {\n var profiles = {};\n var profilesFromConfig = {};\n if (process.env[util.configOptInEnv]) {\n var profilesFromConfig = iniLoader.loadFrom({\n isConfig: true,\n filename: process.env[util.sharedConfigFileEnv]\n });\n }\n var profilesFromCreds= {};\n try {\n var profilesFromCreds = iniLoader.loadFrom({\n filename: filename ||\n (process.env[util.configOptInEnv] && process.env[util.sharedCredentialsFileEnv])\n });\n } catch (error) {\n // if using config, assume it is fully descriptive without a credentials file:\n if (!process.env[util.configOptInEnv]) throw error;\n }\n for (var i = 0, profileNames = Object.keys(profilesFromConfig); i < profileNames.length; i++) {\n profiles[profileNames[i]] = objectAssign(profiles[profileNames[i]] || {}, profilesFromConfig[profileNames[i]]);\n }\n for (var i = 0, profileNames = Object.keys(profilesFromCreds); i < profileNames.length; i++) {\n profiles[profileNames[i]] = objectAssign(profiles[profileNames[i]] || {}, profilesFromCreds[profileNames[i]]);\n }\n return profiles;\n\n /**\n * Roughly the semantics of `Object.assign(target, source)`\n */\n function objectAssign(target, source) {\n for (var i = 0, keys = Object.keys(source); i < keys.length; i++) {\n target[keys[i]] = source[keys[i]];\n }\n return target;\n }\n },\n\n /**\n * @api private\n */\n ARN: {\n validate: function validateARN(str) {\n return str && str.indexOf('arn:') === 0 && str.split(':').length >= 6;\n },\n parse: function parseARN(arn) {\n var matched = arn.split(':');\n return {\n partition: matched[1],\n service: matched[2],\n region: matched[3],\n accountId: matched[4],\n resource: matched.slice(5).join(':')\n };\n },\n build: function buildARN(arnObject) {\n if (\n arnObject.service === undefined ||\n arnObject.region === undefined ||\n arnObject.accountId === undefined ||\n arnObject.resource === undefined\n ) throw util.error(new Error('Input ARN object is invalid'));\n return 'arn:'+ (arnObject.partition || 'aws') + ':' + arnObject.service +\n ':' + arnObject.region + ':' + arnObject.accountId + ':' + arnObject.resource;\n }\n },\n\n /**\n * @api private\n */\n defaultProfile: 'default',\n\n /**\n * @api private\n */\n configOptInEnv: 'AWS_SDK_LOAD_CONFIG',\n\n /**\n * @api private\n */\n sharedCredentialsFileEnv: 'AWS_SHARED_CREDENTIALS_FILE',\n\n /**\n * @api private\n */\n sharedConfigFileEnv: 'AWS_CONFIG_FILE',\n\n /**\n * @api private\n */\n imdsDisabledEnv: 'AWS_EC2_METADATA_DISABLED'\n};\n\n/**\n * @api private\n */\nmodule.exports = util;\n","var util = require('../util');\nvar Shape = require('../model/shape');\n\nfunction DomXmlParser() { }\n\nDomXmlParser.prototype.parse = function(xml, shape) {\n if (xml.replace(/^\\s+/, '') === '') return {};\n\n var result, error;\n try {\n if (window.DOMParser) {\n try {\n var parser = new DOMParser();\n result = parser.parseFromString(xml, 'text/xml');\n } catch (syntaxError) {\n throw util.error(new Error('Parse error in document'),\n {\n originalError: syntaxError,\n code: 'XMLParserError',\n retryable: true\n });\n }\n\n if (result.documentElement === null) {\n throw util.error(new Error('Cannot parse empty document.'),\n {\n code: 'XMLParserError',\n retryable: true\n });\n }\n\n var isError = result.getElementsByTagName('parsererror')[0];\n if (isError && (isError.parentNode === result ||\n isError.parentNode.nodeName === 'body' ||\n isError.parentNode.parentNode === result ||\n isError.parentNode.parentNode.nodeName === 'body')) {\n var errorElement = isError.getElementsByTagName('div')[0] || isError;\n throw util.error(new Error(errorElement.textContent || 'Parser error in document'),\n {\n code: 'XMLParserError',\n retryable: true\n });\n }\n } else if (window.ActiveXObject) {\n result = new window.ActiveXObject('Microsoft.XMLDOM');\n result.async = false;\n\n if (!result.loadXML(xml)) {\n throw util.error(new Error('Parse error in document'),\n {\n code: 'XMLParserError',\n retryable: true\n });\n }\n } else {\n throw new Error('Cannot load XML parser');\n }\n } catch (e) {\n error = e;\n }\n\n if (result && result.documentElement && !error) {\n var data = parseXml(result.documentElement, shape);\n var metadata = getElementByTagName(result.documentElement, 'ResponseMetadata');\n if (metadata) {\n data.ResponseMetadata = parseXml(metadata, {});\n }\n return data;\n } else if (error) {\n throw util.error(error || new Error(), {code: 'XMLParserError', retryable: true});\n } else { // empty xml document\n return {};\n }\n};\n\nfunction getElementByTagName(xml, tag) {\n var elements = xml.getElementsByTagName(tag);\n for (var i = 0, iLen = elements.length; i < iLen; i++) {\n if (elements[i].parentNode === xml) {\n return elements[i];\n }\n }\n}\n\nfunction parseXml(xml, shape) {\n if (!shape) shape = {};\n switch (shape.type) {\n case 'structure': return parseStructure(xml, shape);\n case 'map': return parseMap(xml, shape);\n case 'list': return parseList(xml, shape);\n case undefined: case null: return parseUnknown(xml);\n default: return parseScalar(xml, shape);\n }\n}\n\nfunction parseStructure(xml, shape) {\n var data = {};\n if (xml === null) return data;\n\n util.each(shape.members, function(memberName, memberShape) {\n if (memberShape.isXmlAttribute) {\n if (Object.prototype.hasOwnProperty.call(xml.attributes, memberShape.name)) {\n var value = xml.attributes[memberShape.name].value;\n data[memberName] = parseXml({textContent: value}, memberShape);\n }\n } else {\n var xmlChild = memberShape.flattened ? xml :\n getElementByTagName(xml, memberShape.name);\n if (xmlChild) {\n data[memberName] = parseXml(xmlChild, memberShape);\n } else if (\n !memberShape.flattened &&\n memberShape.type === 'list' &&\n !shape.api.xmlNoDefaultLists) {\n data[memberName] = memberShape.defaultValue;\n }\n }\n });\n\n return data;\n}\n\nfunction parseMap(xml, shape) {\n var data = {};\n var xmlKey = shape.key.name || 'key';\n var xmlValue = shape.value.name || 'value';\n var tagName = shape.flattened ? shape.name : 'entry';\n\n var child = xml.firstElementChild;\n while (child) {\n if (child.nodeName === tagName) {\n var key = getElementByTagName(child, xmlKey).textContent;\n var value = getElementByTagName(child, xmlValue);\n data[key] = parseXml(value, shape.value);\n }\n child = child.nextElementSibling;\n }\n return data;\n}\n\nfunction parseList(xml, shape) {\n var data = [];\n var tagName = shape.flattened ? shape.name : (shape.member.name || 'member');\n\n var child = xml.firstElementChild;\n while (child) {\n if (child.nodeName === tagName) {\n data.push(parseXml(child, shape.member));\n }\n child = child.nextElementSibling;\n }\n return data;\n}\n\nfunction parseScalar(xml, shape) {\n if (xml.getAttribute) {\n var encoding = xml.getAttribute('encoding');\n if (encoding === 'base64') {\n shape = new Shape.create({type: encoding});\n }\n }\n\n var text = xml.textContent;\n if (text === '') text = null;\n if (typeof shape.toType === 'function') {\n return shape.toType(text);\n } else {\n return text;\n }\n}\n\nfunction parseUnknown(xml) {\n if (xml === undefined || xml === null) return '';\n\n // empty object\n if (!xml.firstElementChild) {\n if (xml.parentNode.parentNode === null) return {};\n if (xml.childNodes.length === 0) return '';\n else return xml.textContent;\n }\n\n // object, parse as structure\n var shape = {type: 'structure', members: {}};\n var child = xml.firstElementChild;\n while (child) {\n var tag = child.nodeName;\n if (Object.prototype.hasOwnProperty.call(shape.members, tag)) {\n // multiple tags of the same name makes it a list\n shape.members[tag].type = 'list';\n } else {\n shape.members[tag] = {name: tag};\n }\n child = child.nextElementSibling;\n }\n return parseStructure(xml, shape);\n}\n\n/**\n * @api private\n */\nmodule.exports = DomXmlParser;\n","var util = require('../util');\nvar XmlNode = require('./xml-node').XmlNode;\nvar XmlText = require('./xml-text').XmlText;\n\nfunction XmlBuilder() { }\n\nXmlBuilder.prototype.toXML = function(params, shape, rootElement, noEmpty) {\n var xml = new XmlNode(rootElement);\n applyNamespaces(xml, shape, true);\n serialize(xml, params, shape);\n return xml.children.length > 0 || noEmpty ? xml.toString() : '';\n};\n\nfunction serialize(xml, value, shape) {\n switch (shape.type) {\n case 'structure': return serializeStructure(xml, value, shape);\n case 'map': return serializeMap(xml, value, shape);\n case 'list': return serializeList(xml, value, shape);\n default: return serializeScalar(xml, value, shape);\n }\n}\n\nfunction serializeStructure(xml, params, shape) {\n util.arrayEach(shape.memberNames, function(memberName) {\n var memberShape = shape.members[memberName];\n if (memberShape.location !== 'body') return;\n\n var value = params[memberName];\n var name = memberShape.name;\n if (value !== undefined && value !== null) {\n if (memberShape.isXmlAttribute) {\n xml.addAttribute(name, value);\n } else if (memberShape.flattened) {\n serialize(xml, value, memberShape);\n } else {\n var element = new XmlNode(name);\n xml.addChildNode(element);\n applyNamespaces(element, memberShape);\n serialize(element, value, memberShape);\n }\n }\n });\n}\n\nfunction serializeMap(xml, map, shape) {\n var xmlKey = shape.key.name || 'key';\n var xmlValue = shape.value.name || 'value';\n\n util.each(map, function(key, value) {\n var entry = new XmlNode(shape.flattened ? shape.name : 'entry');\n xml.addChildNode(entry);\n\n var entryKey = new XmlNode(xmlKey);\n var entryValue = new XmlNode(xmlValue);\n entry.addChildNode(entryKey);\n entry.addChildNode(entryValue);\n\n serialize(entryKey, key, shape.key);\n serialize(entryValue, value, shape.value);\n });\n}\n\nfunction serializeList(xml, list, shape) {\n if (shape.flattened) {\n util.arrayEach(list, function(value) {\n var name = shape.member.name || shape.name;\n var element = new XmlNode(name);\n xml.addChildNode(element);\n serialize(element, value, shape.member);\n });\n } else {\n util.arrayEach(list, function(value) {\n var name = shape.member.name || 'member';\n var element = new XmlNode(name);\n xml.addChildNode(element);\n serialize(element, value, shape.member);\n });\n }\n}\n\nfunction serializeScalar(xml, value, shape) {\n xml.addChildNode(\n new XmlText(shape.toWireFormat(value))\n );\n}\n\nfunction applyNamespaces(xml, shape, isRoot) {\n var uri, prefix = 'xmlns';\n if (shape.xmlNamespaceUri) {\n uri = shape.xmlNamespaceUri;\n if (shape.xmlNamespacePrefix) prefix += ':' + shape.xmlNamespacePrefix;\n } else if (isRoot && shape.api.xmlNamespaceUri) {\n uri = shape.api.xmlNamespaceUri;\n }\n\n if (uri) xml.addAttribute(prefix, uri);\n}\n\n/**\n * @api private\n */\nmodule.exports = XmlBuilder;\n","/**\n * Escapes characters that can not be in an XML attribute.\n */\nfunction escapeAttribute(value) {\n return value.replace(/&/g, '&').replace(/'/g, ''').replace(//g, '>').replace(/\"/g, '"');\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n escapeAttribute: escapeAttribute\n};\n","/**\n * Escapes characters that can not be in an XML element.\n */\nfunction escapeElement(value) {\n return value.replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\\r/g, ' ')\n .replace(/\\n/g, ' ')\n .replace(/\\u0085/g, '…')\n .replace(/\\u2028/, '
');\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n escapeElement: escapeElement\n};\n","var escapeAttribute = require('./escape-attribute').escapeAttribute;\n\n/**\n * Represents an XML node.\n * @api private\n */\nfunction XmlNode(name, children) {\n if (children === void 0) { children = []; }\n this.name = name;\n this.children = children;\n this.attributes = {};\n}\nXmlNode.prototype.addAttribute = function (name, value) {\n this.attributes[name] = value;\n return this;\n};\nXmlNode.prototype.addChildNode = function (child) {\n this.children.push(child);\n return this;\n};\nXmlNode.prototype.removeAttribute = function (name) {\n delete this.attributes[name];\n return this;\n};\nXmlNode.prototype.toString = function () {\n var hasChildren = Boolean(this.children.length);\n var xmlText = '<' + this.name;\n // add attributes\n var attributes = this.attributes;\n for (var i = 0, attributeNames = Object.keys(attributes); i < attributeNames.length; i++) {\n var attributeName = attributeNames[i];\n var attribute = attributes[attributeName];\n if (typeof attribute !== 'undefined' && attribute !== null) {\n xmlText += ' ' + attributeName + '=\\\"' + escapeAttribute('' + attribute) + '\\\"';\n }\n }\n return xmlText += !hasChildren ? '/>' : '>' + this.children.map(function (c) { return c.toString(); }).join('') + '';\n};\n\n/**\n * @api private\n */\nmodule.exports = {\n XmlNode: XmlNode\n};\n","var escapeElement = require('./escape-element').escapeElement;\n\n/**\n * Represents an XML text value.\n * @api private\n */\nfunction XmlText(value) {\n this.value = value;\n}\n\nXmlText.prototype.toString = function () {\n return escapeElement('' + this.value);\n};\n\n/**\n * @api private\n */\nmodule.exports = {\n XmlText: XmlText\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex; // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n\n return [bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]]].join('');\n}\n\nvar _default = bytesToUuid;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function () {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function () {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function () {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function () {\n return _v4.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes == 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Array(msg.length);\n\n for (var i = 0; i < msg.length; i++) bytes[i] = msg.charCodeAt(i);\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n var i;\n var x;\n var output = [];\n var length32 = input.length * 32;\n var hexTab = '0123456789abcdef';\n var hex;\n\n for (i = 0; i < length32; i += 8) {\n x = input[i >> 5] >>> i % 32 & 0xff;\n hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[(len + 64 >>> 9 << 4) + 14] = len;\n var i;\n var olda;\n var oldb;\n var oldc;\n var oldd;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (i = 0; i < x.length; i += 16) {\n olda = a;\n oldb = b;\n oldc = c;\n oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n var i;\n var output = [];\n output[(input.length >> 2) - 1] = undefined;\n\n for (i = 0; i < output.length; i += 1) {\n output[i] = 0;\n }\n\n var length8 = input.length * 8;\n\n for (i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n// find the complete implementation of crypto (msCrypto) on IE11.\nvar getRandomValues = typeof crypto != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto != 'undefined' && typeof msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto);\nvar rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\nfunction rng() {\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n\n return getRandomValues(rnds8);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes == 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Array(msg.length);\n\n for (var i = 0; i < msg.length; i++) bytes[i] = msg.charCodeAt(i);\n }\n\n bytes.push(0x80);\n var l = bytes.length / 4 + 2;\n var N = Math.ceil(l / 16);\n var M = new Array(N);\n\n for (var i = 0; i < N; i++) {\n M[i] = new Array(16);\n\n for (var j = 0; j < 16; j++) {\n M[i][j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (var i = 0; i < N; i++) {\n var W = new Array(80);\n\n for (var t = 0; t < 16; t++) W[t] = M[i][t];\n\n for (var t = 16; t < 80; t++) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n for (var t = 0; t < 80; t++) {\n var s = Math.floor(t / 20);\n var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _bytesToUuid = _interopRequireDefault(require(\"./bytesToUuid.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : (0, _bytesToUuid.default)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.URL = exports.DNS = void 0;\n\nvar _bytesToUuid = _interopRequireDefault(require(\"./bytesToUuid.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction uuidToBytes(uuid) {\n // Note: We assume we're being passed a valid uuid string\n var bytes = [];\n uuid.replace(/[a-fA-F0-9]{2}/g, function (hex) {\n bytes.push(parseInt(hex, 16));\n });\n return bytes;\n}\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n var bytes = new Array(str.length);\n\n for (var i = 0; i < str.length; i++) {\n bytes[i] = str.charCodeAt(i);\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction _default(name, version, hashfunc) {\n var generateUUID = function (value, namespace, buf, offset) {\n var off = buf && offset || 0;\n if (typeof value == 'string') value = stringToBytes(value);\n if (typeof namespace == 'string') namespace = uuidToBytes(namespace);\n if (!Array.isArray(value)) throw TypeError('value must be an array of bytes');\n if (!Array.isArray(namespace) || namespace.length !== 16) throw TypeError('namespace must be uuid string or an Array of 16 byte values'); // Per 4.3\n\n var bytes = hashfunc(namespace.concat(value));\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n for (var idx = 0; idx < 16; ++idx) {\n buf[off + idx] = bytes[idx];\n }\n }\n\n return buf || (0, _bytesToUuid.default)(bytes);\n }; // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name;\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _bytesToUuid = _interopRequireDefault(require(\"./bytesToUuid.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof options == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n\n options = options || {};\n\n var rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || (0, _bytesToUuid.default)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LRU_1 = require(\"./utils/LRU\");\nvar CACHE_SIZE = 1000;\n/**\n * Inspired node-lru-cache[https://github.com/isaacs/node-lru-cache]\n */\nvar EndpointCache = /** @class */ (function () {\n function EndpointCache(maxSize) {\n if (maxSize === void 0) { maxSize = CACHE_SIZE; }\n this.maxSize = maxSize;\n this.cache = new LRU_1.LRUCache(maxSize);\n }\n ;\n Object.defineProperty(EndpointCache.prototype, \"size\", {\n get: function () {\n return this.cache.length;\n },\n enumerable: true,\n configurable: true\n });\n EndpointCache.prototype.put = function (key, value) {\n var keyString = typeof key !== 'string' ? EndpointCache.getKeyString(key) : key;\n var endpointRecord = this.populateValue(value);\n this.cache.put(keyString, endpointRecord);\n };\n EndpointCache.prototype.get = function (key) {\n var keyString = typeof key !== 'string' ? EndpointCache.getKeyString(key) : key;\n var now = Date.now();\n var records = this.cache.get(keyString);\n if (records) {\n for (var i = records.length-1; i >= 0; i--) {\n var record = records[i];\n if (record.Expire < now) {\n records.splice(i, 1);\n }\n }\n if (records.length === 0) {\n this.cache.remove(keyString);\n return undefined;\n }\n }\n return records;\n };\n EndpointCache.getKeyString = function (key) {\n var identifiers = [];\n var identifierNames = Object.keys(key).sort();\n for (var i = 0; i < identifierNames.length; i++) {\n var identifierName = identifierNames[i];\n if (key[identifierName] === undefined)\n continue;\n identifiers.push(key[identifierName]);\n }\n return identifiers.join(' ');\n };\n EndpointCache.prototype.populateValue = function (endpoints) {\n var now = Date.now();\n return endpoints.map(function (endpoint) { return ({\n Address: endpoint.Address || '',\n Expire: now + (endpoint.CachePeriodInMinutes || 1) * 60 * 1000\n }); });\n };\n EndpointCache.prototype.empty = function () {\n this.cache.empty();\n };\n EndpointCache.prototype.remove = function (key) {\n var keyString = typeof key !== 'string' ? EndpointCache.getKeyString(key) : key;\n this.cache.remove(keyString);\n };\n return EndpointCache;\n}());\nexports.EndpointCache = EndpointCache;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedListNode = /** @class */ (function () {\n function LinkedListNode(key, value) {\n this.key = key;\n this.value = value;\n }\n return LinkedListNode;\n}());\nvar LRUCache = /** @class */ (function () {\n function LRUCache(size) {\n this.nodeMap = {};\n this.size = 0;\n if (typeof size !== 'number' || size < 1) {\n throw new Error('Cache size can only be positive number');\n }\n this.sizeLimit = size;\n }\n Object.defineProperty(LRUCache.prototype, \"length\", {\n get: function () {\n return this.size;\n },\n enumerable: true,\n configurable: true\n });\n LRUCache.prototype.prependToList = function (node) {\n if (!this.headerNode) {\n this.tailNode = node;\n }\n else {\n this.headerNode.prev = node;\n node.next = this.headerNode;\n }\n this.headerNode = node;\n this.size++;\n };\n LRUCache.prototype.removeFromTail = function () {\n if (!this.tailNode) {\n return undefined;\n }\n var node = this.tailNode;\n var prevNode = node.prev;\n if (prevNode) {\n prevNode.next = undefined;\n }\n node.prev = undefined;\n this.tailNode = prevNode;\n this.size--;\n return node;\n };\n LRUCache.prototype.detachFromList = function (node) {\n if (this.headerNode === node) {\n this.headerNode = node.next;\n }\n if (this.tailNode === node) {\n this.tailNode = node.prev;\n }\n if (node.prev) {\n node.prev.next = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n }\n node.next = undefined;\n node.prev = undefined;\n this.size--;\n };\n LRUCache.prototype.get = function (key) {\n if (this.nodeMap[key]) {\n var node = this.nodeMap[key];\n this.detachFromList(node);\n this.prependToList(node);\n return node.value;\n }\n };\n LRUCache.prototype.remove = function (key) {\n if (this.nodeMap[key]) {\n var node = this.nodeMap[key];\n this.detachFromList(node);\n delete this.nodeMap[key];\n }\n };\n LRUCache.prototype.put = function (key, value) {\n if (this.nodeMap[key]) {\n this.remove(key);\n }\n else if (this.size === this.sizeLimit) {\n var tailNode = this.removeFromTail();\n var key_1 = tailNode.key;\n delete this.nodeMap[key_1];\n }\n var newNode = new LinkedListNode(key, value);\n this.nodeMap[key] = newNode;\n this.prependToList(newNode);\n };\n LRUCache.prototype.empty = function () {\n var keys = Object.keys(this.nodeMap);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var node = this.nodeMap[key];\n this.detachFromList(node);\n delete this.nodeMap[key];\n }\n };\n return LRUCache;\n}());\nexports.LRUCache = LRUCache;","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = require('es-define-property');\nvar $max = GetIntrinsic('%Math.max%');\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\n/** @type {import('.')} */\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar test = {\n\t__proto__: null,\n\tfoo: {}\n};\n\nvar $Object = Object;\n\n/** @type {import('.')} */\nmodule.exports = function hasProto() {\n\t// @ts-expect-error: TS errors on an inherited property for some reason\n\treturn { __proto__: test }.foo === test.foo\n\t\t&& !(test instanceof $Object);\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","(function(exports) {\n \"use strict\";\n\n function isArray(obj) {\n if (obj !== null) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n } else {\n return false;\n }\n }\n\n function isObject(obj) {\n if (obj !== null) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n } else {\n return false;\n }\n }\n\n function strictDeepEqual(first, second) {\n // Check the scalar case first.\n if (first === second) {\n return true;\n }\n\n // Check if they are the same type.\n var firstType = Object.prototype.toString.call(first);\n if (firstType !== Object.prototype.toString.call(second)) {\n return false;\n }\n // We know that first and second have the same type so we can just check the\n // first type from now on.\n if (isArray(first) === true) {\n // Short circuit if they're not the same length;\n if (first.length !== second.length) {\n return false;\n }\n for (var i = 0; i < first.length; i++) {\n if (strictDeepEqual(first[i], second[i]) === false) {\n return false;\n }\n }\n return true;\n }\n if (isObject(first) === true) {\n // An object is equal if it has the same key/value pairs.\n var keysSeen = {};\n for (var key in first) {\n if (hasOwnProperty.call(first, key)) {\n if (strictDeepEqual(first[key], second[key]) === false) {\n return false;\n }\n keysSeen[key] = true;\n }\n }\n // Now check that there aren't any keys in second that weren't\n // in first.\n for (var key2 in second) {\n if (hasOwnProperty.call(second, key2)) {\n if (keysSeen[key2] !== true) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n }\n\n function isFalse(obj) {\n // From the spec:\n // A false value corresponds to the following values:\n // Empty list\n // Empty object\n // Empty string\n // False boolean\n // null value\n\n // First check the scalar values.\n if (obj === \"\" || obj === false || obj === null) {\n return true;\n } else if (isArray(obj) && obj.length === 0) {\n // Check for an empty array.\n return true;\n } else if (isObject(obj)) {\n // Check for an empty object.\n for (var key in obj) {\n // If there are any keys, then\n // the object is not empty so the object\n // is not false.\n if (obj.hasOwnProperty(key)) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n }\n\n function objValues(obj) {\n var keys = Object.keys(obj);\n var values = [];\n for (var i = 0; i < keys.length; i++) {\n values.push(obj[keys[i]]);\n }\n return values;\n }\n\n function merge(a, b) {\n var merged = {};\n for (var key in a) {\n merged[key] = a[key];\n }\n for (var key2 in b) {\n merged[key2] = b[key2];\n }\n return merged;\n }\n\n var trimLeft;\n if (typeof String.prototype.trimLeft === \"function\") {\n trimLeft = function(str) {\n return str.trimLeft();\n };\n } else {\n trimLeft = function(str) {\n return str.match(/^\\s*(.*)/)[1];\n };\n }\n\n // Type constants used to define functions.\n var TYPE_NUMBER = 0;\n var TYPE_ANY = 1;\n var TYPE_STRING = 2;\n var TYPE_ARRAY = 3;\n var TYPE_OBJECT = 4;\n var TYPE_BOOLEAN = 5;\n var TYPE_EXPREF = 6;\n var TYPE_NULL = 7;\n var TYPE_ARRAY_NUMBER = 8;\n var TYPE_ARRAY_STRING = 9;\n var TYPE_NAME_TABLE = {\n 0: 'number',\n 1: 'any',\n 2: 'string',\n 3: 'array',\n 4: 'object',\n 5: 'boolean',\n 6: 'expression',\n 7: 'null',\n 8: 'Array',\n 9: 'Array'\n };\n\n var TOK_EOF = \"EOF\";\n var TOK_UNQUOTEDIDENTIFIER = \"UnquotedIdentifier\";\n var TOK_QUOTEDIDENTIFIER = \"QuotedIdentifier\";\n var TOK_RBRACKET = \"Rbracket\";\n var TOK_RPAREN = \"Rparen\";\n var TOK_COMMA = \"Comma\";\n var TOK_COLON = \"Colon\";\n var TOK_RBRACE = \"Rbrace\";\n var TOK_NUMBER = \"Number\";\n var TOK_CURRENT = \"Current\";\n var TOK_EXPREF = \"Expref\";\n var TOK_PIPE = \"Pipe\";\n var TOK_OR = \"Or\";\n var TOK_AND = \"And\";\n var TOK_EQ = \"EQ\";\n var TOK_GT = \"GT\";\n var TOK_LT = \"LT\";\n var TOK_GTE = \"GTE\";\n var TOK_LTE = \"LTE\";\n var TOK_NE = \"NE\";\n var TOK_FLATTEN = \"Flatten\";\n var TOK_STAR = \"Star\";\n var TOK_FILTER = \"Filter\";\n var TOK_DOT = \"Dot\";\n var TOK_NOT = \"Not\";\n var TOK_LBRACE = \"Lbrace\";\n var TOK_LBRACKET = \"Lbracket\";\n var TOK_LPAREN= \"Lparen\";\n var TOK_LITERAL= \"Literal\";\n\n // The \"&\", \"[\", \"<\", \">\" tokens\n // are not in basicToken because\n // there are two token variants\n // (\"&&\", \"[?\", \"<=\", \">=\"). This is specially handled\n // below.\n\n var basicTokens = {\n \".\": TOK_DOT,\n \"*\": TOK_STAR,\n \",\": TOK_COMMA,\n \":\": TOK_COLON,\n \"{\": TOK_LBRACE,\n \"}\": TOK_RBRACE,\n \"]\": TOK_RBRACKET,\n \"(\": TOK_LPAREN,\n \")\": TOK_RPAREN,\n \"@\": TOK_CURRENT\n };\n\n var operatorStartToken = {\n \"<\": true,\n \">\": true,\n \"=\": true,\n \"!\": true\n };\n\n var skipChars = {\n \" \": true,\n \"\\t\": true,\n \"\\n\": true\n };\n\n\n function isAlpha(ch) {\n return (ch >= \"a\" && ch <= \"z\") ||\n (ch >= \"A\" && ch <= \"Z\") ||\n ch === \"_\";\n }\n\n function isNum(ch) {\n return (ch >= \"0\" && ch <= \"9\") ||\n ch === \"-\";\n }\n function isAlphaNum(ch) {\n return (ch >= \"a\" && ch <= \"z\") ||\n (ch >= \"A\" && ch <= \"Z\") ||\n (ch >= \"0\" && ch <= \"9\") ||\n ch === \"_\";\n }\n\n function Lexer() {\n }\n Lexer.prototype = {\n tokenize: function(stream) {\n var tokens = [];\n this._current = 0;\n var start;\n var identifier;\n var token;\n while (this._current < stream.length) {\n if (isAlpha(stream[this._current])) {\n start = this._current;\n identifier = this._consumeUnquotedIdentifier(stream);\n tokens.push({type: TOK_UNQUOTEDIDENTIFIER,\n value: identifier,\n start: start});\n } else if (basicTokens[stream[this._current]] !== undefined) {\n tokens.push({type: basicTokens[stream[this._current]],\n value: stream[this._current],\n start: this._current});\n this._current++;\n } else if (isNum(stream[this._current])) {\n token = this._consumeNumber(stream);\n tokens.push(token);\n } else if (stream[this._current] === \"[\") {\n // No need to increment this._current. This happens\n // in _consumeLBracket\n token = this._consumeLBracket(stream);\n tokens.push(token);\n } else if (stream[this._current] === \"\\\"\") {\n start = this._current;\n identifier = this._consumeQuotedIdentifier(stream);\n tokens.push({type: TOK_QUOTEDIDENTIFIER,\n value: identifier,\n start: start});\n } else if (stream[this._current] === \"'\") {\n start = this._current;\n identifier = this._consumeRawStringLiteral(stream);\n tokens.push({type: TOK_LITERAL,\n value: identifier,\n start: start});\n } else if (stream[this._current] === \"`\") {\n start = this._current;\n var literal = this._consumeLiteral(stream);\n tokens.push({type: TOK_LITERAL,\n value: literal,\n start: start});\n } else if (operatorStartToken[stream[this._current]] !== undefined) {\n tokens.push(this._consumeOperator(stream));\n } else if (skipChars[stream[this._current]] !== undefined) {\n // Ignore whitespace.\n this._current++;\n } else if (stream[this._current] === \"&\") {\n start = this._current;\n this._current++;\n if (stream[this._current] === \"&\") {\n this._current++;\n tokens.push({type: TOK_AND, value: \"&&\", start: start});\n } else {\n tokens.push({type: TOK_EXPREF, value: \"&\", start: start});\n }\n } else if (stream[this._current] === \"|\") {\n start = this._current;\n this._current++;\n if (stream[this._current] === \"|\") {\n this._current++;\n tokens.push({type: TOK_OR, value: \"||\", start: start});\n } else {\n tokens.push({type: TOK_PIPE, value: \"|\", start: start});\n }\n } else {\n var error = new Error(\"Unknown character:\" + stream[this._current]);\n error.name = \"LexerError\";\n throw error;\n }\n }\n return tokens;\n },\n\n _consumeUnquotedIdentifier: function(stream) {\n var start = this._current;\n this._current++;\n while (this._current < stream.length && isAlphaNum(stream[this._current])) {\n this._current++;\n }\n return stream.slice(start, this._current);\n },\n\n _consumeQuotedIdentifier: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (stream[this._current] !== \"\\\"\" && this._current < maxLength) {\n // You can escape a double quote and you can escape an escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"\\\"\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n this._current++;\n return JSON.parse(stream.slice(start, this._current));\n },\n\n _consumeRawStringLiteral: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (stream[this._current] !== \"'\" && this._current < maxLength) {\n // You can escape a single quote and you can escape an escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"'\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n this._current++;\n var literal = stream.slice(start + 1, this._current - 1);\n return literal.replace(\"\\\\'\", \"'\");\n },\n\n _consumeNumber: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (isNum(stream[this._current]) && this._current < maxLength) {\n this._current++;\n }\n var value = parseInt(stream.slice(start, this._current));\n return {type: TOK_NUMBER, value: value, start: start};\n },\n\n _consumeLBracket: function(stream) {\n var start = this._current;\n this._current++;\n if (stream[this._current] === \"?\") {\n this._current++;\n return {type: TOK_FILTER, value: \"[?\", start: start};\n } else if (stream[this._current] === \"]\") {\n this._current++;\n return {type: TOK_FLATTEN, value: \"[]\", start: start};\n } else {\n return {type: TOK_LBRACKET, value: \"[\", start: start};\n }\n },\n\n _consumeOperator: function(stream) {\n var start = this._current;\n var startingChar = stream[start];\n this._current++;\n if (startingChar === \"!\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_NE, value: \"!=\", start: start};\n } else {\n return {type: TOK_NOT, value: \"!\", start: start};\n }\n } else if (startingChar === \"<\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_LTE, value: \"<=\", start: start};\n } else {\n return {type: TOK_LT, value: \"<\", start: start};\n }\n } else if (startingChar === \">\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_GTE, value: \">=\", start: start};\n } else {\n return {type: TOK_GT, value: \">\", start: start};\n }\n } else if (startingChar === \"=\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_EQ, value: \"==\", start: start};\n }\n }\n },\n\n _consumeLiteral: function(stream) {\n this._current++;\n var start = this._current;\n var maxLength = stream.length;\n var literal;\n while(stream[this._current] !== \"`\" && this._current < maxLength) {\n // You can escape a literal char or you can escape the escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"`\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n var literalString = trimLeft(stream.slice(start, this._current));\n literalString = literalString.replace(\"\\\\`\", \"`\");\n if (this._looksLikeJSON(literalString)) {\n literal = JSON.parse(literalString);\n } else {\n // Try to JSON parse it as \"\"\n literal = JSON.parse(\"\\\"\" + literalString + \"\\\"\");\n }\n // +1 gets us to the ending \"`\", +1 to move on to the next char.\n this._current++;\n return literal;\n },\n\n _looksLikeJSON: function(literalString) {\n var startingChars = \"[{\\\"\";\n var jsonLiterals = [\"true\", \"false\", \"null\"];\n var numberLooking = \"-0123456789\";\n\n if (literalString === \"\") {\n return false;\n } else if (startingChars.indexOf(literalString[0]) >= 0) {\n return true;\n } else if (jsonLiterals.indexOf(literalString) >= 0) {\n return true;\n } else if (numberLooking.indexOf(literalString[0]) >= 0) {\n try {\n JSON.parse(literalString);\n return true;\n } catch (ex) {\n return false;\n }\n } else {\n return false;\n }\n }\n };\n\n var bindingPower = {};\n bindingPower[TOK_EOF] = 0;\n bindingPower[TOK_UNQUOTEDIDENTIFIER] = 0;\n bindingPower[TOK_QUOTEDIDENTIFIER] = 0;\n bindingPower[TOK_RBRACKET] = 0;\n bindingPower[TOK_RPAREN] = 0;\n bindingPower[TOK_COMMA] = 0;\n bindingPower[TOK_RBRACE] = 0;\n bindingPower[TOK_NUMBER] = 0;\n bindingPower[TOK_CURRENT] = 0;\n bindingPower[TOK_EXPREF] = 0;\n bindingPower[TOK_PIPE] = 1;\n bindingPower[TOK_OR] = 2;\n bindingPower[TOK_AND] = 3;\n bindingPower[TOK_EQ] = 5;\n bindingPower[TOK_GT] = 5;\n bindingPower[TOK_LT] = 5;\n bindingPower[TOK_GTE] = 5;\n bindingPower[TOK_LTE] = 5;\n bindingPower[TOK_NE] = 5;\n bindingPower[TOK_FLATTEN] = 9;\n bindingPower[TOK_STAR] = 20;\n bindingPower[TOK_FILTER] = 21;\n bindingPower[TOK_DOT] = 40;\n bindingPower[TOK_NOT] = 45;\n bindingPower[TOK_LBRACE] = 50;\n bindingPower[TOK_LBRACKET] = 55;\n bindingPower[TOK_LPAREN] = 60;\n\n function Parser() {\n }\n\n Parser.prototype = {\n parse: function(expression) {\n this._loadTokens(expression);\n this.index = 0;\n var ast = this.expression(0);\n if (this._lookahead(0) !== TOK_EOF) {\n var t = this._lookaheadToken(0);\n var error = new Error(\n \"Unexpected token type: \" + t.type + \", value: \" + t.value);\n error.name = \"ParserError\";\n throw error;\n }\n return ast;\n },\n\n _loadTokens: function(expression) {\n var lexer = new Lexer();\n var tokens = lexer.tokenize(expression);\n tokens.push({type: TOK_EOF, value: \"\", start: expression.length});\n this.tokens = tokens;\n },\n\n expression: function(rbp) {\n var leftToken = this._lookaheadToken(0);\n this._advance();\n var left = this.nud(leftToken);\n var currentToken = this._lookahead(0);\n while (rbp < bindingPower[currentToken]) {\n this._advance();\n left = this.led(currentToken, left);\n currentToken = this._lookahead(0);\n }\n return left;\n },\n\n _lookahead: function(number) {\n return this.tokens[this.index + number].type;\n },\n\n _lookaheadToken: function(number) {\n return this.tokens[this.index + number];\n },\n\n _advance: function() {\n this.index++;\n },\n\n nud: function(token) {\n var left;\n var right;\n var expression;\n switch (token.type) {\n case TOK_LITERAL:\n return {type: \"Literal\", value: token.value};\n case TOK_UNQUOTEDIDENTIFIER:\n return {type: \"Field\", name: token.value};\n case TOK_QUOTEDIDENTIFIER:\n var node = {type: \"Field\", name: token.value};\n if (this._lookahead(0) === TOK_LPAREN) {\n throw new Error(\"Quoted identifier not allowed for function names.\");\n }\n return node;\n case TOK_NOT:\n right = this.expression(bindingPower.Not);\n return {type: \"NotExpression\", children: [right]};\n case TOK_STAR:\n left = {type: \"Identity\"};\n right = null;\n if (this._lookahead(0) === TOK_RBRACKET) {\n // This can happen in a multiselect,\n // [a, b, *]\n right = {type: \"Identity\"};\n } else {\n right = this._parseProjectionRHS(bindingPower.Star);\n }\n return {type: \"ValueProjection\", children: [left, right]};\n case TOK_FILTER:\n return this.led(token.type, {type: \"Identity\"});\n case TOK_LBRACE:\n return this._parseMultiselectHash();\n case TOK_FLATTEN:\n left = {type: TOK_FLATTEN, children: [{type: \"Identity\"}]};\n right = this._parseProjectionRHS(bindingPower.Flatten);\n return {type: \"Projection\", children: [left, right]};\n case TOK_LBRACKET:\n if (this._lookahead(0) === TOK_NUMBER || this._lookahead(0) === TOK_COLON) {\n right = this._parseIndexExpression();\n return this._projectIfSlice({type: \"Identity\"}, right);\n } else if (this._lookahead(0) === TOK_STAR &&\n this._lookahead(1) === TOK_RBRACKET) {\n this._advance();\n this._advance();\n right = this._parseProjectionRHS(bindingPower.Star);\n return {type: \"Projection\",\n children: [{type: \"Identity\"}, right]};\n }\n return this._parseMultiselectList();\n case TOK_CURRENT:\n return {type: TOK_CURRENT};\n case TOK_EXPREF:\n expression = this.expression(bindingPower.Expref);\n return {type: \"ExpressionReference\", children: [expression]};\n case TOK_LPAREN:\n var args = [];\n while (this._lookahead(0) !== TOK_RPAREN) {\n if (this._lookahead(0) === TOK_CURRENT) {\n expression = {type: TOK_CURRENT};\n this._advance();\n } else {\n expression = this.expression(0);\n }\n args.push(expression);\n }\n this._match(TOK_RPAREN);\n return args[0];\n default:\n this._errorToken(token);\n }\n },\n\n led: function(tokenName, left) {\n var right;\n switch(tokenName) {\n case TOK_DOT:\n var rbp = bindingPower.Dot;\n if (this._lookahead(0) !== TOK_STAR) {\n right = this._parseDotRHS(rbp);\n return {type: \"Subexpression\", children: [left, right]};\n }\n // Creating a projection.\n this._advance();\n right = this._parseProjectionRHS(rbp);\n return {type: \"ValueProjection\", children: [left, right]};\n case TOK_PIPE:\n right = this.expression(bindingPower.Pipe);\n return {type: TOK_PIPE, children: [left, right]};\n case TOK_OR:\n right = this.expression(bindingPower.Or);\n return {type: \"OrExpression\", children: [left, right]};\n case TOK_AND:\n right = this.expression(bindingPower.And);\n return {type: \"AndExpression\", children: [left, right]};\n case TOK_LPAREN:\n var name = left.name;\n var args = [];\n var expression, node;\n while (this._lookahead(0) !== TOK_RPAREN) {\n if (this._lookahead(0) === TOK_CURRENT) {\n expression = {type: TOK_CURRENT};\n this._advance();\n } else {\n expression = this.expression(0);\n }\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n }\n args.push(expression);\n }\n this._match(TOK_RPAREN);\n node = {type: \"Function\", name: name, children: args};\n return node;\n case TOK_FILTER:\n var condition = this.expression(0);\n this._match(TOK_RBRACKET);\n if (this._lookahead(0) === TOK_FLATTEN) {\n right = {type: \"Identity\"};\n } else {\n right = this._parseProjectionRHS(bindingPower.Filter);\n }\n return {type: \"FilterProjection\", children: [left, right, condition]};\n case TOK_FLATTEN:\n var leftNode = {type: TOK_FLATTEN, children: [left]};\n var rightNode = this._parseProjectionRHS(bindingPower.Flatten);\n return {type: \"Projection\", children: [leftNode, rightNode]};\n case TOK_EQ:\n case TOK_NE:\n case TOK_GT:\n case TOK_GTE:\n case TOK_LT:\n case TOK_LTE:\n return this._parseComparator(left, tokenName);\n case TOK_LBRACKET:\n var token = this._lookaheadToken(0);\n if (token.type === TOK_NUMBER || token.type === TOK_COLON) {\n right = this._parseIndexExpression();\n return this._projectIfSlice(left, right);\n }\n this._match(TOK_STAR);\n this._match(TOK_RBRACKET);\n right = this._parseProjectionRHS(bindingPower.Star);\n return {type: \"Projection\", children: [left, right]};\n default:\n this._errorToken(this._lookaheadToken(0));\n }\n },\n\n _match: function(tokenType) {\n if (this._lookahead(0) === tokenType) {\n this._advance();\n } else {\n var t = this._lookaheadToken(0);\n var error = new Error(\"Expected \" + tokenType + \", got: \" + t.type);\n error.name = \"ParserError\";\n throw error;\n }\n },\n\n _errorToken: function(token) {\n var error = new Error(\"Invalid token (\" +\n token.type + \"): \\\"\" +\n token.value + \"\\\"\");\n error.name = \"ParserError\";\n throw error;\n },\n\n\n _parseIndexExpression: function() {\n if (this._lookahead(0) === TOK_COLON || this._lookahead(1) === TOK_COLON) {\n return this._parseSliceExpression();\n } else {\n var node = {\n type: \"Index\",\n value: this._lookaheadToken(0).value};\n this._advance();\n this._match(TOK_RBRACKET);\n return node;\n }\n },\n\n _projectIfSlice: function(left, right) {\n var indexExpr = {type: \"IndexExpression\", children: [left, right]};\n if (right.type === \"Slice\") {\n return {\n type: \"Projection\",\n children: [indexExpr, this._parseProjectionRHS(bindingPower.Star)]\n };\n } else {\n return indexExpr;\n }\n },\n\n _parseSliceExpression: function() {\n // [start:end:step] where each part is optional, as well as the last\n // colon.\n var parts = [null, null, null];\n var index = 0;\n var currentToken = this._lookahead(0);\n while (currentToken !== TOK_RBRACKET && index < 3) {\n if (currentToken === TOK_COLON) {\n index++;\n this._advance();\n } else if (currentToken === TOK_NUMBER) {\n parts[index] = this._lookaheadToken(0).value;\n this._advance();\n } else {\n var t = this._lookahead(0);\n var error = new Error(\"Syntax error, unexpected token: \" +\n t.value + \"(\" + t.type + \")\");\n error.name = \"Parsererror\";\n throw error;\n }\n currentToken = this._lookahead(0);\n }\n this._match(TOK_RBRACKET);\n return {\n type: \"Slice\",\n children: parts\n };\n },\n\n _parseComparator: function(left, comparator) {\n var right = this.expression(bindingPower[comparator]);\n return {type: \"Comparator\", name: comparator, children: [left, right]};\n },\n\n _parseDotRHS: function(rbp) {\n var lookahead = this._lookahead(0);\n var exprTokens = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER, TOK_STAR];\n if (exprTokens.indexOf(lookahead) >= 0) {\n return this.expression(rbp);\n } else if (lookahead === TOK_LBRACKET) {\n this._match(TOK_LBRACKET);\n return this._parseMultiselectList();\n } else if (lookahead === TOK_LBRACE) {\n this._match(TOK_LBRACE);\n return this._parseMultiselectHash();\n }\n },\n\n _parseProjectionRHS: function(rbp) {\n var right;\n if (bindingPower[this._lookahead(0)] < 10) {\n right = {type: \"Identity\"};\n } else if (this._lookahead(0) === TOK_LBRACKET) {\n right = this.expression(rbp);\n } else if (this._lookahead(0) === TOK_FILTER) {\n right = this.expression(rbp);\n } else if (this._lookahead(0) === TOK_DOT) {\n this._match(TOK_DOT);\n right = this._parseDotRHS(rbp);\n } else {\n var t = this._lookaheadToken(0);\n var error = new Error(\"Sytanx error, unexpected token: \" +\n t.value + \"(\" + t.type + \")\");\n error.name = \"ParserError\";\n throw error;\n }\n return right;\n },\n\n _parseMultiselectList: function() {\n var expressions = [];\n while (this._lookahead(0) !== TOK_RBRACKET) {\n var expression = this.expression(0);\n expressions.push(expression);\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n if (this._lookahead(0) === TOK_RBRACKET) {\n throw new Error(\"Unexpected token Rbracket\");\n }\n }\n }\n this._match(TOK_RBRACKET);\n return {type: \"MultiSelectList\", children: expressions};\n },\n\n _parseMultiselectHash: function() {\n var pairs = [];\n var identifierTypes = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER];\n var keyToken, keyName, value, node;\n for (;;) {\n keyToken = this._lookaheadToken(0);\n if (identifierTypes.indexOf(keyToken.type) < 0) {\n throw new Error(\"Expecting an identifier token, got: \" +\n keyToken.type);\n }\n keyName = keyToken.value;\n this._advance();\n this._match(TOK_COLON);\n value = this.expression(0);\n node = {type: \"KeyValuePair\", name: keyName, value: value};\n pairs.push(node);\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n } else if (this._lookahead(0) === TOK_RBRACE) {\n this._match(TOK_RBRACE);\n break;\n }\n }\n return {type: \"MultiSelectHash\", children: pairs};\n }\n };\n\n\n function TreeInterpreter(runtime) {\n this.runtime = runtime;\n }\n\n TreeInterpreter.prototype = {\n search: function(node, value) {\n return this.visit(node, value);\n },\n\n visit: function(node, value) {\n var matched, current, result, first, second, field, left, right, collected, i;\n switch (node.type) {\n case \"Field\":\n if (value !== null && isObject(value)) {\n field = value[node.name];\n if (field === undefined) {\n return null;\n } else {\n return field;\n }\n }\n return null;\n case \"Subexpression\":\n result = this.visit(node.children[0], value);\n for (i = 1; i < node.children.length; i++) {\n result = this.visit(node.children[1], result);\n if (result === null) {\n return null;\n }\n }\n return result;\n case \"IndexExpression\":\n left = this.visit(node.children[0], value);\n right = this.visit(node.children[1], left);\n return right;\n case \"Index\":\n if (!isArray(value)) {\n return null;\n }\n var index = node.value;\n if (index < 0) {\n index = value.length + index;\n }\n result = value[index];\n if (result === undefined) {\n result = null;\n }\n return result;\n case \"Slice\":\n if (!isArray(value)) {\n return null;\n }\n var sliceParams = node.children.slice(0);\n var computed = this.computeSliceParams(value.length, sliceParams);\n var start = computed[0];\n var stop = computed[1];\n var step = computed[2];\n result = [];\n if (step > 0) {\n for (i = start; i < stop; i += step) {\n result.push(value[i]);\n }\n } else {\n for (i = start; i > stop; i += step) {\n result.push(value[i]);\n }\n }\n return result;\n case \"Projection\":\n // Evaluate left child.\n var base = this.visit(node.children[0], value);\n if (!isArray(base)) {\n return null;\n }\n collected = [];\n for (i = 0; i < base.length; i++) {\n current = this.visit(node.children[1], base[i]);\n if (current !== null) {\n collected.push(current);\n }\n }\n return collected;\n case \"ValueProjection\":\n // Evaluate left child.\n base = this.visit(node.children[0], value);\n if (!isObject(base)) {\n return null;\n }\n collected = [];\n var values = objValues(base);\n for (i = 0; i < values.length; i++) {\n current = this.visit(node.children[1], values[i]);\n if (current !== null) {\n collected.push(current);\n }\n }\n return collected;\n case \"FilterProjection\":\n base = this.visit(node.children[0], value);\n if (!isArray(base)) {\n return null;\n }\n var filtered = [];\n var finalResults = [];\n for (i = 0; i < base.length; i++) {\n matched = this.visit(node.children[2], base[i]);\n if (!isFalse(matched)) {\n filtered.push(base[i]);\n }\n }\n for (var j = 0; j < filtered.length; j++) {\n current = this.visit(node.children[1], filtered[j]);\n if (current !== null) {\n finalResults.push(current);\n }\n }\n return finalResults;\n case \"Comparator\":\n first = this.visit(node.children[0], value);\n second = this.visit(node.children[1], value);\n switch(node.name) {\n case TOK_EQ:\n result = strictDeepEqual(first, second);\n break;\n case TOK_NE:\n result = !strictDeepEqual(first, second);\n break;\n case TOK_GT:\n result = first > second;\n break;\n case TOK_GTE:\n result = first >= second;\n break;\n case TOK_LT:\n result = first < second;\n break;\n case TOK_LTE:\n result = first <= second;\n break;\n default:\n throw new Error(\"Unknown comparator: \" + node.name);\n }\n return result;\n case TOK_FLATTEN:\n var original = this.visit(node.children[0], value);\n if (!isArray(original)) {\n return null;\n }\n var merged = [];\n for (i = 0; i < original.length; i++) {\n current = original[i];\n if (isArray(current)) {\n merged.push.apply(merged, current);\n } else {\n merged.push(current);\n }\n }\n return merged;\n case \"Identity\":\n return value;\n case \"MultiSelectList\":\n if (value === null) {\n return null;\n }\n collected = [];\n for (i = 0; i < node.children.length; i++) {\n collected.push(this.visit(node.children[i], value));\n }\n return collected;\n case \"MultiSelectHash\":\n if (value === null) {\n return null;\n }\n collected = {};\n var child;\n for (i = 0; i < node.children.length; i++) {\n child = node.children[i];\n collected[child.name] = this.visit(child.value, value);\n }\n return collected;\n case \"OrExpression\":\n matched = this.visit(node.children[0], value);\n if (isFalse(matched)) {\n matched = this.visit(node.children[1], value);\n }\n return matched;\n case \"AndExpression\":\n first = this.visit(node.children[0], value);\n\n if (isFalse(first) === true) {\n return first;\n }\n return this.visit(node.children[1], value);\n case \"NotExpression\":\n first = this.visit(node.children[0], value);\n return isFalse(first);\n case \"Literal\":\n return node.value;\n case TOK_PIPE:\n left = this.visit(node.children[0], value);\n return this.visit(node.children[1], left);\n case TOK_CURRENT:\n return value;\n case \"Function\":\n var resolvedArgs = [];\n for (i = 0; i < node.children.length; i++) {\n resolvedArgs.push(this.visit(node.children[i], value));\n }\n return this.runtime.callFunction(node.name, resolvedArgs);\n case \"ExpressionReference\":\n var refNode = node.children[0];\n // Tag the node with a specific attribute so the type\n // checker verify the type.\n refNode.jmespathType = TOK_EXPREF;\n return refNode;\n default:\n throw new Error(\"Unknown node type: \" + node.type);\n }\n },\n\n computeSliceParams: function(arrayLength, sliceParams) {\n var start = sliceParams[0];\n var stop = sliceParams[1];\n var step = sliceParams[2];\n var computed = [null, null, null];\n if (step === null) {\n step = 1;\n } else if (step === 0) {\n var error = new Error(\"Invalid slice, step cannot be 0\");\n error.name = \"RuntimeError\";\n throw error;\n }\n var stepValueNegative = step < 0 ? true : false;\n\n if (start === null) {\n start = stepValueNegative ? arrayLength - 1 : 0;\n } else {\n start = this.capSliceRange(arrayLength, start, step);\n }\n\n if (stop === null) {\n stop = stepValueNegative ? -1 : arrayLength;\n } else {\n stop = this.capSliceRange(arrayLength, stop, step);\n }\n computed[0] = start;\n computed[1] = stop;\n computed[2] = step;\n return computed;\n },\n\n capSliceRange: function(arrayLength, actualValue, step) {\n if (actualValue < 0) {\n actualValue += arrayLength;\n if (actualValue < 0) {\n actualValue = step < 0 ? -1 : 0;\n }\n } else if (actualValue >= arrayLength) {\n actualValue = step < 0 ? arrayLength - 1 : arrayLength;\n }\n return actualValue;\n }\n\n };\n\n function Runtime(interpreter) {\n this._interpreter = interpreter;\n this.functionTable = {\n // name: [function, ]\n // The can be:\n //\n // {\n // args: [[type1, type2], [type1, type2]],\n // variadic: true|false\n // }\n //\n // Each arg in the arg list is a list of valid types\n // (if the function is overloaded and supports multiple\n // types. If the type is \"any\" then no type checking\n // occurs on the argument. Variadic is optional\n // and if not provided is assumed to be false.\n abs: {_func: this._functionAbs, _signature: [{types: [TYPE_NUMBER]}]},\n avg: {_func: this._functionAvg, _signature: [{types: [TYPE_ARRAY_NUMBER]}]},\n ceil: {_func: this._functionCeil, _signature: [{types: [TYPE_NUMBER]}]},\n contains: {\n _func: this._functionContains,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY]},\n {types: [TYPE_ANY]}]},\n \"ends_with\": {\n _func: this._functionEndsWith,\n _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]},\n floor: {_func: this._functionFloor, _signature: [{types: [TYPE_NUMBER]}]},\n length: {\n _func: this._functionLength,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY, TYPE_OBJECT]}]},\n map: {\n _func: this._functionMap,\n _signature: [{types: [TYPE_EXPREF]}, {types: [TYPE_ARRAY]}]},\n max: {\n _func: this._functionMax,\n _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]},\n \"merge\": {\n _func: this._functionMerge,\n _signature: [{types: [TYPE_OBJECT], variadic: true}]\n },\n \"max_by\": {\n _func: this._functionMaxBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n sum: {_func: this._functionSum, _signature: [{types: [TYPE_ARRAY_NUMBER]}]},\n \"starts_with\": {\n _func: this._functionStartsWith,\n _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]},\n min: {\n _func: this._functionMin,\n _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]},\n \"min_by\": {\n _func: this._functionMinBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n type: {_func: this._functionType, _signature: [{types: [TYPE_ANY]}]},\n keys: {_func: this._functionKeys, _signature: [{types: [TYPE_OBJECT]}]},\n values: {_func: this._functionValues, _signature: [{types: [TYPE_OBJECT]}]},\n sort: {_func: this._functionSort, _signature: [{types: [TYPE_ARRAY_STRING, TYPE_ARRAY_NUMBER]}]},\n \"sort_by\": {\n _func: this._functionSortBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n join: {\n _func: this._functionJoin,\n _signature: [\n {types: [TYPE_STRING]},\n {types: [TYPE_ARRAY_STRING]}\n ]\n },\n reverse: {\n _func: this._functionReverse,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY]}]},\n \"to_array\": {_func: this._functionToArray, _signature: [{types: [TYPE_ANY]}]},\n \"to_string\": {_func: this._functionToString, _signature: [{types: [TYPE_ANY]}]},\n \"to_number\": {_func: this._functionToNumber, _signature: [{types: [TYPE_ANY]}]},\n \"not_null\": {\n _func: this._functionNotNull,\n _signature: [{types: [TYPE_ANY], variadic: true}]\n }\n };\n }\n\n Runtime.prototype = {\n callFunction: function(name, resolvedArgs) {\n var functionEntry = this.functionTable[name];\n if (functionEntry === undefined) {\n throw new Error(\"Unknown function: \" + name + \"()\");\n }\n this._validateArgs(name, resolvedArgs, functionEntry._signature);\n return functionEntry._func.call(this, resolvedArgs);\n },\n\n _validateArgs: function(name, args, signature) {\n // Validating the args requires validating\n // the correct arity and the correct type of each arg.\n // If the last argument is declared as variadic, then we need\n // a minimum number of args to be required. Otherwise it has to\n // be an exact amount.\n var pluralized;\n if (signature[signature.length - 1].variadic) {\n if (args.length < signature.length) {\n pluralized = signature.length === 1 ? \" argument\" : \" arguments\";\n throw new Error(\"ArgumentError: \" + name + \"() \" +\n \"takes at least\" + signature.length + pluralized +\n \" but received \" + args.length);\n }\n } else if (args.length !== signature.length) {\n pluralized = signature.length === 1 ? \" argument\" : \" arguments\";\n throw new Error(\"ArgumentError: \" + name + \"() \" +\n \"takes \" + signature.length + pluralized +\n \" but received \" + args.length);\n }\n var currentSpec;\n var actualType;\n var typeMatched;\n for (var i = 0; i < signature.length; i++) {\n typeMatched = false;\n currentSpec = signature[i].types;\n actualType = this._getTypeName(args[i]);\n for (var j = 0; j < currentSpec.length; j++) {\n if (this._typeMatches(actualType, currentSpec[j], args[i])) {\n typeMatched = true;\n break;\n }\n }\n if (!typeMatched) {\n var expected = currentSpec\n .map(function(typeIdentifier) {\n return TYPE_NAME_TABLE[typeIdentifier];\n })\n .join(',');\n throw new Error(\"TypeError: \" + name + \"() \" +\n \"expected argument \" + (i + 1) +\n \" to be type \" + expected +\n \" but received type \" +\n TYPE_NAME_TABLE[actualType] + \" instead.\");\n }\n }\n },\n\n _typeMatches: function(actual, expected, argValue) {\n if (expected === TYPE_ANY) {\n return true;\n }\n if (expected === TYPE_ARRAY_STRING ||\n expected === TYPE_ARRAY_NUMBER ||\n expected === TYPE_ARRAY) {\n // The expected type can either just be array,\n // or it can require a specific subtype (array of numbers).\n //\n // The simplest case is if \"array\" with no subtype is specified.\n if (expected === TYPE_ARRAY) {\n return actual === TYPE_ARRAY;\n } else if (actual === TYPE_ARRAY) {\n // Otherwise we need to check subtypes.\n // I think this has potential to be improved.\n var subtype;\n if (expected === TYPE_ARRAY_NUMBER) {\n subtype = TYPE_NUMBER;\n } else if (expected === TYPE_ARRAY_STRING) {\n subtype = TYPE_STRING;\n }\n for (var i = 0; i < argValue.length; i++) {\n if (!this._typeMatches(\n this._getTypeName(argValue[i]), subtype,\n argValue[i])) {\n return false;\n }\n }\n return true;\n }\n } else {\n return actual === expected;\n }\n },\n _getTypeName: function(obj) {\n switch (Object.prototype.toString.call(obj)) {\n case \"[object String]\":\n return TYPE_STRING;\n case \"[object Number]\":\n return TYPE_NUMBER;\n case \"[object Array]\":\n return TYPE_ARRAY;\n case \"[object Boolean]\":\n return TYPE_BOOLEAN;\n case \"[object Null]\":\n return TYPE_NULL;\n case \"[object Object]\":\n // Check if it's an expref. If it has, it's been\n // tagged with a jmespathType attr of 'Expref';\n if (obj.jmespathType === TOK_EXPREF) {\n return TYPE_EXPREF;\n } else {\n return TYPE_OBJECT;\n }\n }\n },\n\n _functionStartsWith: function(resolvedArgs) {\n return resolvedArgs[0].lastIndexOf(resolvedArgs[1]) === 0;\n },\n\n _functionEndsWith: function(resolvedArgs) {\n var searchStr = resolvedArgs[0];\n var suffix = resolvedArgs[1];\n return searchStr.indexOf(suffix, searchStr.length - suffix.length) !== -1;\n },\n\n _functionReverse: function(resolvedArgs) {\n var typeName = this._getTypeName(resolvedArgs[0]);\n if (typeName === TYPE_STRING) {\n var originalStr = resolvedArgs[0];\n var reversedStr = \"\";\n for (var i = originalStr.length - 1; i >= 0; i--) {\n reversedStr += originalStr[i];\n }\n return reversedStr;\n } else {\n var reversedArray = resolvedArgs[0].slice(0);\n reversedArray.reverse();\n return reversedArray;\n }\n },\n\n _functionAbs: function(resolvedArgs) {\n return Math.abs(resolvedArgs[0]);\n },\n\n _functionCeil: function(resolvedArgs) {\n return Math.ceil(resolvedArgs[0]);\n },\n\n _functionAvg: function(resolvedArgs) {\n var sum = 0;\n var inputArray = resolvedArgs[0];\n for (var i = 0; i < inputArray.length; i++) {\n sum += inputArray[i];\n }\n return sum / inputArray.length;\n },\n\n _functionContains: function(resolvedArgs) {\n return resolvedArgs[0].indexOf(resolvedArgs[1]) >= 0;\n },\n\n _functionFloor: function(resolvedArgs) {\n return Math.floor(resolvedArgs[0]);\n },\n\n _functionLength: function(resolvedArgs) {\n if (!isObject(resolvedArgs[0])) {\n return resolvedArgs[0].length;\n } else {\n // As far as I can tell, there's no way to get the length\n // of an object without O(n) iteration through the object.\n return Object.keys(resolvedArgs[0]).length;\n }\n },\n\n _functionMap: function(resolvedArgs) {\n var mapped = [];\n var interpreter = this._interpreter;\n var exprefNode = resolvedArgs[0];\n var elements = resolvedArgs[1];\n for (var i = 0; i < elements.length; i++) {\n mapped.push(interpreter.visit(exprefNode, elements[i]));\n }\n return mapped;\n },\n\n _functionMerge: function(resolvedArgs) {\n var merged = {};\n for (var i = 0; i < resolvedArgs.length; i++) {\n var current = resolvedArgs[i];\n for (var key in current) {\n merged[key] = current[key];\n }\n }\n return merged;\n },\n\n _functionMax: function(resolvedArgs) {\n if (resolvedArgs[0].length > 0) {\n var typeName = this._getTypeName(resolvedArgs[0][0]);\n if (typeName === TYPE_NUMBER) {\n return Math.max.apply(Math, resolvedArgs[0]);\n } else {\n var elements = resolvedArgs[0];\n var maxElement = elements[0];\n for (var i = 1; i < elements.length; i++) {\n if (maxElement.localeCompare(elements[i]) < 0) {\n maxElement = elements[i];\n }\n }\n return maxElement;\n }\n } else {\n return null;\n }\n },\n\n _functionMin: function(resolvedArgs) {\n if (resolvedArgs[0].length > 0) {\n var typeName = this._getTypeName(resolvedArgs[0][0]);\n if (typeName === TYPE_NUMBER) {\n return Math.min.apply(Math, resolvedArgs[0]);\n } else {\n var elements = resolvedArgs[0];\n var minElement = elements[0];\n for (var i = 1; i < elements.length; i++) {\n if (elements[i].localeCompare(minElement) < 0) {\n minElement = elements[i];\n }\n }\n return minElement;\n }\n } else {\n return null;\n }\n },\n\n _functionSum: function(resolvedArgs) {\n var sum = 0;\n var listToSum = resolvedArgs[0];\n for (var i = 0; i < listToSum.length; i++) {\n sum += listToSum[i];\n }\n return sum;\n },\n\n _functionType: function(resolvedArgs) {\n switch (this._getTypeName(resolvedArgs[0])) {\n case TYPE_NUMBER:\n return \"number\";\n case TYPE_STRING:\n return \"string\";\n case TYPE_ARRAY:\n return \"array\";\n case TYPE_OBJECT:\n return \"object\";\n case TYPE_BOOLEAN:\n return \"boolean\";\n case TYPE_EXPREF:\n return \"expref\";\n case TYPE_NULL:\n return \"null\";\n }\n },\n\n _functionKeys: function(resolvedArgs) {\n return Object.keys(resolvedArgs[0]);\n },\n\n _functionValues: function(resolvedArgs) {\n var obj = resolvedArgs[0];\n var keys = Object.keys(obj);\n var values = [];\n for (var i = 0; i < keys.length; i++) {\n values.push(obj[keys[i]]);\n }\n return values;\n },\n\n _functionJoin: function(resolvedArgs) {\n var joinChar = resolvedArgs[0];\n var listJoin = resolvedArgs[1];\n return listJoin.join(joinChar);\n },\n\n _functionToArray: function(resolvedArgs) {\n if (this._getTypeName(resolvedArgs[0]) === TYPE_ARRAY) {\n return resolvedArgs[0];\n } else {\n return [resolvedArgs[0]];\n }\n },\n\n _functionToString: function(resolvedArgs) {\n if (this._getTypeName(resolvedArgs[0]) === TYPE_STRING) {\n return resolvedArgs[0];\n } else {\n return JSON.stringify(resolvedArgs[0]);\n }\n },\n\n _functionToNumber: function(resolvedArgs) {\n var typeName = this._getTypeName(resolvedArgs[0]);\n var convertedValue;\n if (typeName === TYPE_NUMBER) {\n return resolvedArgs[0];\n } else if (typeName === TYPE_STRING) {\n convertedValue = +resolvedArgs[0];\n if (!isNaN(convertedValue)) {\n return convertedValue;\n }\n }\n return null;\n },\n\n _functionNotNull: function(resolvedArgs) {\n for (var i = 0; i < resolvedArgs.length; i++) {\n if (this._getTypeName(resolvedArgs[i]) !== TYPE_NULL) {\n return resolvedArgs[i];\n }\n }\n return null;\n },\n\n _functionSort: function(resolvedArgs) {\n var sortedArray = resolvedArgs[0].slice(0);\n sortedArray.sort();\n return sortedArray;\n },\n\n _functionSortBy: function(resolvedArgs) {\n var sortedArray = resolvedArgs[0].slice(0);\n if (sortedArray.length === 0) {\n return sortedArray;\n }\n var interpreter = this._interpreter;\n var exprefNode = resolvedArgs[1];\n var requiredType = this._getTypeName(\n interpreter.visit(exprefNode, sortedArray[0]));\n if ([TYPE_NUMBER, TYPE_STRING].indexOf(requiredType) < 0) {\n throw new Error(\"TypeError\");\n }\n var that = this;\n // In order to get a stable sort out of an unstable\n // sort algorithm, we decorate/sort/undecorate (DSU)\n // by creating a new list of [index, element] pairs.\n // In the cmp function, if the evaluated elements are\n // equal, then the index will be used as the tiebreaker.\n // After the decorated list has been sorted, it will be\n // undecorated to extract the original elements.\n var decorated = [];\n for (var i = 0; i < sortedArray.length; i++) {\n decorated.push([i, sortedArray[i]]);\n }\n decorated.sort(function(a, b) {\n var exprA = interpreter.visit(exprefNode, a[1]);\n var exprB = interpreter.visit(exprefNode, b[1]);\n if (that._getTypeName(exprA) !== requiredType) {\n throw new Error(\n \"TypeError: expected \" + requiredType + \", received \" +\n that._getTypeName(exprA));\n } else if (that._getTypeName(exprB) !== requiredType) {\n throw new Error(\n \"TypeError: expected \" + requiredType + \", received \" +\n that._getTypeName(exprB));\n }\n if (exprA > exprB) {\n return 1;\n } else if (exprA < exprB) {\n return -1;\n } else {\n // If they're equal compare the items by their\n // order to maintain relative order of equal keys\n // (i.e. to get a stable sort).\n return a[0] - b[0];\n }\n });\n // Undecorate: extract out the original list elements.\n for (var j = 0; j < decorated.length; j++) {\n sortedArray[j] = decorated[j][1];\n }\n return sortedArray;\n },\n\n _functionMaxBy: function(resolvedArgs) {\n var exprefNode = resolvedArgs[1];\n var resolvedArray = resolvedArgs[0];\n var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]);\n var maxNumber = -Infinity;\n var maxRecord;\n var current;\n for (var i = 0; i < resolvedArray.length; i++) {\n current = keyFunction(resolvedArray[i]);\n if (current > maxNumber) {\n maxNumber = current;\n maxRecord = resolvedArray[i];\n }\n }\n return maxRecord;\n },\n\n _functionMinBy: function(resolvedArgs) {\n var exprefNode = resolvedArgs[1];\n var resolvedArray = resolvedArgs[0];\n var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]);\n var minNumber = Infinity;\n var minRecord;\n var current;\n for (var i = 0; i < resolvedArray.length; i++) {\n current = keyFunction(resolvedArray[i]);\n if (current < minNumber) {\n minNumber = current;\n minRecord = resolvedArray[i];\n }\n }\n return minRecord;\n },\n\n createKeyFunction: function(exprefNode, allowedTypes) {\n var that = this;\n var interpreter = this._interpreter;\n var keyFunc = function(x) {\n var current = interpreter.visit(exprefNode, x);\n if (allowedTypes.indexOf(that._getTypeName(current)) < 0) {\n var msg = \"TypeError: expected one of \" + allowedTypes +\n \", received \" + that._getTypeName(current);\n throw new Error(msg);\n }\n return current;\n };\n return keyFunc;\n }\n\n };\n\n function compile(stream) {\n var parser = new Parser();\n var ast = parser.parse(stream);\n return ast;\n }\n\n function tokenize(stream) {\n var lexer = new Lexer();\n return lexer.tokenize(stream);\n }\n\n function search(data, expression) {\n var parser = new Parser();\n // This needs to be improved. Both the interpreter and runtime depend on\n // each other. The runtime needs the interpreter to support exprefs.\n // There's likely a clean way to avoid the cyclic dependency.\n var runtime = new Runtime();\n var interpreter = new TreeInterpreter(runtime);\n runtime._interpreter = interpreter;\n var node = parser.parse(expression);\n return interpreter.search(node, data);\n }\n\n exports.tokenize = tokenize;\n exports.compile = compile;\n exports.search = search;\n exports.strictDeepEqual = strictDeepEqual;\n})(typeof exports === \"undefined\" ? this.jmespath = {} : exports);\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar punycode = require('punycode');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a puny coded representation of \"domain\".\n // It only converts the part of the domain name that\n // has non ASCII characters. I.e. it dosent matter if\n // you call it with a domain that already is in ASCII.\n var domainArray = this.hostname.split('.');\n var newOut = [];\n for (var i = 0; i < domainArray.length; ++i) {\n var s = domainArray[i];\n newOut.push(s.match(/[^A-Za-z0-9_-]/) ?\n 'xn--' + punycode.encode(s) : s);\n }\n this.hostname = newOut.join('.');\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n Object.keys(this).forEach(function(k) {\n result[k] = this[k];\n }, this);\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n Object.keys(relative).forEach(function(k) {\n if (k !== 'protocol')\n result[k] = relative[k];\n });\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n Object.keys(relative).forEach(function(k) {\n result[k] = relative[k];\n });\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especialy happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!isNull(result.pathname) || !isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host) && (last === '.' || last === '..') ||\n last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last == '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especialy happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!isNull(result.pathname) || !isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n\nfunction isString(arg) {\n return typeof arg === \"string\";\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isNull(arg) {\n return arg === null;\n}\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').slice(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.slice(1, -1);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bind/callBound');\nvar gOPD = require('gopd');\n\n/** @type {(O: object) => string} */\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\n\n/** @type {(array: readonly T[], value: unknown) => number} */\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {(receiver: import('.').TypedArray) => string | typeof Uint8Array.prototype.slice.call | typeof Uint8Array.prototype.set.call} Getter */\n/** @type {{ [k in `\\$${import('.').TypedArrayName}`]?: Getter } & { __proto__: null }} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(fn);\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {Record<`\\$${TypedArrayName}`, Getter>} */ /** @type {any} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = $slice(typedArray, 1);\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {Record<`\\$${TypedArrayName}`, Getter>} */ /** @type {any} */ (cache),\n\t\t/** @type {(getter: typeof cache, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = $slice(name, 1);\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"e8974166\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"preview-ai-demo-page:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkpreview_ai_demo_page\"] = self[\"webpackChunkpreview_ai_demo_page\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n // We keep the raw Response for redirects so we can return it verbatim\n response: Response;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\n/**\n * Result from a loader or action called via dataStrategy\n */\nexport interface HandlerResult {\n type: \"data\" | \"error\";\n result: unknown; // data, Error, Response, DeferredData\n status?: number;\n}\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `
`,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\ntype DataFunctionReturnValue = Promise | DataFunctionValue;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction = {\n (\n args: LoaderFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (\n args: ActionFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n unstable_actionStatus?: number;\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\nexport interface DataStrategyMatch\n extends AgnosticRouteMatch {\n shouldLoad: boolean;\n resolve: (\n handlerOverride?: (\n handler: (ctx?: unknown) => DataFunctionReturnValue\n ) => Promise\n ) => Promise;\n}\n\nexport interface DataStrategyFunctionArgs\n extends DataFunctionArgs {\n matches: DataStrategyMatch[];\n}\n\nexport interface DataStrategyFunction {\n (args: DataStrategyFunctionArgs): Promise;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction | boolean;\n action?: ActionFunction | boolean;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: number[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(branches[i], decoded);\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nfunction decodePath(value: string) {\n try {\n return value\n .split(\"/\")\n .map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\"))\n .join(\"/\");\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === matches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DataStrategyMatch,\n AgnosticRouteObject,\n DataResult,\n DataStrategyFunction,\n DataStrategyFunctionArgs,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n HandlerResult,\n ImmutableRouteKey,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n unstable_skipActionErrorRevalidation: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n unstable_dataStrategy?: DataStrategyFunction;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n unstable_dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: { routeId?: string; requestContext?: unknown }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n unstable_viewTransitionOpts?: ViewTransitionOpts;\n unstable_flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n unstable_viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ntype PendingActionResult = [string, SuccessResult | ErrorResult];\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Tuple for the returned or thrown value from the current action. The routeId\n * is the action route for success and the bubbled boundary route for errors.\n */\n pendingActionResult?: PendingActionResult;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.unstable_dataStrategy || defaultDataStrategy;\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n unstable_skipActionErrorRevalidation: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized: boolean;\n let hasLazyRoutes = initialMatches.some((m) => m.route.lazy);\n let hasLoaders = initialMatches.some((m) => m.route.loader);\n if (hasLazyRoutes) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!hasLoaders) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n let isRouteInitialized = (m: AgnosticDataRouteMatch) => {\n // No loader, nothing to initialize\n if (!m.route.loader) {\n return true;\n }\n // Explicitly opting-in to running on hydration\n if (\n typeof m.route.loader === \"function\" &&\n m.route.loader.hydrate === true\n ) {\n return false;\n }\n // Otherwise, initialized if hydrated with data or an error\n return (\n (loaderData && loaderData[m.route.id] !== undefined) ||\n (errors && errors[m.route.id] !== undefined)\n );\n };\n\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors![m.route.id] !== undefined\n );\n initialized = initialMatches.slice(0, idx + 1).every(isRouteInitialized);\n } else {\n initialized = initialMatches.every(isRouteInitialized);\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionResult: PendingActionResult | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingActionResult = [\n findNearestBoundary(matches).route.id,\n { type: ResultType.error, error: opts.pendingError },\n ];\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionResult = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace, flushSync }\n );\n\n if (actionResult.shortCircuited) {\n return;\n }\n\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n\n // Create a GET request for the loaders\n request = createClientSideRequest(\n init.history,\n request.url,\n request.signal\n );\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionResult\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n ...getActionDataForCommit(pendingActionResult),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches\n );\n result = results[0];\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n let location = normalizeRedirectLocation(\n result.response.headers.get(\"Location\")!,\n new URL(request.url),\n basename\n );\n replace = location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, {\n submission,\n replace,\n });\n return { shortCircuited: true };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n pendingActionResult: [boundaryMatch.route.id, result],\n };\n }\n\n return {\n pendingActionResult: [actionMatch.route.id, result],\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionResult?: PendingActionResult\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n future.unstable_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionResult\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? { [pendingActionResult[0]]: pendingActionResult[1].error }\n : null,\n ...getActionDataForCommit(pendingActionResult),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n if (\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration)\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n\n let actionData: Record | null | undefined;\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n // This is cast to `any` currently because `RouteData`uses any and it\n // would be a breaking change to use any.\n // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n actionData = {\n [pendingActionResult[0]]: pendingActionResult[1].data as any,\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n actionData = null;\n } else {\n actionData = state.actionData;\n }\n }\n\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData !== undefined ? { actionData } : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n revalidatingFetchers.forEach((rf) => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(request, redirect.result, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingActionResult,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n // During partial hydration, preserve SSR errors for routes that don't re-run\n if (future.v7_partialHydration && initialHydration && state.errors) {\n Object.entries(state.errors)\n .filter(([id]) => !matchesToLoad.some((m) => m.route.id === id))\n .forEach(([routeId, error]) => {\n errors = Object.assign(errors || {}, { [routeId]: error });\n });\n }\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n flushSync,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n flushSync,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n flushSync: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\n \"action\",\n fetchRequest,\n [match],\n requestMatches\n );\n let actionResult = actionResults[0];\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, {\n fetcherSubmission: submission,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n future.unstable_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n [match.route.id, actionResult]\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(revalidationRequest, redirect.result);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n flushSync: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\n \"loader\",\n fetchRequest,\n [match],\n matches\n );\n let result = results[0];\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n request: Request,\n redirect: RedirectResult,\n {\n submission,\n fetcherSubmission,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n\n let location = redirect.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(\n location,\n new URL(request.url),\n basename\n );\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true,\n });\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.response.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n // Utility wrapper for calling dataStrategy client-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[]\n ): Promise {\n try {\n let results = await callDataStrategyImpl(\n dataStrategyImpl,\n type,\n request,\n matchesToLoad,\n matches,\n manifest,\n mapRouteProperties\n );\n\n return await Promise.all(\n results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result as Response;\n return {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n matchesToLoad[i].route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n ),\n };\n }\n\n return convertHandlerResultToDataResult(result);\n })\n );\n } catch (e) {\n // If the outer dataStrategy method throws, just return the error for all\n // matches - and it'll naturally bubble to the root\n return matchesToLoad.map(() => ({\n type: ResultType.error,\n error: e,\n }));\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n let [loaderResults, ...fetcherResults] = await Promise.all([\n matchesToLoad.length\n ? callDataStrategy(\"loader\", request, matchesToLoad, matches)\n : [],\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n let fetcherRequest = createClientSideRequest(\n init.history,\n f.path,\n f.controller.signal\n );\n return callDataStrategy(\n \"loader\",\n fetcherRequest,\n [f.match],\n f.matches\n ).then((r) => r[0]);\n } else {\n return Promise.resolve({\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path,\n }),\n });\n }\n }),\n ]);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n loaderResults.map(() => request.signal),\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n true\n ),\n ]);\n\n return {\n loaderResults,\n fetcherResults,\n };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher(key: string): Fetcher {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n *\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n * the bubbling of errors which allows single-fetch-type implementations\n * where the client will handle the bubbling and we may need to return data\n * for the handling route\n */\n async function query(\n request: Request,\n {\n requestContext,\n skipLoaderErrorBubbling,\n unstable_dataStrategy,\n }: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n unstable_dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n unstable_dataStrategy || null,\n skipLoaderErrorBubbling === true,\n null\n );\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n *\n * - `opts.routeId` allows you to specify the specific route handler to call.\n * If not provided the handler will determine the proper route by matching\n * against `request.url`\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n }: { requestContext?: unknown; routeId?: string } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n null,\n false,\n match\n );\n\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction for a\n // `queryRoute` call, we throw the `HandlerResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isHandlerResult(e) && isResponse(e.result)) {\n if (e.type === ResultType.error) {\n throw e.result;\n }\n return e.result;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches,\n isRouteRequest,\n requestContext,\n unstable_dataStrategy\n );\n result = results[0];\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")!,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = skipLoaderErrorBubbling\n ? actionMatch\n : findNearestBoundary(matches, actionMatch.route.id);\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n null,\n [boundaryMatch.route.id, result]\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : result.statusCode != null\n ? result.statusCode\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n null\n );\n\n return {\n ...context,\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionHeaders: result.headers\n ? { [actionMatch.route.id]: result.headers }\n : {},\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null,\n pendingActionResult?: PendingActionResult\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : pendingActionResult && isErrorResult(pendingActionResult[1])\n ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0])\n : matches;\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? {\n [pendingActionResult[0]]: pendingActionResult[1].error,\n }\n : null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await callDataStrategy(\n \"loader\",\n request,\n matchesToLoad,\n matches,\n isRouteRequest,\n requestContext,\n unstable_dataStrategy\n );\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionResult,\n activeDeferreds,\n skipLoaderErrorBubbling\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n // Utility wrapper for calling dataStrategy server-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n isRouteRequest: boolean,\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null\n ): Promise {\n let results = await callDataStrategyImpl(\n unstable_dataStrategy || defaultDataStrategy,\n type,\n request,\n matchesToLoad,\n matches,\n manifest,\n mapRouteProperties,\n requestContext\n );\n\n return await Promise.all(\n results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result as Response;\n // Throw redirects and let the server handle them with an HTTP redirect\n throw normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n matchesToLoad[i].route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n );\n }\n if (isResponse(result.result) && isRouteRequest) {\n // For SSR single-route requests, we want to hand Responses back\n // directly without unwrapping\n throw result;\n }\n\n return convertHandlerResultToDataResult(result);\n })\n );\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n request: Request,\n isRouteRequest: boolean,\n future: StaticHandlerFutureConfig\n) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isInitialLoad: boolean,\n skipActionErrorRevalidation: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n deletedFetchers: Set,\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionResult?: PendingActionResult\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingActionResult\n ? isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : pendingActionResult[1].data\n : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[0]\n : undefined;\n let boundaryMatches = boundaryId\n ? getLoaderMatchesUntilBoundary(matches, boundaryId)\n : matches;\n\n // Don't revalidate loaders by default after action 4xx/5xx responses\n // when the flag is enabled. They can still opt-into revalidation via\n // `shouldRevalidate` via `actionResult`\n let actionStatus = pendingActionResult\n ? pendingActionResult[1].statusCode\n : undefined;\n let shouldSkipRevalidation =\n skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (isInitialLoad) {\n if (typeof route.loader !== \"function\" || route.loader.hydrate) {\n return true;\n }\n return (\n state.loaderData[route.id] === undefined &&\n // Don't re-run if the loader ran and threw an error\n (!state.errors || state.errors[route.id] === undefined)\n );\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n unstable_actionStatus: actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial load (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n isInitialLoad ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n unstable_actionStatus: actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nfunction defaultDataStrategy(\n opts: DataStrategyFunctionArgs\n): ReturnType {\n return Promise.all(opts.matches.map((m) => m.resolve()));\n}\n\nasync function callDataStrategyImpl(\n dataStrategyImpl: DataStrategyFunction,\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n requestContext?: unknown\n): Promise {\n let routeIdsToLoad = matchesToLoad.reduce(\n (acc, m) => acc.add(m.route.id),\n new Set()\n );\n let loadedMatches = new Set();\n\n // Send all matches here to allow for a middleware-type implementation.\n // handler will be a no-op for unneeded routes and we filter those results\n // back out below.\n let results = await dataStrategyImpl({\n matches: matches.map((match) => {\n let shouldLoad = routeIdsToLoad.has(match.route.id);\n // `resolve` encapsulates the route.lazy, executing the\n // loader/action, and mapping return values/thrown errors to a\n // HandlerResult. Users can pass a callback to take fine-grained control\n // over the execution of the loader/action\n let resolve: DataStrategyMatch[\"resolve\"] = (handlerOverride) => {\n loadedMatches.add(match.route.id);\n return shouldLoad\n ? callLoaderOrAction(\n type,\n request,\n match,\n manifest,\n mapRouteProperties,\n handlerOverride,\n requestContext\n )\n : Promise.resolve({ type: ResultType.data, result: undefined });\n };\n\n return {\n ...match,\n shouldLoad,\n resolve,\n };\n }),\n request,\n params: matches[0].params,\n context: requestContext,\n });\n\n // Throw if any loadRoute implementations not called since they are what\n // ensures a route is fully loaded\n matches.forEach((m) =>\n invariant(\n loadedMatches.has(m.route.id),\n `\\`match.resolve()\\` was not called for route id \"${m.route.id}\". ` +\n \"You must call `match.resolve()` on every match passed to \" +\n \"`dataStrategy` to ensure all routes are properly loaded.\"\n )\n );\n\n // Filter out any middleware-only matches for which we didn't need to run handlers\n return results.filter((_, i) => routeIdsToLoad.has(matches[i].route.id));\n}\n\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n handlerOverride: Parameters[0],\n staticContext?: unknown\n): Promise {\n let result: HandlerResult;\n let onReject: (() => void) | undefined;\n\n let runHandler = (\n handler: AgnosticRouteObject[\"loader\"] | AgnosticRouteObject[\"action\"]\n ): Promise => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n // This will never resolve so safe to type it as Promise to\n // satisfy the function return value\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n\n let actualHandler = (ctx?: unknown) => {\n if (typeof handler !== \"function\") {\n return Promise.reject(\n new Error(\n `You cannot call the handler for a route which defines a boolean ` +\n `\"${type}\" [routeId: ${match.route.id}]`\n )\n );\n }\n return handler(\n {\n request,\n params: match.params,\n context: staticContext,\n },\n ...(ctx !== undefined ? [ctx] : [])\n );\n };\n\n let handlerPromise: Promise;\n if (handlerOverride) {\n handlerPromise = handlerOverride((ctx: unknown) => actualHandler(ctx));\n } else {\n handlerPromise = (async () => {\n try {\n let val = await actualHandler();\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n }\n\n return Promise.race([handlerPromise, abortPromise]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadLazyRouteModule(match.route, mapRouteProperties, manifest),\n ]);\n if (handlerError !== undefined) {\n throw handlerError;\n }\n result = value!;\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still runs even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, result: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result.result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n // We should already be catching and converting normal handler executions to\n // HandlerResults and returning them, so anything that throws here is an\n // unexpected error we still need to wrap\n return { type: ResultType.error, result: e };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n return result;\n}\n\nasync function convertHandlerResultToDataResult(\n handlerResult: HandlerResult\n): Promise {\n let { result, type, status } = handlerResult;\n\n if (isResponse(result)) {\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(result.status, result.statusText, data),\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : status,\n };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n return { type: ResultType.data, data: result, statusCode: status };\n}\n\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(\n response: Response,\n request: Request,\n routeId: string,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n v7_relativeSplatPath: boolean\n) {\n let location = response.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(\n 0,\n matches.findIndex((m) => m.route.id === routeId) + 1\n );\n location = normalizeTo(\n new URL(request.url),\n trimmedMatches,\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n response.headers.set(\"Location\", location);\n }\n\n return response;\n}\n\nfunction normalizeRedirectLocation(\n location: string,\n currentUrl: URL,\n basename: string\n): string {\n if (ABSOLUTE_URL_REGEX.test(location)) {\n // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\")\n ? new URL(currentUrl.protocol + normalizedLocation)\n : new URL(normalizedLocation);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n return location;\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingActionResult: PendingActionResult | undefined,\n activeDeferreds: Map,\n skipLoaderErrorBubbling: boolean\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n let pendingError =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : undefined;\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError !== undefined) {\n error = pendingError;\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n // Look upwards from the matched route for the closest ancestor error\n // boundary, defaulting to the root match. Prefer higher error values\n // if lower errors bubble to the same boundary\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError !== undefined && pendingActionResult) {\n errors = { [pendingActionResult[0]]: pendingError };\n loaderData[pendingActionResult[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingActionResult: PendingActionResult | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionResult,\n activeDeferreds,\n false // This method is only called client side so we always want to bubble\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match, controller } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\nfunction getActionDataForCommit(\n pendingActionResult: PendingActionResult | undefined\n) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1])\n ? {\n // Clear out prior actionData on errors\n actionData: {},\n }\n : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data,\n },\n };\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return { result, idx: i };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isHandlerResult(result: unknown): result is HandlerResult {\n return (\n result != null &&\n typeof result === \"object\" &&\n \"type\" in result &&\n \"result\" in result &&\n (result.type === ResultType.data || result.type === ResultType.error)\n );\n}\n\nfunction isRedirectHandlerResult(result: HandlerResult) {\n return (\n isResponse(result.result) && redirectStatusCodes.has(result.result.status)\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signals: (AbortSignal | null)[],\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(\n signal,\n \"Expected an AbortSignal for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n\n//#endregion\n","import * as React from \"react\";\nimport type {\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n AgnosticRouteMatch,\n History,\n LazyRouteFunction,\n Location,\n Action as NavigationType,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject\n // Omit `future` since those can be pulled from the `router`\n // `NavigationContext` needs future since it doesn't have a `router` in all cases\n extends Omit {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n unstable_viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n future: {\n v7_relativeSplatPath: boolean;\n };\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n UIMatch,\n} from \"@remix-run/router\";\nimport {\n IDLE_BLOCKER,\n Action as NavigationType,\n UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteMatch,\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a ``.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * ``.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by ``s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, future, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { future } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial | string,\n dataRouterState?: RemixRouter[\"state\"],\n future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n\n let remainingPathname = pathname;\n if (parentPathnameBase !== \"/\") {\n // Determine the remaining pathname by removing the # of URL segments the\n // parentPathnameBase has, instead of removing based on character count.\n // This is because we can't guarantee that incoming/outgoing encodings/\n // decodings will match exactly.\n // We decode paths before matching on a per-segment basis with\n // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n // match what `window.location.pathname` would reflect. Those don't 100%\n // align when it comes to encoded URI characters such as % and &.\n //\n // So we may end up with:\n // pathname: \"/descendant/a%25b/match\"\n // parentPathnameBase: \"/descendant/a%b\"\n //\n // And the direct substring removal approach won't work :/\n let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n }\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined ||\n matches[matches.length - 1].route.lazy !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState,\n future\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own ErrorBoundary or{\" \"}\n errorElement prop on your route.\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\nconst defaultErrorElement = ;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error !== undefined ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error !== undefined ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null,\n future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id] !== undefined\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n // If we're in a partial hydration mode, detect if we need to render down to\n // a given HydrateFallback while we load the rest of the hydration data\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState && future && future.v7_partialHydration) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n // Track the deepest fallback up until the first route without data\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n\n if (match.route.id) {\n let { loaderData, errors } = dataRouterState;\n let needsToRunLoader =\n match.route.loader &&\n loaderData[match.route.id] === undefined &&\n (!errors || errors[match.route.id] === undefined);\n if (match.route.lazy || needsToRunLoader) {\n // We found the first route that's not ready to render (waiting on\n // lazy, or has a loader that hasn't run yet). Flag that we need to\n // render a fallback and render up until the appropriate fallback\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n // Only data routers handle errors/fallbacks\n let error: any;\n let shouldRenderHydrateFallback = false;\n let errorElement: React.ReactNode | null = null;\n let hydrateFallbackElement: React.ReactNode | null = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : undefined;\n errorElement = match.route.errorElement || defaultErrorElement;\n\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\n \"route-fallback\",\n false,\n \"No `HydrateFallback` element provided to render during initial hydration\"\n );\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error !== undefined) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `` value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `` value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import type {\n InitialEntry,\n LazyRouteFunction,\n Location,\n MemoryHistory,\n RelativeRoutingType,\n Router as RemixRouter,\n RouterState,\n RouterSubscriber,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n Navigator,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./context\";\nimport {\n _renderMatches,\n useAsyncValue,\n useInRouterContext,\n useLocation,\n useNavigate,\n useOutlet,\n useRoutes,\n useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n v7_relativeSplatPath: boolean;\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n // Only accept future flags relevant to rendering behavior\n // routing flags should be accessed via router.future\n future?: Partial>;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n\n let setState = React.useCallback(\n (newState: RouterState) => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n },\n [setStateImpl, v7_startTransition]\n );\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n React.useEffect(() => {\n warning(\n fallbackElement == null || !router.future.v7_partialHydration,\n \"`` is deprecated when using \" +\n \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n );\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a