{"version":3,"file":"globalpayments-3ds.js","sources":["../../../node_modules/tslib/tslib.es6.js","../src/enums.ts","../src/lib/gp-error.ts","../src/lib/handle-notification-message-event.ts","../src/lib/make-request.ts","../src/lib/lightbox.ts","../src/lib/post-to-iframe.ts","../src/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { IChallengeWindowOptions } from \"./interfaces\";\n\nexport enum AuthenticationSource {\n Browser = \"BROWSER\",\n MobileSDK = \"MOBILE_SDK\",\n StoredRecurring = \"STORED_RECURRING\",\n}\n\nexport enum AuthenticationRequestType {\n AddCard = \"ADD_CARD\",\n CardholderVerification = \"CARDHOLDER_VERIFICATION\",\n InstalmentTransaction = \"INSTALMENT_TRANSACTION\",\n MaintainCard = \"MAINTAIN_CARD\",\n PaymentTransaction = \"PAYMENT_TRANSACTION\",\n RecurringTransaction = \"RECURRING_TRANSACTION\",\n}\n\nexport enum ChallengeRequestIndicator {\n ChallengeMandated = \"CHALLENGE_MANDATED\",\n ChallengePreferred = \"CHALLENGE_PREFERRED\",\n NoChallengeRequested = \"NO_CHALLENGE_REQUESTED\",\n NoPreference = \"NO_PREFERENCE\",\n}\n\nexport enum ChallengeWindowSize {\n FullScreen = \"FULL_SCREEN\",\n Windowed250x400 = \"WINDOWED_250X400\",\n Windowed390x400 = \"WINDOWED_390X400\",\n Windowed500x600 = \"WINDOWED_500X600\",\n Windowed600x400 = \"WINDOWED_600X400\",\n}\n\nexport enum MessageCategory {\n NonPayment = \"NON_PAYMENT_AUTHENTICATION\",\n Payment = \"PAYMENT_AUTHENTICATION\",\n}\n\nexport enum MethodUrlCompletion {\n Unavailable = \"UNAVAILABLE\",\n No = \"NO\",\n Yes = \"YES\",\n}\n\nexport enum TransactionStatus {\n AuthenticationAttemptedButNotSuccessful = \"AUTHENTICATION_ATTEMPTED_BUT_NOT_SUCCESSFUL\",\n AuthenticationCouldNotBePerformed = \"AUTHENTICATION_COULD_NOT_BE_PERFORMED\",\n AuthenticationFailed = \"AUTHENTICATION_FAILED\",\n AuthenticationIssuerRejected = \"AUTHENTICATION_ISSUER_REJECTED\",\n AuthenticationSuccessful = \"AUTHENTICATION_SUCCESSFUL\",\n ChallengeRequired = \"CHALLENGE_REQUIRED\",\n}\n\nexport enum TransactionStatusReason {\n CardAuthenticationFailed = \"CARD_AUTHENTICATION_FAILED\",\n UnknownDevice = \"UNKNOWN_DEVICE\",\n UnsupportedDevice = \"UNSUPPORTED_DEVICE\",\n ExceedsAuthenticationFrequencyLimit = \"EXCEEDS_AUTHENTICATION_FREQUENCY_LIMIT\",\n ExpiredCard = \"EXPIRED_CARD\",\n InvalidCardNumber = \"INVALID_CARD_NUMBER\",\n InvalidTransaction = \"INVALID_TRANSACTION\",\n NoCardRecord = \"NO_CARD_RECORD\",\n SecurityFailure = \"SECURITY_FAILURE\",\n StolenCard = \"STOLEN_CARD\",\n SuspectedFraud = \"SUSPECTED_FRAUD\",\n TransactionNotPermittedToCardholder = \"TRANSACTION_NOT_PERMITTED_TO_CARDHOLDER\",\n CardholderNotEnrolledInService = \"CARDHOLDER_NOT_ENROLLED_IN_SERVICE\",\n TransactionTimedOutAtTheAcs = \"TRANSACTION_TIMED_OUT_AT_THE_ACS\",\n LowConfidence = \"LOW_CONFIDENCE\",\n MediumConfidence = \"MEDIUM_CONFIDENCE\",\n HighConfidence = \"HIGH_CONFIDENCE\",\n VeryHighConfidence = \"VERY_HIGH_CONFIDENCE\",\n ExceedsAcsMaximumChallenges = \"EXCEEDS_ACS_MAXIMUM_CHALLENGES\",\n NonPaymentTransactionNotSupported = \"NON_PAYMENT_TRANSACTION_NOT_SUPPORTED\",\n ThreeriTransactionNotSupported = \"THREERI_TRANSACTION_NOT_SUPPORTED\",\n}\n\nexport function colorDepth(value: number) {\n let result = \"\";\n switch (value) {\n case 1:\n return \"ONE_BIT\";\n case 2:\n result += \"TWO\";\n break;\n case 4:\n result += \"FOUR\";\n break;\n case 8:\n result += \"EIGHT\";\n break;\n case 15:\n result += \"FIFTEEN\";\n break;\n case 16:\n result += \"SIXTEEN\";\n break;\n case 24:\n case 30:\n result += \"TWENTY_FOUR\";\n break;\n case 32:\n result += \"THIRTY_TWO\";\n break;\n case 48:\n result += \"FORTY_EIGHT\";\n break;\n default:\n throw new Error(`Unknown color depth '${value}'`);\n }\n return `${result}_BITS`;\n}\n\nexport function dimensionsFromChallengeWindowSize(\n options: IChallengeWindowOptions,\n) {\n let height = 0;\n let width = 0;\n\n switch ((options as any).size || options.windowSize) {\n case ChallengeWindowSize.Windowed250x400:\n height = 250;\n width = 400;\n break;\n case ChallengeWindowSize.Windowed390x400:\n height = 390;\n width = 400;\n break;\n case ChallengeWindowSize.Windowed500x600:\n height = 500;\n width = 600;\n break;\n case ChallengeWindowSize.Windowed600x400:\n height = 600;\n width = 400;\n break;\n default:\n break;\n }\n return { height, width };\n}\n\nexport function messageCategoryFromAuthenticationRequestType(\n authenticationRequestType: AuthenticationRequestType,\n) {\n switch (authenticationRequestType) {\n case AuthenticationRequestType.AddCard:\n case AuthenticationRequestType.CardholderVerification:\n case AuthenticationRequestType.MaintainCard:\n return MessageCategory.NonPayment;\n case AuthenticationRequestType.InstalmentTransaction:\n case AuthenticationRequestType.PaymentTransaction:\n case AuthenticationRequestType.RecurringTransaction:\n default:\n return MessageCategory.Payment;\n }\n}\n","export interface IGPErrorReason {\n code: string;\n message: string;\n}\n\nexport class GPError extends Error {\n public error = true;\n public reasons: IGPErrorReason[];\n\n constructor(reasons: IGPErrorReason[], message?: string) {\n super(message || \"Error: see `reasons` property\");\n this.reasons = reasons;\n }\n}\n","import {\n IChallengeNotificationData,\n IMethodNotificationData,\n} from \"../interfaces\";\n\nexport function handleNotificationMessageEvent(\n event: string,\n data: IChallengeNotificationData | IMethodNotificationData,\n origin?: string,\n) {\n if (window.parent !== window) {\n window.parent.postMessage(\n { data, event },\n origin || window.location.origin,\n );\n }\n}\n","import { GPError } from \"./gp-error\";\n\n// tslint:disable-next-line:no-empty-interface\nexport interface IRequestData {}\n\n// tslint:disable-next-line:no-empty-interface\nexport interface IResponseData {}\n\nexport async function makeRequest(\n endpoint: string,\n data: IRequestData,\n): Promise {\n const headers = {\n \"Content-Type\": \"application/json\",\n };\n\n try {\n const rawResponse = await fetch(endpoint, {\n body: JSON.stringify(data),\n credentials: \"omit\",\n headers: typeof Headers !== \"undefined\" ? new Headers(headers) : headers,\n method: \"POST\",\n });\n\n if (!rawResponse.ok) {\n throw new GPError(\n [\n {\n code: rawResponse.status.toString(),\n message: await rawResponse.text(),\n },\n ],\n rawResponse.statusText,\n );\n }\n\n return await rawResponse.json();\n } catch (e) {\n let reasons = [{ code: e.name, message: e.message }];\n if (e.reasons) {\n reasons = reasons.concat(e.reasons);\n }\n throw new GPError(reasons);\n }\n}\n","import {\n ChallengeWindowSize,\n dimensionsFromChallengeWindowSize,\n} from \"../enums\";\nimport { IChallengeWindowOptions } from \"../interfaces\";\n\n// most of this module is pulled from the legacy Realex Payments JavaScript library\n\nexport const isWindowsMobileOs = /Windows Phone|IEMobile/.test(\n navigator.userAgent,\n);\nexport const isAndroidOrIOs = /Android|iPad|iPhone|iPod/.test(\n navigator.userAgent,\n);\nexport const isMobileXS =\n ((window.innerWidth > 0 ? window.innerWidth : screen.width) <= 360\n ? true\n : false) ||\n ((window.innerHeight > 0 ? window.innerHeight : screen.height) <= 360\n ? true\n : false);\n\n// For IOs/Android and small screen devices always open in new tab/window\n// TODO: Confirm/implement once sandbox support is in place\nexport const isMobileNewTab =\n !isWindowsMobileOs && (isAndroidOrIOs || isMobileXS);\n\n// Display IFrame on WIndows Phone OS mobile devices\nexport const isMobileIFrame = isWindowsMobileOs || isMobileNewTab;\n\nexport const randomId = Math.random()\n .toString(16)\n .substr(2, 8);\n\nexport function createLightbox(\n iFrame: HTMLIFrameElement,\n options: IChallengeWindowOptions,\n) {\n // Create the overlay\n const overlayElement = createOverlay();\n\n // Create the spinner\n const spinner = createSpinner();\n document.body.appendChild(spinner);\n\n const { height, width } = dimensionsFromChallengeWindowSize(options);\n\n // Configure the iframe\n if (height) {\n iFrame.setAttribute(\"height\", `${height}px`);\n }\n iFrame.setAttribute(\"frameBorder\", \"0\");\n if (width) {\n iFrame.setAttribute(\"width\", `${width}px`);\n }\n iFrame.setAttribute(\"seamless\", \"seamless\");\n\n iFrame.style.zIndex = \"10001\";\n iFrame.style.position = \"absolute\";\n iFrame.style.transition = \"transform 0.5s ease-in-out\";\n iFrame.style.transform = \"scale(0.7)\";\n iFrame.style.opacity = \"0\";\n\n overlayElement.appendChild(iFrame);\n\n if (isMobileIFrame || options.windowSize === ChallengeWindowSize.FullScreen) {\n iFrame.style.top = \"0px\";\n iFrame.style.bottom = \"0px\";\n iFrame.style.left = \"0px\";\n iFrame.style.marginLeft = \"0px;\";\n iFrame.style.width = \"100%\";\n iFrame.style.height = \"100%\";\n iFrame.style.minHeight = \"100%\";\n (iFrame.style as any).WebkitTransform = \"translate3d(0,0,0)\";\n iFrame.style.transform = \"translate3d(0, 0, 0)\";\n\n const metaTag = document.createElement(\"meta\");\n metaTag.name = \"viewport\";\n metaTag.content =\n \"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\";\n document.getElementsByTagName(\"head\")[0].appendChild(metaTag);\n } else {\n iFrame.style.top = \"40px\";\n iFrame.style.left = \"50%\";\n iFrame.style.marginLeft = `-${width / 2}px`;\n }\n\n iFrame.onload = getIFrameOnloadEventHandler(\n iFrame,\n spinner,\n overlayElement,\n options,\n );\n}\n\nfunction closeModal() {\n Array.prototype.slice.call(document\n .querySelectorAll(`[target$=\"-${randomId}\"],[id$=\"-${randomId}\"]`))\n .forEach((element) => {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n });\n}\n\nfunction createOverlay() {\n const overlay = document.createElement(\"div\");\n overlay.setAttribute(\"id\", `GlobalPayments-overlay-${randomId}`);\n overlay.style.position = \"fixed\";\n overlay.style.width = \"100%\";\n overlay.style.height = \"100%\";\n overlay.style.top = \"0\";\n overlay.style.left = \"0\";\n overlay.style.transition = \"all 0.3s ease-in-out\";\n overlay.style.zIndex = \"100\";\n\n if (isMobileIFrame) {\n overlay.style.position = \"absolute !important\";\n (overlay.style as any).WebkitOverflowScrolling = \"touch\";\n overlay.style.overflowX = \"hidden\";\n overlay.style.overflowY = \"scroll\";\n }\n\n document.body.appendChild(overlay);\n\n setTimeout(() => {\n overlay.style.background = \"rgba(0, 0, 0, 0.7)\";\n }, 1);\n\n return overlay;\n}\n\nfunction createCloseButton(options: IChallengeWindowOptions) {\n if (\n document.getElementById(`GlobalPayments-frame-close-${randomId}`) !== null\n ) {\n return;\n }\n\n const closeButton = document.createElement(\"img\");\n closeButton.id = `GlobalPayments-frame-close-${randomId}`;\n closeButton.src =\n // tslint:disable-next-line:max-line-length\n \"data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUJFRjU1MEIzMUQ3MTFFNThGQjNERjg2NEZCRjFDOTUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUJFRjU1MEMzMUQ3MTFFNThGQjNERjg2NEZCRjFDOTUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQkVGNTUwOTMxRDcxMUU1OEZCM0RGODY0RkJGMUM5NSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQkVGNTUwQTMxRDcxMUU1OEZCM0RGODY0RkJGMUM5NSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlHco5QAAAHpSURBVHjafFRdTsJAEF42JaTKn4glGIg++qgX4AAchHAJkiZcwnAQD8AF4NFHCaC2VgWkIQQsfl/jNJUik8Duzs/XmW9mN7Xb7VRc5vP5zWKxaK5Wq8Zmu72FqobfJG0YQ9M0+/l8/qFQKDzGY1JxENd1288vLy1s786KRZXJZCLber1Wn7MZt4PLarVnWdZ9AmQ8Hncc17UvymVdBMB/MgPQm+cFFcuy6/V6lzqDf57ntWGwYdBIVx0TfkBD6I9M35iRJgfIoAVjBLDZbA4CiJ5+9AdQi/EahibqDTkQx6fRSIHcPwA8Uy9A9Gcc47Xv+w2wzhRDYzqdVihLIbsIiCvP1NNOoX/29FQx3vgOgtt4FyRdCgPRarX4+goB9vkyAMh443cOEsIAAcjncuoI4TXWMAmCIGFhCQLAdZ8jym/cRJ+Y5nC5XCYAhINKpZLgSISZgoqh5iiLQrojAFICVwGS7tCfe5DbZzkP56XS4NVxwvTI/vXVVYIDnqmnnX70ZxzjNS8THHooK5hMpxHQIREA+tEfA9djfHR3MHkdx3Hspe9r3B+VzWaj2RESyR2mlCUE4MoGQDdxiwHURq2t94+PO9bMIYyTyDNLwMoM7g8+BfKeYGniyw2MdfSehF3Qmk1IvCc/AgwAaS86Etp38bUAAAAASUVORK5CYII=\";\n closeButton.style.transition = \"all 0.5s ease-in-out\";\n closeButton.style.opacity = \"0\";\n (closeButton.style as any).float = \"left\";\n closeButton.style.position = \"absolute\";\n closeButton.style.left = \"50%\";\n closeButton.style.zIndex = \"99999999\";\n closeButton.style.top = \"30px\";\n\n const { width } = dimensionsFromChallengeWindowSize(options);\n if (width) {\n closeButton.style.marginLeft = `${width / 2 - 8 /* half image width */}px`;\n }\n\n setTimeout(() => {\n closeButton.style.opacity = \"1\";\n }, 500);\n\n if (isMobileIFrame || options.windowSize === ChallengeWindowSize.FullScreen) {\n (closeButton.style as any).float = \"right\";\n closeButton.style.top = \"20px\";\n closeButton.style.left = \"initial\";\n closeButton.style.marginLeft = \"0px\";\n closeButton.style.right = \"20px\";\n }\n\n return closeButton;\n}\n\nfunction createSpinner() {\n const spinner = document.createElement(\"img\");\n spinner.setAttribute(\n \"src\",\n // tslint:disable-next-line:max-line-length\n \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjAiIHdpZHRoPSIzMnB4IiBoZWlnaHQ9IjMycHgiIHZpZXdCb3g9IjAgMCAxMjggMTI4IiB4bWw6c3BhY2U9InByZXNlcnZlIj48Zz48cGF0aCBkPSJNMzguNTIgMzMuMzdMMjEuMzYgMTYuMkE2My42IDYzLjYgMCAwIDEgNTkuNS4xNnYyNC4zYTM5LjUgMzkuNSAwIDAgMC0yMC45OCA4LjkyeiIgZmlsbD0iIzAwNzBiYSIgZmlsbC1vcGFjaXR5PSIxIi8+PHBhdGggZD0iTTM4LjUyIDMzLjM3TDIxLjM2IDE2LjJBNjMuNiA2My42IDAgMCAxIDU5LjUuMTZ2MjQuM2EzOS41IDM5LjUgMCAwIDAtMjAuOTggOC45MnoiIGZpbGw9IiNjMGRjZWUiIGZpbGwtb3BhY2l0eT0iMC4yNSIgdHJhbnNmb3JtPSJyb3RhdGUoNDUgNjQgNjQpIi8+PHBhdGggZD0iTTM4LjUyIDMzLjM3TDIxLjM2IDE2LjJBNjMuNiA2My42IDAgMCAxIDU5LjUuMTZ2MjQuM2EzOS41IDM5LjUgMCAwIDAtMjAuOTggOC45MnoiIGZpbGw9IiNjMGRjZWUiIGZpbGwtb3BhY2l0eT0iMC4yNSIgdHJhbnNmb3JtPSJyb3RhdGUoOTAgNjQgNjQpIi8+PHBhdGggZD0iTTM4LjUyIDMzLjM3TDIxLjM2IDE2LjJBNjMuNiA2My42IDAgMCAxIDU5LjUuMTZ2MjQuM2EzOS41IDM5LjUgMCAwIDAtMjAuOTggOC45MnoiIGZpbGw9IiNjMGRjZWUiIGZpbGwtb3BhY2l0eT0iMC4yNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTM1IDY0IDY0KSIvPjxwYXRoIGQ9Ik0zOC41MiAzMy4zN0wyMS4zNiAxNi4yQTYzLjYgNjMuNiAwIDAgMSA1OS41LjE2djI0LjNhMzkuNSAzOS41IDAgMCAwLTIwLjk4IDguOTJ6IiBmaWxsPSIjYzBkY2VlIiBmaWxsLW9wYWNpdHk9IjAuMjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA2NCA2NCkiLz48cGF0aCBkPSJNMzguNTIgMzMuMzdMMjEuMzYgMTYuMkE2My42IDYzLjYgMCAwIDEgNTkuNS4xNnYyNC4zYTM5LjUgMzkuNSAwIDAgMC0yMC45OCA4LjkyeiIgZmlsbD0iI2MwZGNlZSIgZmlsbC1vcGFjaXR5PSIwLjI1IiB0cmFuc2Zvcm09InJvdGF0ZSgyMjUgNjQgNjQpIi8+PHBhdGggZD0iTTM4LjUyIDMzLjM3TDIxLjM2IDE2LjJBNjMuNiA2My42IDAgMCAxIDU5LjUuMTZ2MjQuM2EzOS41IDM5LjUgMCAwIDAtMjAuOTggOC45MnoiIGZpbGw9IiNjMGRjZWUiIGZpbGwtb3BhY2l0eT0iMC4yNSIgdHJhbnNmb3JtPSJyb3RhdGUoMjcwIDY0IDY0KSIvPjxwYXRoIGQ9Ik0zOC41MiAzMy4zN0wyMS4zNiAxNi4yQTYzLjYgNjMuNiAwIDAgMSA1OS41LjE2djI0LjNhMzkuNSAzOS41IDAgMCAwLTIwLjk4IDguOTJ6IiBmaWxsPSIjYzBkY2VlIiBmaWxsLW9wYWNpdHk9IjAuMjUiIHRyYW5zZm9ybT0icm90YXRlKDMxNSA2NCA2NCkiLz48YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InJvdGF0ZSIgdmFsdWVzPSIwIDY0IDY0OzQ1IDY0IDY0OzkwIDY0IDY0OzEzNSA2NCA2NDsxODAgNjQgNjQ7MjI1IDY0IDY0OzI3MCA2NCA2NDszMTUgNjQgNjQiIGNhbGNNb2RlPSJkaXNjcmV0ZSIgZHVyPSIxMjgwbXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIj48L2FuaW1hdGVUcmFuc2Zvcm0+PC9nPjwvc3ZnPg==\",\n );\n spinner.setAttribute(\"id\", `GlobalPayments-loader-${randomId}`);\n spinner.style.left = \"50%\";\n spinner.style.position = \"fixed\";\n spinner.style.background = \"#FFFFFF\";\n spinner.style.borderRadius = \"50%\";\n spinner.style.width = \"30px\";\n spinner.style.zIndex = \"200\";\n spinner.style.marginLeft = \"-15px\";\n spinner.style.top = \"120px\";\n return spinner;\n}\n\nfunction getIFrameOnloadEventHandler(\n iFrame: HTMLIFrameElement,\n spinner: Element,\n overlayElement: Element,\n options: IChallengeWindowOptions,\n) {\n return () => {\n iFrame.style.opacity = \"1\";\n iFrame.style.transform = \"scale(1)\";\n iFrame.style.backgroundColor = \"#ffffff\";\n\n if (spinner.parentNode) {\n spinner.parentNode.removeChild(spinner);\n }\n\n let closeButton: HTMLImageElement | undefined;\n\n closeButton = createCloseButton(options);\n if (closeButton) {\n overlayElement.appendChild(closeButton);\n closeButton.addEventListener(\n \"click\",\n () => {\n if (closeButton) {\n closeModal();\n }\n },\n true,\n );\n }\n };\n}\n","import { dimensionsFromChallengeWindowSize } from \"../enums\";\nimport {\n IChallengeWindowOptions,\n IIframeData,\n IMessageEventData,\n} from \"../interfaces\";\nimport { createLightbox, randomId } from \"./lightbox\";\n\nexport function postToIframe(\n endpoint: string,\n fields: any,\n options: IChallengeWindowOptions,\n): Promise {\n return new Promise((resolve, reject) => {\n let timeout: any;\n if (options.timeout) {\n timeout = setTimeout(() => {\n ensureIframeClosed(timeout);\n reject(new Error(\"timeout reached\"));\n }, options.timeout);\n }\n\n const iframe = document.createElement(\"iframe\");\n iframe.id = iframe.name = `GlobalPayments-3DSecure-${randomId}`;\n iframe.style.display = options.hide ? \"none\" : \"inherit\";\n\n const form = createForm(endpoint, iframe.id, fields);\n\n switch (options.displayMode) {\n case \"redirect\":\n // TODO: Add redirect support once sandbox environment respects configured\n // challengeNotificationUrl instead of hardcoded value\n ensureIframeClosed(timeout);\n reject(new Error(\"Not implemented\"));\n return;\n case \"lightbox\":\n createLightbox(iframe, options);\n break;\n case \"embedded\":\n default:\n if (!handleEmbeddedIframe(reject, { iframe, timeout }, options)) {\n // rejected\n return;\n }\n break;\n }\n\n window.addEventListener(\n \"message\",\n getWindowMessageEventHandler(resolve, {\n origin: options.origin,\n timeout,\n }),\n );\n\n document.body.appendChild(form);\n form.submit();\n });\n}\n\nfunction createForm(action: string, target: string, fields: any) {\n const form = document.createElement(\"form\");\n\n form.setAttribute(\"method\", \"POST\");\n form.setAttribute(\"action\", action);\n form.setAttribute(\"target\", target);\n\n for (const field of fields) {\n const input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n input.setAttribute(\"name\", field.name);\n input.setAttribute(\"value\", field.value);\n form.appendChild(input);\n }\n\n return form;\n}\n\nfunction ensureIframeClosed(timeout: number) {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n try {\n Array.prototype.slice.call(document\n .querySelectorAll(`[target$=\"-${randomId}\"],[id$=\"-${randomId}\"]`))\n .forEach((element) => {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n });\n } catch (e) {\n /** */\n }\n}\n\nfunction getWindowMessageEventHandler(\n resolve: (\n data: IMessageEventData | PromiseLike,\n ) => void,\n data: IIframeData,\n) {\n return (e: MessageEvent) => {\n const origin = data.origin || window.location.origin;\n\n if (origin !== e.origin) {\n return;\n }\n\n ensureIframeClosed(data.timeout || 0);\n resolve(e.data);\n };\n}\n\nfunction handleEmbeddedIframe(\n reject: (reason: any) => void,\n data: IIframeData,\n options: IChallengeWindowOptions,\n) {\n let targetElement: Element | null | undefined;\n\n if (options.hide) {\n targetElement = document.body;\n } else if (typeof options.target === \"string\") {\n targetElement = document.querySelector(options.target);\n } else {\n targetElement = options.target;\n }\n\n if (!targetElement) {\n ensureIframeClosed(data.timeout || 0);\n reject(new Error(\"Embed target not found\"));\n return false;\n }\n\n const { height, width } = dimensionsFromChallengeWindowSize(options);\n\n if (data.iframe) {\n data.iframe.setAttribute(\"height\", height ? `${height}px` : \"100%\");\n data.iframe.setAttribute(\"width\", width ? `${width}px` : \"100%\");\n targetElement.appendChild(data.iframe);\n }\n\n return true;\n}\n","import \"globalpayments-lib/polyfills\";\n\n// re-exports\nexport * from \"./enums\";\nexport * from \"./interfaces\";\n\n// local imports\nimport {\n AuthenticationRequestType,\n AuthenticationSource,\n ChallengeRequestIndicator,\n colorDepth,\n messageCategoryFromAuthenticationRequestType,\n} from \"./enums\";\nimport {\n IBrowserData,\n IChallengeNotificationData,\n IChallengeWindowOptions,\n ICheckVersionRequestData,\n ICheckVersionResponseData,\n IInitiateAuthenticationRequestData,\n IInitiateAuthenticationResponseData,\n IMethodNotificationData,\n} from \"./interfaces\";\nimport { GPError } from \"./lib/gp-error\";\nimport { handleNotificationMessageEvent } from \"./lib/handle-notification-message-event\";\nimport { makeRequest } from \"./lib/make-request\";\nimport { postToIframe } from \"./lib/post-to-iframe\";\n\n/**\n * Retrieves client browser runtime data.\n */\nexport function getBrowserData(): IBrowserData {\n const now = new Date();\n return {\n colorDepth: screen && colorDepth(screen.colorDepth),\n javaEnabled: navigator && navigator.javaEnabled(),\n javascriptEnabled: true, // if this is running, js is enabled\n language: navigator && navigator.language,\n screenHeight: screen && screen.height,\n screenWidth: screen && screen.width,\n time: now,\n timezoneOffset: now.getTimezoneOffset() / 60,\n userAgent: navigator && navigator.userAgent,\n };\n}\n\n/**\n * Facilitates backend request to merchant integration to check the enrolled 3DS version for the consumer's card.\n *\n * @param endpoint Merchant integration endpoint responsible for performing the version check\n * @param data Request data to aid in version check request\n * @throws When an error occurred during the request\n */\nexport async function checkVersion(\n endpoint: string,\n data?: ICheckVersionRequestData,\n): Promise {\n data = data || {};\n\n try {\n const response = (await makeRequest(\n endpoint,\n data,\n )) as ICheckVersionResponseData;\n\n return await handle3dsVersionCheck(response, data.methodWindow);\n } catch (e) {\n let reasons = [{ code: e.name, message: e.message }];\n if (e.reasons) {\n reasons = reasons.concat(e.reasons);\n }\n throw new GPError(reasons);\n }\n}\n\n/**\n * Facilitates backend request to merchant integration to initiate 3DS 2.0 authentication workflows with the consumer.\n *\n * @param endpoint Merchant integration endpoint responsible for initiating the authentication request\n * @param data Request data to aid in initiating authentication\n * @throws When an error occurred during the request\n */\nexport async function initiateAuthentication(\n endpoint: string,\n data: IInitiateAuthenticationRequestData,\n): Promise {\n try {\n data.authenticationSource =\n data.authenticationSource || AuthenticationSource.Browser;\n data.authenticationRequestType =\n data.authenticationRequestType ||\n AuthenticationRequestType.PaymentTransaction;\n data.messageCategory =\n data.messageCategory ||\n messageCategoryFromAuthenticationRequestType(\n data.authenticationRequestType,\n );\n data.challengeRequestIndicator =\n data.challengeRequestIndicator || ChallengeRequestIndicator.NoPreference;\n // still needs ip address and accept header from server-side\n data.browserData = data.browserData || getBrowserData();\n\n const response = (await makeRequest(\n endpoint,\n data,\n )) as IInitiateAuthenticationResponseData;\n\n return await handleInitiateAuthentication(response, data.challengeWindow);\n } catch (e) {\n let reasons = [{ code: e.name, message: e.message }];\n if (e.reasons) {\n reasons = reasons.concat(e.reasons);\n }\n throw new GPError(reasons);\n }\n}\n\n/**\n * Handles response from merchant integration endpoint for the version check request. When a card is enrolled and a\n * method URL is present, a hidden iframe to the method URL will be created to handle device fingerprinting\n * requirements.\n *\n * @param data Version check data from merchant integration endpoint\n * @param options Configuration options for the method window\n * @throws When a card is not enrolled\n */\nexport async function handle3dsVersionCheck(\n data: ICheckVersionResponseData,\n options?: IChallengeWindowOptions,\n) {\n if (!data.enrolled) {\n throw new Error(\"Card not enrolled\");\n }\n\n options = options || {};\n options.hide = typeof options.hide === \"undefined\" ? true : options.hide;\n options.timeout =\n typeof options.timeout === \"undefined\" ? 30 * 1000 : options.timeout;\n\n if (data.methodUrl) {\n await postToIframe(\n data.methodUrl,\n [{ name: \"threeDSMethodData\", value: data.methodData }],\n options,\n );\n }\n\n return data;\n}\n/**\n * Handles response from merchant integration endpoint for initiating 3DS 2.0 authentication flows with consumer. If a\n * challenge is mandated, an iframe will be created for the issuer's necessary challenge URL.\n *\n * @param data Initiate authentication data from merchant integration endpoint\n * @param options Configuration options for the challenge window\n * @throws When a challenge is mandated but no challenge URL was supplied\n * @throws When an error occurred during the challenge request\n */\nexport async function handleInitiateAuthentication(\n data: IInitiateAuthenticationResponseData,\n options: IChallengeWindowOptions,\n) {\n if (data.challengeMandated) {\n data.challenge = data.challenge || {};\n\n if (!data.challenge.requestUrl) {\n throw new Error(\"Invalid challenge state. Missing challenge URL\");\n }\n\n const response = await postToIframe(\n data.challenge.requestUrl,\n [\n { name: \"creq\", value: data.challenge.encodedChallengeRequest },\n // TODO: support session data\n ],\n options,\n );\n\n data.challenge.response = response;\n }\n\n return data;\n}\n\n/**\n * Assists with notifying the parent window of challenge status\n *\n * @param data Raw data from the challenge notification\n * @param origin Target origin for the message. Default is `window.location.origin`.\n */\nexport function handleChallengeNotification(\n data: IChallengeNotificationData,\n origin?: string,\n) {\n handleNotificationMessageEvent(\"challengeNotification\", data, origin);\n}\n\n/**\n * Assists with notifying the parent window of method status\n *\n * @param data Raw data from the method notification\n * @param origin Target origin for the message. Default is `window.location.origin`.\n */\nexport function handleMethodNotification(\n data: IMethodNotificationData,\n origin?: string,\n) {\n handleNotificationMessageEvent(\"methodNotification\", data, origin);\n}\n"],"names":["AuthenticationSource","AuthenticationRequestType","ChallengeRequestIndicator","ChallengeWindowSize","MessageCategory","MethodUrlCompletion","TransactionStatus","TransactionStatusReason"],"mappings":";;;;IAAA;IACA;AACA;IACA;IACA;AACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACA;IACA,IAAI,aAAa,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE;IACnC,IAAI,aAAa,GAAG,MAAM,CAAC,cAAc;IACzC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;IACpF,QAAQ,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,IAAI,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC;AACF;IACO,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;IAChC,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,IAAI,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;IAC3C,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC;AAuCD;IACO,SAAS,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;IAC7D,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;IAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;IACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;IACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;IACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,KAAK,CAAC,CAAC;IACP,CAAC;AACD;IACO,SAAS,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE;IAC3C,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACrH,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,WAAW,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7J,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;IACtE,IAAI,SAAS,IAAI,CAAC,EAAE,EAAE;IACtB,QAAQ,IAAI,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;IACtE,QAAQ,OAAO,CAAC,EAAE,IAAI;IACtB,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzK,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACpD,YAAY,QAAQ,EAAE,CAAC,CAAC,CAAC;IACzB,gBAAgB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM;IAC9C,gBAAgB,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACxE,gBAAgB,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;IACjE,gBAAgB,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;IACjE,gBAAgB;IAChB,oBAAoB,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE;IAChI,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;IAC1G,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACzF,oBAAoB,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;IACvF,oBAAoB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IAC1C,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;IAC3C,aAAa;IACb,YAAY,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACvC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;IAClE,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACzF,KAAK;IACL;;ICrGA,WAAY,oBAAoB;QAC9B,2CAAmB,CAAA;QACnB,gDAAwB,CAAA;QACxB,4DAAoC,CAAA;IACtC,CAAC,EAJWA,4BAAoB,KAApBA,4BAAoB,QAI/B;IAED,WAAY,yBAAyB;QACnC,iDAAoB,CAAA;QACpB,+EAAkD,CAAA;QAClD,6EAAgD,CAAA;QAChD,2DAA8B,CAAA;QAC9B,uEAA0C,CAAA;QAC1C,2EAA8C,CAAA;IAChD,CAAC,EAPWC,iCAAyB,KAAzBA,iCAAyB,QAOpC;IAED,WAAY,yBAAyB;QACnC,qEAAwC,CAAA;QACxC,uEAA0C,CAAA;QAC1C,4EAA+C,CAAA;QAC/C,2DAA8B,CAAA;IAChC,CAAC,EALWC,iCAAyB,KAAzBA,iCAAyB,QAKpC;IAED,WAAY,mBAAmB;QAC7B,iDAA0B,CAAA;QAC1B,2DAAoC,CAAA;QACpC,2DAAoC,CAAA;QACpC,2DAAoC,CAAA;QACpC,2DAAoC,CAAA;IACtC,CAAC,EANWC,2BAAmB,KAAnBA,2BAAmB,QAM9B;IAED,WAAY,eAAe;QACzB,4DAAyC,CAAA;QACzC,qDAAkC,CAAA;IACpC,CAAC,EAHWC,uBAAe,KAAfA,uBAAe,QAG1B;IAED,WAAY,mBAAmB;QAC7B,kDAA2B,CAAA;QAC3B,gCAAS,CAAA;QACT,kCAAW,CAAA;IACb,CAAC,EAJWC,2BAAmB,KAAnBA,2BAAmB,QAI9B;IAED,WAAY,iBAAiB;QAC3B,4GAAuF,CAAA;QACvF,gGAA2E,CAAA;QAC3E,mEAA8C,CAAA;QAC9C,oFAA+D,CAAA;QAC/D,2EAAsD,CAAA;QACtD,6DAAwC,CAAA;IAC1C,CAAC,EAPWC,yBAAiB,KAAjBA,yBAAiB,QAO5B;IAED,WAAY,uBAAuB;QACjC,kFAAuD,CAAA;QACvD,2DAAgC,CAAA;QAChC,mEAAwC,CAAA;QACxC,yGAA8E,CAAA;QAC9E,uDAA4B,CAAA;QAC5B,oEAAyC,CAAA;QACzC,qEAA0C,CAAA;QAC1C,0DAA+B,CAAA;QAC/B,+DAAoC,CAAA;QACpC,qDAA0B,CAAA;QAC1B,6DAAkC,CAAA;QAClC,0GAA+E,CAAA;QAC/E,gGAAqE,CAAA;QACrE,2FAAgE,CAAA;QAChE,2DAAgC,CAAA;QAChC,iEAAsC,CAAA;QACtC,6DAAkC,CAAA;QAClC,sEAA2C,CAAA;QAC3C,yFAA8D,CAAA;QAC9D,sGAA2E,CAAA;QAC3E,+FAAoE,CAAA;IACtE,CAAC,EAtBWC,+BAAuB,KAAvBA,+BAAuB,QAsBlC;aAEe,UAAU,CAAC,KAAa;QACtC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,QAAQ,KAAK;YACX,KAAK,CAAC;gBACJ,OAAO,SAAS,CAAC;YACnB,KAAK,CAAC;gBACJ,MAAM,IAAI,KAAK,CAAC;gBAChB,MAAM;YACR,KAAK,CAAC;gBACJ,MAAM,IAAI,MAAM,CAAC;gBACjB,MAAM;YACR,KAAK,CAAC;gBACJ,MAAM,IAAI,OAAO,CAAC;gBAClB,MAAM;YACR,KAAK,EAAE;gBACL,MAAM,IAAI,SAAS,CAAC;gBACpB,MAAM;YACR,KAAK,EAAE;gBACL,MAAM,IAAI,SAAS,CAAC;gBACpB,MAAM;YACR,KAAK,EAAE,CAAC;YACR,KAAK,EAAE;gBACL,MAAM,IAAI,aAAa,CAAC;gBACxB,MAAM;YACR,KAAK,EAAE;gBACL,MAAM,IAAI,YAAY,CAAC;gBACvB,MAAM;YACR,KAAK,EAAE;gBACL,MAAM,IAAI,aAAa,CAAC;gBACxB,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,0BAAwB,KAAK,MAAG,CAAC,CAAC;SACrD;QACD,OAAU,MAAM,UAAO,CAAC;IAC1B,CAAC;aAEe,iCAAiC,CAC/C,OAAgC;QAEhC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,QAAS,OAAe,CAAC,IAAI,IAAI,OAAO,CAAC,UAAU;YACjD,KAAKJ,2BAAmB,CAAC,eAAe;gBACtC,MAAM,GAAG,GAAG,CAAC;gBACb,KAAK,GAAG,GAAG,CAAC;gBACZ,MAAM;YACR,KAAKA,2BAAmB,CAAC,eAAe;gBACtC,MAAM,GAAG,GAAG,CAAC;gBACb,KAAK,GAAG,GAAG,CAAC;gBACZ,MAAM;YACR,KAAKA,2BAAmB,CAAC,eAAe;gBACtC,MAAM,GAAG,GAAG,CAAC;gBACb,KAAK,GAAG,GAAG,CAAC;gBACZ,MAAM;YACR,KAAKA,2BAAmB,CAAC,eAAe;gBACtC,MAAM,GAAG,GAAG,CAAC;gBACb,KAAK,GAAG,GAAG,CAAC;gBACZ,MAAM;SAGT;QACD,OAAO,EAAE,MAAM,QAAA,EAAE,KAAK,OAAA,EAAE,CAAC;IAC3B,CAAC;aAEe,4CAA4C,CAC1D,yBAAoD;QAEpD,QAAQ,yBAAyB;YAC/B,KAAKF,iCAAyB,CAAC,OAAO,CAAC;YACvC,KAAKA,iCAAyB,CAAC,sBAAsB,CAAC;YACtD,KAAKA,iCAAyB,CAAC,YAAY;gBACzC,OAAOG,uBAAe,CAAC,UAAU,CAAC;YACpC,KAAKH,iCAAyB,CAAC,qBAAqB,CAAC;YACrD,KAAKA,iCAAyB,CAAC,kBAAkB,CAAC;YAClD,KAAKA,iCAAyB,CAAC,oBAAoB,CAAC;YACpD;gBACE,OAAOG,uBAAe,CAAC,OAAO,CAAC;SAClC;IACH;;ICtJA;QAA6B,2BAAK;QAIhC,iBAAY,OAAyB,EAAE,OAAgB;YAAvD,YACE,kBAAM,OAAO,IAAI,+BAA+B,CAAC,SAElD;YANM,WAAK,GAAG,IAAI,CAAC;YAKlB,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;;SACxB;QACH,cAAC;IAAD,CARA,CAA6B,KAAK;;aCAlB,8BAA8B,CAC5C,KAAa,EACb,IAA0D,EAC1D,MAAe;QAEf,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE;YAC5B,MAAM,CAAC,MAAM,CAAC,WAAW,CACvB,EAAE,IAAI,MAAA,EAAE,KAAK,OAAA,EAAE,EACf,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CACjC,CAAC;SACH;IACH;;aCRsB,WAAW,CAC/B,QAAgB,EAChB,IAAkB;;;;;;;wBAEZ,OAAO,GAAG;4BACd,cAAc,EAAE,kBAAkB;yBACnC,CAAC;;;;wBAGoB,qBAAM,KAAK,CAAC,QAAQ,EAAE;gCACxC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gCAC1B,WAAW,EAAE,MAAM;gCACnB,OAAO,EAAE,OAAO,OAAO,KAAK,WAAW,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO;gCACxE,MAAM,EAAE,MAAM;6BACf,CAAC,EAAA;;wBALI,WAAW,GAAG,SAKlB;6BAEE,CAAC,WAAW,CAAC,EAAE,EAAf,wBAAe;6BACP,OAAO;;4BAGX,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE;;wBAC1B,qBAAM,WAAW,CAAC,IAAI,EAAE,EAAA;4BAJvC,MAAM,cAAI,OAAO;6BAIX,UAAO,GAAE,SAAwB;;2BAGrC,WAAW,CAAC,UAAU,KACvB,CAAC;4BAGG,qBAAM,WAAW,CAAC,IAAI,EAAE,EAAA;4BAA/B,sBAAO,SAAwB,EAAC;;;wBAE5B,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,GAAC,CAAC,IAAI,EAAE,OAAO,EAAE,GAAC,CAAC,OAAO,EAAE,CAAC,CAAC;wBACrD,IAAI,GAAC,CAAC,OAAO,EAAE;4BACb,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,GAAC,CAAC,OAAO,CAAC,CAAC;yBACrC;wBACD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;;;;;;;ICpC/B;IAEO,IAAM,iBAAiB,GAAG,wBAAwB,CAAC,IAAI,CAC5D,SAAS,CAAC,SAAS,CACpB,CAAC;IACK,IAAM,cAAc,GAAG,0BAA0B,CAAC,IAAI,CAC3D,SAAS,CAAC,SAAS,CACpB,CAAC;IACK,IAAM,UAAU,GACrB,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,KAAK,GAAG;UAC9D,IAAI;UACJ,KAAK;SACR,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,KAAK,GAAG;cACjE,IAAI;cACJ,KAAK,CAAC,CAAC;IAEb;IACA;IACO,IAAM,cAAc,GACzB,CAAC,iBAAiB,KAAK,cAAc,IAAI,UAAU,CAAC,CAAC;IAEvD;IACO,IAAM,cAAc,GAAG,iBAAiB,IAAI,cAAc,CAAC;IAE3D,IAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE;SAClC,QAAQ,CAAC,EAAE,CAAC;SACZ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aAEA,cAAc,CAC5B,MAAyB,EACzB,OAAgC;;QAGhC,IAAM,cAAc,GAAG,aAAa,EAAE,CAAC;;QAGvC,IAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE7B,IAAA,KAAoB,iCAAiC,CAAC,OAAO,CAAC,EAA5D,MAAM,YAAA,EAAE,KAAK,WAA+C,CAAC;;QAGrE,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAK,MAAM,OAAI,CAAC,CAAC;SAC9C;QACD,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QACxC,IAAI,KAAK,EAAE;YACT,MAAM,CAAC,YAAY,CAAC,OAAO,EAAK,KAAK,OAAI,CAAC,CAAC;SAC5C;QACD,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAE5C,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,4BAA4B,CAAC;QACvD,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;QAE3B,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEnC,IAAI,cAAc,IAAI,OAAO,CAAC,UAAU,KAAKD,2BAAmB,CAAC,UAAU,EAAE;YAC3E,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;YAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;YAC5B,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YAC7B,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;YAC/B,MAAM,CAAC,KAAa,CAAC,eAAe,GAAG,oBAAoB,CAAC;YAC7D,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,sBAAsB,CAAC;YAEhD,IAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC;YAC1B,OAAO,CAAC,OAAO;gBACb,2EAA2E,CAAC;YAC9E,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;SAC/D;aAAM;YACL,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,MAAI,KAAK,GAAG,CAAC,OAAI,CAAC;SAC7C;QAED,MAAM,CAAC,MAAM,GAAG,2BAA2B,CACzC,MAAM,EACN,OAAO,EACP,cAAc,EACd,OAAO,CACR,CAAC;IACJ,CAAC;IAED,SAAS,UAAU;QACjB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ;aAChC,gBAAgB,CAAC,iBAAc,QAAQ,oBAAa,QAAQ,QAAI,CAAC,CAAC;aAClE,OAAO,CAAC,UAAC,OAAO;YACf,IAAI,OAAO,CAAC,UAAU,EAAE;gBACtB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aACzC;SACF,CAAC,CAAC;IACP,CAAC;IAED,SAAS,aAAa;QACpB,IAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,4BAA0B,QAAU,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,sBAAsB,CAAC;QAClD,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QAE7B,IAAI,cAAc,EAAE;YAClB,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,qBAAqB,CAAC;YAC9C,OAAO,CAAC,KAAa,CAAC,uBAAuB,GAAG,OAAO,CAAC;YACzD,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;SACpC;QAED,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAEnC,UAAU,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,oBAAoB,CAAC;SACjD,EAAE,CAAC,CAAC,CAAC;QAEN,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,SAAS,iBAAiB,CAAC,OAAgC;QACzD,IACE,QAAQ,CAAC,cAAc,CAAC,gCAA8B,QAAU,CAAC,KAAK,IAAI,EAC1E;YACA,OAAO;SACR;QAED,IAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAClD,WAAW,CAAC,EAAE,GAAG,gCAA8B,QAAU,CAAC;QAC1D,WAAW,CAAC,GAAG;;YAEb,g2DAAg2D,CAAC;QACn2D,WAAW,CAAC,KAAK,CAAC,UAAU,GAAG,sBAAsB,CAAC;QACtD,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;QAC/B,WAAW,CAAC,KAAa,CAAC,KAAK,GAAG,MAAM,CAAC;QAC1C,WAAW,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QACxC,WAAW,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;QAC/B,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;QACtC,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC;QAEvB,IAAA,KAAK,GAAK,iCAAiC,CAAC,OAAO,CAAC,MAA/C,CAAgD;QAC7D,IAAI,KAAK,EAAE;YACT,WAAW,CAAC,KAAK,CAAC,UAAU,GAAM,KAAK,GAAG,CAAC,GAAG,CAAC,8BAA2B,CAAC;SAC5E;QAED,UAAU,CAAC;YACT,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;SACjC,EAAE,GAAG,CAAC,CAAC;QAER,IAAI,cAAc,IAAI,OAAO,CAAC,UAAU,KAAKA,2BAAmB,CAAC,UAAU,EAAE;YAC1E,WAAW,CAAC,KAAa,CAAC,KAAK,GAAG,OAAO,CAAC;YAC3C,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC;YAC/B,WAAW,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;YACnC,WAAW,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;YACrC,WAAW,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;SAClC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,SAAS,aAAa;QACpB,IAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,YAAY,CAClB,KAAK;;QAEL,4wEAA4wE,CAC7wE,CAAC;QACF,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,2BAAyB,QAAU,CAAC,CAAC;QAChE,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC;QAC5B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,SAAS,2BAA2B,CAClC,MAAyB,EACzB,OAAgB,EAChB,cAAuB,EACvB,OAAgC;QAEhC,OAAO;YACL,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;YAC3B,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC;YACpC,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC;YAEzC,IAAI,OAAO,CAAC,UAAU,EAAE;gBACtB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aACzC;YAED,IAAI,WAAyC,CAAC;YAE9C,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,WAAW,EAAE;gBACf,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;gBACxC,WAAW,CAAC,gBAAgB,CAC1B,OAAO,EACP;oBACE,IAAI,WAAW,EAAE;wBACf,UAAU,EAAE,CAAC;qBACd;iBACF,EACD,IAAI,CACL,CAAC;aACH;SACF,CAAC;IACJ;;aCtNgB,YAAY,CAC1B,QAAgB,EAChB,MAAW,EACX,OAAgC;QAEhC,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YACjC,IAAI,OAAY,CAAC;YACjB,IAAI,OAAO,CAAC,OAAO,EAAE;gBACnB,OAAO,GAAG,UAAU,CAAC;oBACnB,kBAAkB,CAAC,OAAO,CAAC,CAAC;oBAC5B,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;iBACtC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;aACrB;YAED,IAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,GAAG,6BAA2B,QAAU,CAAC;YAChE,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;YAEzD,IAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YAErD,QAAQ,OAAO,CAAC,WAAW;gBACzB,KAAK,UAAU;;;oBAGb,kBAAkB,CAAC,OAAO,CAAC,CAAC;oBAC5B,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;oBACrC,OAAO;gBACT,KAAK,UAAU;oBACb,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBAChC,MAAM;gBACR,KAAK,UAAU,CAAC;gBAChB;oBACE,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,EAAE,MAAM,QAAA,EAAE,OAAO,SAAA,EAAE,EAAE,OAAO,CAAC,EAAE;;wBAE/D,OAAO;qBACR;oBACD,MAAM;aACT;YAED,MAAM,CAAC,gBAAgB,CACrB,SAAS,EACT,4BAA4B,CAAC,OAAO,EAAE;gBACpC,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,OAAO,SAAA;aACR,CAAC,CACH,CAAC;YAEF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,MAAM,EAAE,CAAC;SACf,CAAC,CAAC;IACL,CAAC;IAED,SAAS,UAAU,CAAC,MAAc,EAAE,MAAc,EAAE,MAAW;QAC7D,IAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAE5C,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEpC,KAAoB,UAAM,EAAN,iBAAM,EAAN,oBAAM,EAAN,IAAM,EAAE;YAAvB,IAAM,KAAK,eAAA;YACd,IAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC9C,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACrC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACvC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACzB;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,kBAAkB,CAAC,OAAe;QACzC,IAAI,OAAO,EAAE;YACX,YAAY,CAAC,OAAO,CAAC,CAAC;SACvB;QAED,IAAI;YACF,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ;iBAC9B,gBAAgB,CAAC,iBAAc,QAAQ,oBAAa,QAAQ,QAAI,CAAC,CAAC;iBACpE,OAAO,CAAC,UAAC,OAAO;gBACf,IAAI,OAAO,CAAC,UAAU,EAAE;oBACtB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;iBACzC;aACF,CAAC,CAAC;SACN;QAAC,OAAO,CAAC,EAAE;;SAEX;IACH,CAAC;IAED,SAAS,4BAA4B,CACnC,OAES,EACT,IAAiB;QAEjB,OAAO,UAAC,CAAe;YACrB,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAErD,IAAI,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;gBACvB,OAAO;aACR;YAED,kBAAkB,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;YACtC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACjB,CAAC;IACJ,CAAC;IAED,SAAS,oBAAoB,CAC3B,MAA6B,EAC7B,IAAiB,EACjB,OAAgC;QAEhC,IAAI,aAAyC,CAAC;QAE9C,IAAI,OAAO,CAAC,IAAI,EAAE;YAChB,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC;SAC/B;aAAM,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE;YAC7C,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SACxD;aAAM;YACL,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;SAChC;QAED,IAAI,CAAC,aAAa,EAAE;YAClB,kBAAkB,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;YAC5C,OAAO,KAAK,CAAC;SACd;QAEK,IAAA,KAAoB,iCAAiC,CAAC,OAAO,CAAC,EAA5D,MAAM,YAAA,EAAE,KAAK,WAA+C,CAAC;QAErE,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAM,MAAM,OAAI,GAAG,MAAM,CAAC,CAAC;YACpE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,GAAM,KAAK,OAAI,GAAG,MAAM,CAAC,CAAC;YACjE,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACxC;QAED,OAAO,IAAI,CAAC;IACd;;ICnHA;;;aAGgB,cAAc;QAC5B,IAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO;YACL,UAAU,EAAE,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;YACnD,WAAW,EAAE,SAAS,IAAI,SAAS,CAAC,WAAW,EAAE;YACjD,iBAAiB,EAAE,IAAI;YACvB,QAAQ,EAAE,SAAS,IAAI,SAAS,CAAC,QAAQ;YACzC,YAAY,EAAE,MAAM,IAAI,MAAM,CAAC,MAAM;YACrC,WAAW,EAAE,MAAM,IAAI,MAAM,CAAC,KAAK;YACnC,IAAI,EAAE,GAAG;YACT,cAAc,EAAE,GAAG,CAAC,iBAAiB,EAAE,GAAG,EAAE;YAC5C,SAAS,EAAE,SAAS,IAAI,SAAS,CAAC,SAAS;SAC5C,CAAC;IACJ,CAAC;IAED;;;;;;;aAOsB,YAAY,CAChC,QAAgB,EAChB,IAA+B;;;;;;wBAE/B,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;;;;wBAGE,qBAAM,WAAW,CACjC,QAAQ,EACR,IAAI,CACL,EAAA;;wBAHK,QAAQ,IAAI,SAGjB,CAA8B;wBAExB,qBAAM,qBAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,EAAA;4BAA/D,sBAAO,SAAwD,EAAC;;;wBAE5D,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,GAAC,CAAC,IAAI,EAAE,OAAO,EAAE,GAAC,CAAC,OAAO,EAAE,CAAC,CAAC;wBACrD,IAAI,GAAC,CAAC,OAAO,EAAE;4BACb,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,GAAC,CAAC,OAAO,CAAC,CAAC;yBACrC;wBACD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;;;;;KAE9B;IAED;;;;;;;aAOsB,sBAAsB,CAC1C,QAAgB,EAChB,IAAwC;;;;;;;wBAGtC,IAAI,CAAC,oBAAoB;4BACvB,IAAI,CAAC,oBAAoB,IAAIH,4BAAoB,CAAC,OAAO,CAAC;wBAC5D,IAAI,CAAC,yBAAyB;4BAC5B,IAAI,CAAC,yBAAyB;gCAC9BC,iCAAyB,CAAC,kBAAkB,CAAC;wBAC/C,IAAI,CAAC,eAAe;4BAClB,IAAI,CAAC,eAAe;gCACpB,4CAA4C,CAC1C,IAAI,CAAC,yBAAyB,CAC/B,CAAC;wBACJ,IAAI,CAAC,yBAAyB;4BAC5B,IAAI,CAAC,yBAAyB,IAAIC,iCAAyB,CAAC,YAAY,CAAC;;wBAE3E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,cAAc,EAAE,CAAC;wBAEtC,qBAAM,WAAW,CACjC,QAAQ,EACR,IAAI,CACL,EAAA;;wBAHK,QAAQ,IAAI,SAGjB,CAAwC;wBAElC,qBAAM,4BAA4B,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,EAAA;4BAAzE,sBAAO,SAAkE,EAAC;;;wBAEtE,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,GAAC,CAAC,IAAI,EAAE,OAAO,EAAE,GAAC,CAAC,OAAO,EAAE,CAAC,CAAC;wBACrD,IAAI,GAAC,CAAC,OAAO,EAAE;4BACb,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,GAAC,CAAC,OAAO,CAAC,CAAC;yBACrC;wBACD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;;;;;KAE9B;IAED;;;;;;;;;aASsB,qBAAqB,CACzC,IAA+B,EAC/B,OAAiC;;;;;wBAEjC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;4BAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;yBACtC;wBAED,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;wBACxB,OAAO,CAAC,IAAI,GAAG,OAAO,OAAO,CAAC,IAAI,KAAK,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;wBACzE,OAAO,CAAC,OAAO;4BACb,OAAO,OAAO,CAAC,OAAO,KAAK,WAAW,GAAG,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;6BAEnE,IAAI,CAAC,SAAS,EAAd,wBAAc;wBAChB,qBAAM,YAAY,CAChB,IAAI,CAAC,SAAS,EACd,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,EACvD,OAAO,CACR,EAAA;;wBAJD,SAIC,CAAC;;4BAGJ,sBAAO,IAAI,EAAC;;;;KACb;IACD;;;;;;;;;aASsB,4BAA4B,CAChD,IAAyC,EACzC,OAAgC;;;;;;6BAE5B,IAAI,CAAC,iBAAiB,EAAtB,wBAAsB;wBACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;wBAEtC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;4BAC9B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;yBACnE;wBAEgB,qBAAM,YAAY,CACjC,IAAI,CAAC,SAAS,CAAC,UAAU,EACzB;gCACE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE;6BAEhE,EACD,OAAO,CACR,EAAA;;wBAPK,QAAQ,GAAG,SAOhB;wBAED,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;;4BAGrC,sBAAO,IAAI,EAAC;;;;KACb;IAED;;;;;;aAMgB,2BAA2B,CACzC,IAAgC,EAChC,MAAe;QAEf,8BAA8B,CAAC,uBAAuB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC;IAED;;;;;;aAMgB,wBAAwB,CACtC,IAA6B,EAC7B,MAAe;QAEf,8BAA8B,CAAC,oBAAoB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACrE;;;;;;;;;;;;;;;;;;;;;"}