{"version":3,"file":"main.mjs","mappings":"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","sources":["webpack://@provenance/provenance-sdk/webpack/runtime/import chunk loading","webpack://@provenance/provenance-sdk/./node_modules/process/browser.js","webpack://@provenance/provenance-sdk/./node_modules/zoid/dist/zoid.frame.js","webpack://@provenance/provenance-sdk/./node_modules/zoid/dist/zoid.js","webpack://@provenance/provenance-sdk/./node_modules/zoid/index.js","webpack://@provenance/provenance-sdk/./src/trust-badge/ lazy ^\\.\\/badge_proofpoints\\-dark\\..*\\.html$ strict namespace object","webpack://@provenance/provenance-sdk/./src/trust-badge/ lazy ^\\.\\/badge_proofpoints\\-light\\..*\\.html$ strict namespace object","webpack://@provenance/provenance-sdk/./src/trust-badge/ lazy ^\\.\\/badge_tick\\-dark\\..*\\.html$ strict namespace object","webpack://@provenance/provenance-sdk/./src/trust-badge/ lazy ^\\.\\/badge_tick\\-light\\..*\\.html$ strict namespace object","webpack://@provenance/provenance-sdk/./src/trust-badge/ lazy ^\\.\\/banner\\-dark\\..*\\.html$ strict namespace object","webpack://@provenance/provenance-sdk/./src/trust-badge/ lazy ^\\.\\/banner\\-light\\..*\\.html$ strict namespace object","webpack://@provenance/provenance-sdk/webpack/bootstrap","webpack://@provenance/provenance-sdk/webpack/runtime/define property getters","webpack://@provenance/provenance-sdk/webpack/runtime/ensure chunk","webpack://@provenance/provenance-sdk/webpack/runtime/get javascript chunk filename","webpack://@provenance/provenance-sdk/webpack/runtime/hasOwnProperty shorthand","webpack://@provenance/provenance-sdk/webpack/runtime/make namespace object","webpack://@provenance/provenance-sdk/./src/api.js","webpack://@provenance/provenance-sdk/./src/adapters/universal_analytics.js","webpack://@provenance/provenance-sdk/./src/analytics.js","webpack://@provenance/provenance-sdk/./src/adapters/google_tag_manager.js","webpack://@provenance/provenance-sdk/./src/adapters/segment.js","webpack://@provenance/provenance-sdk/./src/trust-badge/index.js","webpack://@provenance/provenance-sdk/./src/frame-factory.js","webpack://@provenance/provenance-sdk/./node_modules/micromodal/dist/micromodal.es.js","webpack://@provenance/provenance-sdk/./src/events.js","webpack://@provenance/provenance-sdk/./src/modal.js","webpack://@provenance/provenance-sdk/./src/bundle.js","webpack://@provenance/provenance-sdk/./src/structured-data.js","webpack://@provenance/provenance-sdk/./src/experience.js","webpack://@provenance/provenance-sdk/./src/index.js"],"sourcesContent":["// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\nvar installChunk = (data) => {\n\tvar {ids, modules, runtime} = data;\n\t// add \"modules\" to the modules object,\n\t// then flag all \"ids\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in modules) {\n\t\tif(__webpack_require__.o(modules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = modules[moduleId];\n\t\t}\n\t}\n\tif(runtime) runtime(__webpack_require__);\n\tfor(;i < ids.length; i++) {\n\t\tchunkId = ids[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[ids[i]] = 0;\n\t}\n\n}\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// import() 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[1]);\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 = import(\"./\" + __webpack_require__.u(chunkId)).then(installChunk, (e) => {\n\t\t\t\t\t\tif(installedChunks[chunkId] !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t});\n\t\t\t\t\tvar promise = Promise.race([promise, new Promise((resolve) => (installedChunkData = installedChunks[chunkId] = [resolve]))])\n\t\t\t\t\tpromises.push(installedChunkData[1] = promise);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no external install chunk\n\n// no on chunks loaded","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","!function(root, factory) {\n    \"object\" == typeof exports && \"object\" == typeof module ? module.exports = factory() : \"function\" == typeof define && define.amd ? define(\"zoid\", [], factory) : \"object\" == typeof exports ? exports.zoid = factory() : root.zoid = factory();\n}(\"undefined\" != typeof self ? self : this, (function() {\n    return function(modules) {\n        var installedModules = {};\n        function __webpack_require__(moduleId) {\n            if (installedModules[moduleId]) return installedModules[moduleId].exports;\n            var module = installedModules[moduleId] = {\n                i: moduleId,\n                l: !1,\n                exports: {}\n            };\n            modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n            module.l = !0;\n            return module.exports;\n        }\n        __webpack_require__.m = modules;\n        __webpack_require__.c = installedModules;\n        __webpack_require__.d = function(exports, name, getter) {\n            __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {\n                enumerable: !0,\n                get: getter\n            });\n        };\n        __webpack_require__.r = function(exports) {\n            \"undefined\" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(exports, Symbol.toStringTag, {\n                value: \"Module\"\n            });\n            Object.defineProperty(exports, \"__esModule\", {\n                value: !0\n            });\n        };\n        __webpack_require__.t = function(value, mode) {\n            1 & mode && (value = __webpack_require__(value));\n            if (8 & mode) return value;\n            if (4 & mode && \"object\" == typeof value && value && value.__esModule) return value;\n            var ns = Object.create(null);\n            __webpack_require__.r(ns);\n            Object.defineProperty(ns, \"default\", {\n                enumerable: !0,\n                value: value\n            });\n            if (2 & mode && \"string\" != typeof value) for (var key in value) __webpack_require__.d(ns, key, function(key) {\n                return value[key];\n            }.bind(null, key));\n            return ns;\n        };\n        __webpack_require__.n = function(module) {\n            var getter = module && module.__esModule ? function() {\n                return module.default;\n            } : function() {\n                return module;\n            };\n            __webpack_require__.d(getter, \"a\", getter);\n            return getter;\n        };\n        __webpack_require__.o = function(object, property) {\n            return {}.hasOwnProperty.call(object, property);\n        };\n        __webpack_require__.p = \"\";\n        return __webpack_require__(__webpack_require__.s = 0);\n    }([ function(module, __webpack_exports__, __webpack_require__) {\n        \"use strict\";\n        __webpack_require__.r(__webpack_exports__);\n        __webpack_require__.d(__webpack_exports__, \"PopupOpenError\", (function() {\n            return dom_PopupOpenError;\n        }));\n        __webpack_require__.d(__webpack_exports__, \"create\", (function() {\n            return component_create;\n        }));\n        __webpack_require__.d(__webpack_exports__, \"destroy\", (function() {\n            return component_destroy;\n        }));\n        __webpack_require__.d(__webpack_exports__, \"destroyComponents\", (function() {\n            return destroyComponents;\n        }));\n        __webpack_require__.d(__webpack_exports__, \"destroyAll\", (function() {\n            return destroyAll;\n        }));\n        __webpack_require__.d(__webpack_exports__, \"PROP_TYPE\", (function() {\n            return PROP_TYPE;\n        }));\n        __webpack_require__.d(__webpack_exports__, \"PROP_SERIALIZATION\", (function() {\n            return PROP_SERIALIZATION;\n        }));\n        __webpack_require__.d(__webpack_exports__, \"CONTEXT\", (function() {\n            return CONTEXT;\n        }));\n        __webpack_require__.d(__webpack_exports__, \"EVENT\", (function() {\n            return EVENT;\n        }));\n        function _setPrototypeOf(o, p) {\n            return (_setPrototypeOf = Object.setPrototypeOf || function(o, p) {\n                o.__proto__ = p;\n                return o;\n            })(o, p);\n        }\n        function _inheritsLoose(subClass, superClass) {\n            subClass.prototype = Object.create(superClass.prototype);\n            subClass.prototype.constructor = subClass;\n            _setPrototypeOf(subClass, superClass);\n        }\n        function _extends() {\n            return (_extends = Object.assign || function(target) {\n                for (var i = 1; i < arguments.length; i++) {\n                    var source = arguments[i];\n                    for (var key in source) ({}).hasOwnProperty.call(source, key) && (target[key] = source[key]);\n                }\n                return target;\n            }).apply(this, arguments);\n        }\n        function utils_isPromise(item) {\n            try {\n                if (!item) return !1;\n                if (\"undefined\" != typeof Promise && item instanceof Promise) return !0;\n                if (\"undefined\" != typeof window && \"function\" == typeof window.Window && item instanceof window.Window) return !1;\n                if (\"undefined\" != typeof window && \"function\" == typeof window.constructor && item instanceof window.constructor) return !1;\n                var _toString = {}.toString;\n                if (_toString) {\n                    var name = _toString.call(item);\n                    if (\"[object Window]\" === name || \"[object global]\" === name || \"[object DOMWindow]\" === name) return !1;\n                }\n                if (\"function\" == typeof item.then) return !0;\n            } catch (err) {\n                return !1;\n            }\n            return !1;\n        }\n        var dispatchedErrors = [];\n        var possiblyUnhandledPromiseHandlers = [];\n        var activeCount = 0;\n        var flushPromise;\n        function flushActive() {\n            if (!activeCount && flushPromise) {\n                var promise = flushPromise;\n                flushPromise = null;\n                promise.resolve();\n            }\n        }\n        function startActive() {\n            activeCount += 1;\n        }\n        function endActive() {\n            activeCount -= 1;\n            flushActive();\n        }\n        var promise_ZalgoPromise = function() {\n            function ZalgoPromise(handler) {\n                var _this = this;\n                this.resolved = void 0;\n                this.rejected = void 0;\n                this.errorHandled = void 0;\n                this.value = void 0;\n                this.error = void 0;\n                this.handlers = void 0;\n                this.dispatching = void 0;\n                this.stack = void 0;\n                this.resolved = !1;\n                this.rejected = !1;\n                this.errorHandled = !1;\n                this.handlers = [];\n                if (handler) {\n                    var _result;\n                    var _error;\n                    var resolved = !1;\n                    var rejected = !1;\n                    var isAsync = !1;\n                    startActive();\n                    try {\n                        handler((function(res) {\n                            if (isAsync) _this.resolve(res); else {\n                                resolved = !0;\n                                _result = res;\n                            }\n                        }), (function(err) {\n                            if (isAsync) _this.reject(err); else {\n                                rejected = !0;\n                                _error = err;\n                            }\n                        }));\n                    } catch (err) {\n                        endActive();\n                        this.reject(err);\n                        return;\n                    }\n                    endActive();\n                    isAsync = !0;\n                    resolved ? this.resolve(_result) : rejected && this.reject(_error);\n                }\n            }\n            var _proto = ZalgoPromise.prototype;\n            _proto.resolve = function(result) {\n                if (this.resolved || this.rejected) return this;\n                if (utils_isPromise(result)) throw new Error(\"Can not resolve promise with another promise\");\n                this.resolved = !0;\n                this.value = result;\n                this.dispatch();\n                return this;\n            };\n            _proto.reject = function(error) {\n                var _this2 = this;\n                if (this.resolved || this.rejected) return this;\n                if (utils_isPromise(error)) throw new Error(\"Can not reject promise with another promise\");\n                if (!error) {\n                    var _err = error && \"function\" == typeof error.toString ? error.toString() : {}.toString.call(error);\n                    error = new Error(\"Expected reject to be called with Error, got \" + _err);\n                }\n                this.rejected = !0;\n                this.error = error;\n                this.errorHandled || setTimeout((function() {\n                    _this2.errorHandled || function(err, promise) {\n                        if (-1 === dispatchedErrors.indexOf(err)) {\n                            dispatchedErrors.push(err);\n                            setTimeout((function() {\n                                throw err;\n                            }), 1);\n                            for (var j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) possiblyUnhandledPromiseHandlers[j](err, promise);\n                        }\n                    }(error, _this2);\n                }), 1);\n                this.dispatch();\n                return this;\n            };\n            _proto.asyncReject = function(error) {\n                this.errorHandled = !0;\n                this.reject(error);\n                return this;\n            };\n            _proto.dispatch = function() {\n                var resolved = this.resolved, rejected = this.rejected, handlers = this.handlers;\n                if (!this.dispatching && (resolved || rejected)) {\n                    this.dispatching = !0;\n                    startActive();\n                    var chain = function(firstPromise, secondPromise) {\n                        return firstPromise.then((function(res) {\n                            secondPromise.resolve(res);\n                        }), (function(err) {\n                            secondPromise.reject(err);\n                        }));\n                    };\n                    for (var i = 0; i < handlers.length; i++) {\n                        var _handlers$i = handlers[i], onSuccess = _handlers$i.onSuccess, onError = _handlers$i.onError, promise = _handlers$i.promise;\n                        var _result2 = void 0;\n                        if (resolved) try {\n                            _result2 = onSuccess ? onSuccess(this.value) : this.value;\n                        } catch (err) {\n                            promise.reject(err);\n                            continue;\n                        } else if (rejected) {\n                            if (!onError) {\n                                promise.reject(this.error);\n                                continue;\n                            }\n                            try {\n                                _result2 = onError(this.error);\n                            } catch (err) {\n                                promise.reject(err);\n                                continue;\n                            }\n                        }\n                        if (_result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected)) {\n                            var promiseResult = _result2;\n                            promiseResult.resolved ? promise.resolve(promiseResult.value) : promise.reject(promiseResult.error);\n                            promiseResult.errorHandled = !0;\n                        } else utils_isPromise(_result2) ? _result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected) ? _result2.resolved ? promise.resolve(_result2.value) : promise.reject(_result2.error) : chain(_result2, promise) : promise.resolve(_result2);\n                    }\n                    handlers.length = 0;\n                    this.dispatching = !1;\n                    endActive();\n                }\n            };\n            _proto.then = function(onSuccess, onError) {\n                if (onSuccess && \"function\" != typeof onSuccess && !onSuccess.call) throw new Error(\"Promise.then expected a function for success handler\");\n                if (onError && \"function\" != typeof onError && !onError.call) throw new Error(\"Promise.then expected a function for error handler\");\n                var promise = new ZalgoPromise;\n                this.handlers.push({\n                    promise: promise,\n                    onSuccess: onSuccess,\n                    onError: onError\n                });\n                this.errorHandled = !0;\n                this.dispatch();\n                return promise;\n            };\n            _proto.catch = function(onError) {\n                return this.then(void 0, onError);\n            };\n            _proto.finally = function(onFinally) {\n                if (onFinally && \"function\" != typeof onFinally && !onFinally.call) throw new Error(\"Promise.finally expected a function\");\n                return this.then((function(result) {\n                    return ZalgoPromise.try(onFinally).then((function() {\n                        return result;\n                    }));\n                }), (function(err) {\n                    return ZalgoPromise.try(onFinally).then((function() {\n                        throw err;\n                    }));\n                }));\n            };\n            _proto.timeout = function(time, err) {\n                var _this3 = this;\n                if (this.resolved || this.rejected) return this;\n                var timeout = setTimeout((function() {\n                    _this3.resolved || _this3.rejected || _this3.reject(err || new Error(\"Promise timed out after \" + time + \"ms\"));\n                }), time);\n                return this.then((function(result) {\n                    clearTimeout(timeout);\n                    return result;\n                }));\n            };\n            _proto.toPromise = function() {\n                if (\"undefined\" == typeof Promise) throw new TypeError(\"Could not find Promise\");\n                return Promise.resolve(this);\n            };\n            ZalgoPromise.resolve = function(value) {\n                return value instanceof ZalgoPromise ? value : utils_isPromise(value) ? new ZalgoPromise((function(resolve, reject) {\n                    return value.then(resolve, reject);\n                })) : (new ZalgoPromise).resolve(value);\n            };\n            ZalgoPromise.reject = function(error) {\n                return (new ZalgoPromise).reject(error);\n            };\n            ZalgoPromise.asyncReject = function(error) {\n                return (new ZalgoPromise).asyncReject(error);\n            };\n            ZalgoPromise.all = function(promises) {\n                var promise = new ZalgoPromise;\n                var count = promises.length;\n                var results = [].slice();\n                if (!count) {\n                    promise.resolve(results);\n                    return promise;\n                }\n                var chain = function(i, firstPromise, secondPromise) {\n                    return firstPromise.then((function(res) {\n                        results[i] = res;\n                        0 == (count -= 1) && promise.resolve(results);\n                    }), (function(err) {\n                        secondPromise.reject(err);\n                    }));\n                };\n                for (var i = 0; i < promises.length; i++) {\n                    var prom = promises[i];\n                    if (prom instanceof ZalgoPromise) {\n                        if (prom.resolved) {\n                            results[i] = prom.value;\n                            count -= 1;\n                            continue;\n                        }\n                    } else if (!utils_isPromise(prom)) {\n                        results[i] = prom;\n                        count -= 1;\n                        continue;\n                    }\n                    chain(i, ZalgoPromise.resolve(prom), promise);\n                }\n                0 === count && promise.resolve(results);\n                return promise;\n            };\n            ZalgoPromise.hash = function(promises) {\n                var result = {};\n                var awaitPromises = [];\n                var _loop = function(key) {\n                    if (promises.hasOwnProperty(key)) {\n                        var value = promises[key];\n                        utils_isPromise(value) ? awaitPromises.push(value.then((function(res) {\n                            result[key] = res;\n                        }))) : result[key] = value;\n                    }\n                };\n                for (var key in promises) _loop(key);\n                return ZalgoPromise.all(awaitPromises).then((function() {\n                    return result;\n                }));\n            };\n            ZalgoPromise.map = function(items, method) {\n                return ZalgoPromise.all(items.map(method));\n            };\n            ZalgoPromise.onPossiblyUnhandledException = function(handler) {\n                return function(handler) {\n                    possiblyUnhandledPromiseHandlers.push(handler);\n                    return {\n                        cancel: function() {\n                            possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n                        }\n                    };\n                }(handler);\n            };\n            ZalgoPromise.try = function(method, context, args) {\n                if (method && \"function\" != typeof method && !method.call) throw new Error(\"Promise.try expected a function\");\n                var result;\n                startActive();\n                try {\n                    result = method.apply(context, args || []);\n                } catch (err) {\n                    endActive();\n                    return ZalgoPromise.reject(err);\n                }\n                endActive();\n                return ZalgoPromise.resolve(result);\n            };\n            ZalgoPromise.delay = function(_delay) {\n                return new ZalgoPromise((function(resolve) {\n                    setTimeout(resolve, _delay);\n                }));\n            };\n            ZalgoPromise.isPromise = function(value) {\n                return !!(value && value instanceof ZalgoPromise) || utils_isPromise(value);\n            };\n            ZalgoPromise.flush = function() {\n                return function(Zalgo) {\n                    var promise = flushPromise = flushPromise || new Zalgo;\n                    flushActive();\n                    return promise;\n                }(ZalgoPromise);\n            };\n            return ZalgoPromise;\n        }();\n        function isRegex(item) {\n            return \"[object RegExp]\" === {}.toString.call(item);\n        }\n        var WINDOW_TYPE = {\n            IFRAME: \"iframe\",\n            POPUP: \"popup\"\n        };\n        var IE_WIN_ACCESS_ERROR = \"Call was rejected by callee.\\r\\n\";\n        function isAboutProtocol(win) {\n            void 0 === win && (win = window);\n            return \"about:\" === win.location.protocol;\n        }\n        function utils_getParent(win) {\n            void 0 === win && (win = window);\n            if (win) try {\n                if (win.parent && win.parent !== win) return win.parent;\n            } catch (err) {}\n        }\n        function getOpener(win) {\n            void 0 === win && (win = window);\n            if (win && !utils_getParent(win)) try {\n                return win.opener;\n            } catch (err) {}\n        }\n        function canReadFromWindow(win) {\n            try {\n                return !0;\n            } catch (err) {}\n            return !1;\n        }\n        function getActualDomain(win) {\n            void 0 === win && (win = window);\n            var location = win.location;\n            if (!location) throw new Error(\"Can not read window location\");\n            var protocol = location.protocol;\n            if (!protocol) throw new Error(\"Can not read window protocol\");\n            if (\"file:\" === protocol) return \"file://\";\n            if (\"about:\" === protocol) {\n                var parent = utils_getParent(win);\n                return parent && canReadFromWindow() ? getActualDomain(parent) : \"about://\";\n            }\n            var host = location.host;\n            if (!host) throw new Error(\"Can not read window host\");\n            return protocol + \"//\" + host;\n        }\n        function getDomain(win) {\n            void 0 === win && (win = window);\n            var domain = getActualDomain(win);\n            return domain && win.mockDomain && 0 === win.mockDomain.indexOf(\"mock:\") ? win.mockDomain : domain;\n        }\n        function isSameDomain(win) {\n            if (!function(win) {\n                try {\n                    if (win === window) return !0;\n                } catch (err) {}\n                try {\n                    var desc = Object.getOwnPropertyDescriptor(win, \"location\");\n                    if (desc && !1 === desc.enumerable) return !1;\n                } catch (err) {}\n                try {\n                    if (isAboutProtocol(win) && canReadFromWindow()) return !0;\n                } catch (err) {}\n                try {\n                    if (getActualDomain(win) === getActualDomain(window)) return !0;\n                } catch (err) {}\n                return !1;\n            }(win)) return !1;\n            try {\n                if (win === window) return !0;\n                if (isAboutProtocol(win) && canReadFromWindow()) return !0;\n                if (getDomain(window) === getDomain(win)) return !0;\n            } catch (err) {}\n            return !1;\n        }\n        function assertSameDomain(win) {\n            if (!isSameDomain(win)) throw new Error(\"Expected window to be same domain\");\n            return win;\n        }\n        function isAncestorParent(parent, child) {\n            if (!parent || !child) return !1;\n            var childParent = utils_getParent(child);\n            return childParent ? childParent === parent : -1 !== function(win) {\n                var result = [];\n                try {\n                    for (;win.parent !== win; ) {\n                        result.push(win.parent);\n                        win = win.parent;\n                    }\n                } catch (err) {}\n                return result;\n            }(child).indexOf(parent);\n        }\n        function getFrames(win) {\n            var result = [];\n            var frames;\n            try {\n                frames = win.frames;\n            } catch (err) {\n                frames = win;\n            }\n            var len;\n            try {\n                len = frames.length;\n            } catch (err) {}\n            if (0 === len) return result;\n            if (len) {\n                for (var i = 0; i < len; i++) {\n                    var frame = void 0;\n                    try {\n                        frame = frames[i];\n                    } catch (err) {\n                        continue;\n                    }\n                    result.push(frame);\n                }\n                return result;\n            }\n            for (var _i = 0; _i < 100; _i++) {\n                var _frame = void 0;\n                try {\n                    _frame = frames[_i];\n                } catch (err) {\n                    return result;\n                }\n                if (!_frame) return result;\n                result.push(_frame);\n            }\n            return result;\n        }\n        function getAllChildFrames(win) {\n            var result = [];\n            for (var _i3 = 0, _getFrames2 = getFrames(win); _i3 < _getFrames2.length; _i3++) {\n                var frame = _getFrames2[_i3];\n                result.push(frame);\n                for (var _i5 = 0, _getAllChildFrames2 = getAllChildFrames(frame); _i5 < _getAllChildFrames2.length; _i5++) result.push(_getAllChildFrames2[_i5]);\n            }\n            return result;\n        }\n        function getTop(win) {\n            void 0 === win && (win = window);\n            try {\n                if (win.top) return win.top;\n            } catch (err) {}\n            if (utils_getParent(win) === win) return win;\n            try {\n                if (isAncestorParent(window, win) && window.top) return window.top;\n            } catch (err) {}\n            try {\n                if (isAncestorParent(win, window) && window.top) return window.top;\n            } catch (err) {}\n            for (var _i7 = 0, _getAllChildFrames4 = getAllChildFrames(win); _i7 < _getAllChildFrames4.length; _i7++) {\n                var frame = _getAllChildFrames4[_i7];\n                try {\n                    if (frame.top) return frame.top;\n                } catch (err) {}\n                if (utils_getParent(frame) === frame) return frame;\n            }\n        }\n        function getAllFramesInWindow(win) {\n            var top = getTop(win);\n            if (!top) throw new Error(\"Can not determine top window\");\n            var result = [].concat(getAllChildFrames(top), [ top ]);\n            -1 === result.indexOf(win) && (result = [].concat(result, [ win ], getAllChildFrames(win)));\n            return result;\n        }\n        var iframeWindows = [];\n        var iframeFrames = [];\n        function isWindowClosed(win, allowMock) {\n            void 0 === allowMock && (allowMock = !0);\n            try {\n                if (win === window) return !1;\n            } catch (err) {\n                return !0;\n            }\n            try {\n                if (!win) return !0;\n            } catch (err) {\n                return !0;\n            }\n            try {\n                if (win.closed) return !0;\n            } catch (err) {\n                return !err || err.message !== IE_WIN_ACCESS_ERROR;\n            }\n            if (allowMock && isSameDomain(win)) try {\n                if (win.mockclosed) return !0;\n            } catch (err) {}\n            try {\n                if (!win.parent || !win.top) return !0;\n            } catch (err) {}\n            var iframeIndex = function(collection, item) {\n                for (var i = 0; i < collection.length; i++) try {\n                    if (collection[i] === item) return i;\n                } catch (err) {}\n                return -1;\n            }(iframeWindows, win);\n            if (-1 !== iframeIndex) {\n                var frame = iframeFrames[iframeIndex];\n                if (frame && function(frame) {\n                    if (!frame.contentWindow) return !0;\n                    if (!frame.parentNode) return !0;\n                    var doc = frame.ownerDocument;\n                    if (doc && doc.documentElement && !doc.documentElement.contains(frame)) {\n                        var parent = frame;\n                        for (;parent.parentNode && parent.parentNode !== parent; ) parent = parent.parentNode;\n                        if (!parent.host || !doc.documentElement.contains(parent.host)) return !0;\n                    }\n                    return !1;\n                }(frame)) return !0;\n            }\n            return !1;\n        }\n        function getAncestor(win) {\n            void 0 === win && (win = window);\n            return getOpener(win = win || window) || utils_getParent(win) || void 0;\n        }\n        function anyMatch(collection1, collection2) {\n            for (var _i17 = 0; _i17 < collection1.length; _i17++) {\n                var item1 = collection1[_i17];\n                for (var _i19 = 0; _i19 < collection2.length; _i19++) if (item1 === collection2[_i19]) return !0;\n            }\n            return !1;\n        }\n        function getDistanceFromTop(win) {\n            void 0 === win && (win = window);\n            var distance = 0;\n            var parent = win;\n            for (;parent; ) (parent = utils_getParent(parent)) && (distance += 1);\n            return distance;\n        }\n        function isSameTopWindow(win1, win2) {\n            var top1 = getTop(win1) || win1;\n            var top2 = getTop(win2) || win2;\n            try {\n                if (top1 && top2) return top1 === top2;\n            } catch (err) {}\n            var allFrames1 = getAllFramesInWindow(win1);\n            var allFrames2 = getAllFramesInWindow(win2);\n            if (anyMatch(allFrames1, allFrames2)) return !0;\n            var opener1 = getOpener(top1);\n            var opener2 = getOpener(top2);\n            return opener1 && anyMatch(getAllFramesInWindow(opener1), allFrames2) || opener2 && anyMatch(getAllFramesInWindow(opener2), allFrames1), \n            !1;\n        }\n        function matchDomain(pattern, origin) {\n            if (\"string\" == typeof pattern) {\n                if (\"string\" == typeof origin) return \"*\" === pattern || origin === pattern;\n                if (isRegex(origin)) return !1;\n                if (Array.isArray(origin)) return !1;\n            }\n            return isRegex(pattern) ? isRegex(origin) ? pattern.toString() === origin.toString() : !Array.isArray(origin) && Boolean(origin.match(pattern)) : !!Array.isArray(pattern) && (Array.isArray(origin) ? JSON.stringify(pattern) === JSON.stringify(origin) : !isRegex(origin) && pattern.some((function(subpattern) {\n                return matchDomain(subpattern, origin);\n            })));\n        }\n        function getDomainFromUrl(url) {\n            return url.match(/^(https?|mock|file):\\/\\//) ? url.split(\"/\").slice(0, 3).join(\"/\") : getDomain();\n        }\n        function onCloseWindow(win, callback, delay, maxtime) {\n            void 0 === delay && (delay = 1e3);\n            void 0 === maxtime && (maxtime = 1 / 0);\n            var timeout;\n            !function check() {\n                if (isWindowClosed(win)) {\n                    timeout && clearTimeout(timeout);\n                    return callback();\n                }\n                if (maxtime <= 0) clearTimeout(timeout); else {\n                    maxtime -= delay;\n                    timeout = setTimeout(check, delay);\n                }\n            }();\n            return {\n                cancel: function() {\n                    timeout && clearTimeout(timeout);\n                }\n            };\n        }\n        function isWindow(obj) {\n            try {\n                if (obj === window) return !0;\n            } catch (err) {\n                if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n            }\n            try {\n                if (\"[object Window]\" === {}.toString.call(obj)) return !0;\n            } catch (err) {\n                if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n            }\n            try {\n                if (window.Window && obj instanceof window.Window) return !0;\n            } catch (err) {\n                if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n            }\n            try {\n                if (obj && obj.self === obj) return !0;\n            } catch (err) {\n                if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n            }\n            try {\n                if (obj && obj.parent === obj) return !0;\n            } catch (err) {\n                if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n            }\n            try {\n                if (obj && obj.top === obj) return !0;\n            } catch (err) {\n                if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n            }\n            try {\n                if (obj && \"__unlikely_value__\" === obj.__cross_domain_utils_window_check__) return !1;\n            } catch (err) {\n                return !0;\n            }\n            try {\n                if (\"postMessage\" in obj && \"self\" in obj && \"location\" in obj) return !0;\n            } catch (err) {}\n            return !1;\n        }\n        function getFrameForWindow(win) {\n            if (isSameDomain(win)) return assertSameDomain(win).frameElement;\n            for (var _i21 = 0, _document$querySelect2 = document.querySelectorAll(\"iframe\"); _i21 < _document$querySelect2.length; _i21++) {\n                var frame = _document$querySelect2[_i21];\n                if (frame && frame.contentWindow && frame.contentWindow === win) return frame;\n            }\n        }\n        function closeWindow(win) {\n            if (function(win) {\n                void 0 === win && (win = window);\n                return Boolean(utils_getParent(win));\n            }(win)) {\n                var frame = getFrameForWindow(win);\n                if (frame && frame.parentElement) {\n                    frame.parentElement.removeChild(frame);\n                    return;\n                }\n            }\n            try {\n                win.close();\n            } catch (err) {}\n        }\n        function util_safeIndexOf(collection, item) {\n            for (var i = 0; i < collection.length; i++) try {\n                if (collection[i] === item) return i;\n            } catch (err) {}\n            return -1;\n        }\n        var weakmap_CrossDomainSafeWeakMap = function() {\n            function CrossDomainSafeWeakMap() {\n                this.name = void 0;\n                this.weakmap = void 0;\n                this.keys = void 0;\n                this.values = void 0;\n                this.name = \"__weakmap_\" + (1e9 * Math.random() >>> 0) + \"__\";\n                if (function() {\n                    if (\"undefined\" == typeof WeakMap) return !1;\n                    if (void 0 === Object.freeze) return !1;\n                    try {\n                        var testWeakMap = new WeakMap;\n                        var testKey = {};\n                        Object.freeze(testKey);\n                        testWeakMap.set(testKey, \"__testvalue__\");\n                        return \"__testvalue__\" === testWeakMap.get(testKey);\n                    } catch (err) {\n                        return !1;\n                    }\n                }()) try {\n                    this.weakmap = new WeakMap;\n                } catch (err) {}\n                this.keys = [];\n                this.values = [];\n            }\n            var _proto = CrossDomainSafeWeakMap.prototype;\n            _proto._cleanupClosedWindows = function() {\n                var weakmap = this.weakmap;\n                var keys = this.keys;\n                for (var i = 0; i < keys.length; i++) {\n                    var value = keys[i];\n                    if (isWindow(value) && isWindowClosed(value)) {\n                        if (weakmap) try {\n                            weakmap.delete(value);\n                        } catch (err) {}\n                        keys.splice(i, 1);\n                        this.values.splice(i, 1);\n                        i -= 1;\n                    }\n                }\n            };\n            _proto.isSafeToReadWrite = function(key) {\n                return !isWindow(key);\n            };\n            _proto.set = function(key, value) {\n                if (!key) throw new Error(\"WeakMap expected key\");\n                var weakmap = this.weakmap;\n                if (weakmap) try {\n                    weakmap.set(key, value);\n                } catch (err) {\n                    delete this.weakmap;\n                }\n                if (this.isSafeToReadWrite(key)) try {\n                    var name = this.name;\n                    var entry = key[name];\n                    entry && entry[0] === key ? entry[1] = value : Object.defineProperty(key, name, {\n                        value: [ key, value ],\n                        writable: !0\n                    });\n                    return;\n                } catch (err) {}\n                this._cleanupClosedWindows();\n                var keys = this.keys;\n                var values = this.values;\n                var index = util_safeIndexOf(keys, key);\n                if (-1 === index) {\n                    keys.push(key);\n                    values.push(value);\n                } else values[index] = value;\n            };\n            _proto.get = function(key) {\n                if (!key) throw new Error(\"WeakMap expected key\");\n                var weakmap = this.weakmap;\n                if (weakmap) try {\n                    if (weakmap.has(key)) return weakmap.get(key);\n                } catch (err) {\n                    delete this.weakmap;\n                }\n                if (this.isSafeToReadWrite(key)) try {\n                    var entry = key[this.name];\n                    return entry && entry[0] === key ? entry[1] : void 0;\n                } catch (err) {}\n                this._cleanupClosedWindows();\n                var index = util_safeIndexOf(this.keys, key);\n                if (-1 !== index) return this.values[index];\n            };\n            _proto.delete = function(key) {\n                if (!key) throw new Error(\"WeakMap expected key\");\n                var weakmap = this.weakmap;\n                if (weakmap) try {\n                    weakmap.delete(key);\n                } catch (err) {\n                    delete this.weakmap;\n                }\n                if (this.isSafeToReadWrite(key)) try {\n                    var entry = key[this.name];\n                    entry && entry[0] === key && (entry[0] = entry[1] = void 0);\n                } catch (err) {}\n                this._cleanupClosedWindows();\n                var keys = this.keys;\n                var index = util_safeIndexOf(keys, key);\n                if (-1 !== index) {\n                    keys.splice(index, 1);\n                    this.values.splice(index, 1);\n                }\n            };\n            _proto.has = function(key) {\n                if (!key) throw new Error(\"WeakMap expected key\");\n                var weakmap = this.weakmap;\n                if (weakmap) try {\n                    if (weakmap.has(key)) return !0;\n                } catch (err) {\n                    delete this.weakmap;\n                }\n                if (this.isSafeToReadWrite(key)) try {\n                    var entry = key[this.name];\n                    return !(!entry || entry[0] !== key);\n                } catch (err) {}\n                this._cleanupClosedWindows();\n                return -1 !== util_safeIndexOf(this.keys, key);\n            };\n            _proto.getOrSet = function(key, getter) {\n                if (this.has(key)) return this.get(key);\n                var value = getter();\n                this.set(key, value);\n                return value;\n            };\n            return CrossDomainSafeWeakMap;\n        }();\n        function _getPrototypeOf(o) {\n            return (_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\n                return o.__proto__ || Object.getPrototypeOf(o);\n            })(o);\n        }\n        function _isNativeReflectConstruct() {\n            if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1;\n            if (Reflect.construct.sham) return !1;\n            if (\"function\" == typeof Proxy) return !0;\n            try {\n                Date.prototype.toString.call(Reflect.construct(Date, [], (function() {})));\n                return !0;\n            } catch (e) {\n                return !1;\n            }\n        }\n        function construct_construct(Parent, args, Class) {\n            return (construct_construct = _isNativeReflectConstruct() ? Reflect.construct : function(Parent, args, Class) {\n                var a = [ null ];\n                a.push.apply(a, args);\n                var instance = new (Function.bind.apply(Parent, a));\n                Class && _setPrototypeOf(instance, Class.prototype);\n                return instance;\n            }).apply(null, arguments);\n        }\n        function wrapNativeSuper_wrapNativeSuper(Class) {\n            var _cache = \"function\" == typeof Map ? new Map : void 0;\n            return (wrapNativeSuper_wrapNativeSuper = function(Class) {\n                if (null === Class || !(fn = Class, -1 !== Function.toString.call(fn).indexOf(\"[native code]\"))) return Class;\n                var fn;\n                if (\"function\" != typeof Class) throw new TypeError(\"Super expression must either be null or a function\");\n                if (void 0 !== _cache) {\n                    if (_cache.has(Class)) return _cache.get(Class);\n                    _cache.set(Class, Wrapper);\n                }\n                function Wrapper() {\n                    return construct_construct(Class, arguments, _getPrototypeOf(this).constructor);\n                }\n                Wrapper.prototype = Object.create(Class.prototype, {\n                    constructor: {\n                        value: Wrapper,\n                        enumerable: !1,\n                        writable: !0,\n                        configurable: !0\n                    }\n                });\n                return _setPrototypeOf(Wrapper, Class);\n            })(Class);\n        }\n        function getFunctionName(fn) {\n            return fn.name || fn.__name__ || fn.displayName || \"anonymous\";\n        }\n        function setFunctionName(fn, name) {\n            try {\n                delete fn.name;\n                fn.name = name;\n            } catch (err) {}\n            fn.__name__ = fn.displayName = name;\n            return fn;\n        }\n        function base64encode(str) {\n            if (\"function\" == typeof btoa) return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (function(m, p1) {\n                return String.fromCharCode(parseInt(p1, 16));\n            }))).replace(/[=]/g, \"\");\n            if (\"undefined\" != typeof Buffer) return Buffer.from(str, \"utf8\").toString(\"base64\").replace(/[=]/g, \"\");\n            throw new Error(\"Can not find window.btoa or Buffer\");\n        }\n        function uniqueID() {\n            var chars = \"0123456789abcdef\";\n            return \"uid_\" + \"xxxxxxxxxx\".replace(/./g, (function() {\n                return chars.charAt(Math.floor(Math.random() * chars.length));\n            })) + \"_\" + base64encode((new Date).toISOString().slice(11, 19).replace(\"T\", \".\")).replace(/[^a-zA-Z0-9]/g, \"\").toLowerCase();\n        }\n        var objectIDs;\n        function serializeArgs(args) {\n            try {\n                return JSON.stringify([].slice.call(args), (function(subkey, val) {\n                    return \"function\" == typeof val ? \"memoize[\" + function(obj) {\n                        objectIDs = objectIDs || new weakmap_CrossDomainSafeWeakMap;\n                        if (null == obj || \"object\" != typeof obj && \"function\" != typeof obj) throw new Error(\"Invalid object\");\n                        var uid = objectIDs.get(obj);\n                        if (!uid) {\n                            uid = typeof obj + \":\" + uniqueID();\n                            objectIDs.set(obj, uid);\n                        }\n                        return uid;\n                    }(val) + \"]\" : val;\n                }));\n            } catch (err) {\n                throw new Error(\"Arguments not serializable -- can not be used to memoize\");\n            }\n        }\n        function getEmptyObject() {\n            return {};\n        }\n        var memoizeGlobalIndex = 0;\n        var memoizeGlobalIndexValidFrom = 0;\n        function memoize(method, options) {\n            void 0 === options && (options = {});\n            var _options$thisNamespac = options.thisNamespace, thisNamespace = void 0 !== _options$thisNamespac && _options$thisNamespac, cacheTime = options.time;\n            var simpleCache;\n            var thisCache;\n            var memoizeIndex = memoizeGlobalIndex;\n            memoizeGlobalIndex += 1;\n            var memoizedFunction = function() {\n                for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];\n                if (memoizeIndex < memoizeGlobalIndexValidFrom) {\n                    simpleCache = null;\n                    thisCache = null;\n                    memoizeIndex = memoizeGlobalIndex;\n                    memoizeGlobalIndex += 1;\n                }\n                var cache;\n                cache = thisNamespace ? (thisCache = thisCache || new weakmap_CrossDomainSafeWeakMap).getOrSet(this, getEmptyObject) : simpleCache = simpleCache || {};\n                var cacheKey = serializeArgs(args);\n                var cacheResult = cache[cacheKey];\n                if (cacheResult && cacheTime && Date.now() - cacheResult.time < cacheTime) {\n                    delete cache[cacheKey];\n                    cacheResult = null;\n                }\n                if (cacheResult) return cacheResult.value;\n                var time = Date.now();\n                var value = method.apply(this, arguments);\n                cache[cacheKey] = {\n                    time: time,\n                    value: value\n                };\n                return value;\n            };\n            memoizedFunction.reset = function() {\n                simpleCache = null;\n                thisCache = null;\n            };\n            return setFunctionName(memoizedFunction, (options.name || getFunctionName(method)) + \"::memoized\");\n        }\n        memoize.clear = function() {\n            memoizeGlobalIndexValidFrom = memoizeGlobalIndex;\n        };\n        function memoizePromise(method) {\n            var cache = {};\n            function memoizedPromiseFunction() {\n                var _arguments = arguments, _this = this;\n                for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) args[_key2] = arguments[_key2];\n                var key = serializeArgs(args);\n                if (cache.hasOwnProperty(key)) return cache[key];\n                cache[key] = promise_ZalgoPromise.try((function() {\n                    return method.apply(_this, _arguments);\n                })).finally((function() {\n                    delete cache[key];\n                }));\n                return cache[key];\n            }\n            memoizedPromiseFunction.reset = function() {\n                cache = {};\n            };\n            return setFunctionName(memoizedPromiseFunction, getFunctionName(method) + \"::promiseMemoized\");\n        }\n        function inlineMemoize(method, logic, args) {\n            void 0 === args && (args = []);\n            var cache = method.__inline_memoize_cache__ = method.__inline_memoize_cache__ || {};\n            var key = serializeArgs(args);\n            return cache.hasOwnProperty(key) ? cache[key] : cache[key] = logic.apply(void 0, args);\n        }\n        function src_util_noop() {}\n        function once(method) {\n            var called = !1;\n            return setFunctionName((function() {\n                if (!called) {\n                    called = !0;\n                    return method.apply(this, arguments);\n                }\n            }), getFunctionName(method) + \"::once\");\n        }\n        function stringifyError(err, level) {\n            void 0 === level && (level = 1);\n            if (level >= 3) return \"stringifyError stack overflow\";\n            try {\n                if (!err) return \"<unknown error: \" + {}.toString.call(err) + \">\";\n                if (\"string\" == typeof err) return err;\n                if (err instanceof Error) {\n                    var stack = err && err.stack;\n                    var message = err && err.message;\n                    if (stack && message) return -1 !== stack.indexOf(message) ? stack : message + \"\\n\" + stack;\n                    if (stack) return stack;\n                    if (message) return message;\n                }\n                return err && err.toString && \"function\" == typeof err.toString ? err.toString() : {}.toString.call(err);\n            } catch (newErr) {\n                return \"Error while stringifying error: \" + stringifyError(newErr, level + 1);\n            }\n        }\n        function stringify(item) {\n            return \"string\" == typeof item ? item : item && item.toString && \"function\" == typeof item.toString ? item.toString() : {}.toString.call(item);\n        }\n        function extend(obj, source) {\n            if (!source) return obj;\n            if (Object.assign) return Object.assign(obj, source);\n            for (var key in source) source.hasOwnProperty(key) && (obj[key] = source[key]);\n            return obj;\n        }\n        memoize((function(obj) {\n            if (Object.values) return Object.values(obj);\n            var result = [];\n            for (var key in obj) obj.hasOwnProperty(key) && result.push(obj[key]);\n            return result;\n        }));\n        function identity(item) {\n            return item;\n        }\n        function safeInterval(method, time) {\n            var timeout;\n            !function loop() {\n                timeout = setTimeout((function() {\n                    method();\n                    loop();\n                }), time);\n            }();\n            return {\n                cancel: function() {\n                    clearTimeout(timeout);\n                }\n            };\n        }\n        function arrayFrom(item) {\n            return [].slice.call(item);\n        }\n        function isDefined(value) {\n            return null != value;\n        }\n        function util_isRegex(item) {\n            return \"[object RegExp]\" === {}.toString.call(item);\n        }\n        function util_getOrSet(obj, key, getter) {\n            if (obj.hasOwnProperty(key)) return obj[key];\n            var val = getter();\n            obj[key] = val;\n            return val;\n        }\n        function cleanup(obj) {\n            var tasks = [];\n            var cleaned = !1;\n            var cleanErr;\n            var cleaner = {\n                set: function(name, item) {\n                    if (!cleaned) {\n                        obj[name] = item;\n                        cleaner.register((function() {\n                            delete obj[name];\n                        }));\n                    }\n                    return item;\n                },\n                register: function(method) {\n                    var task = once((function() {\n                        return method(cleanErr);\n                    }));\n                    cleaned ? method(cleanErr) : tasks.push(task);\n                    return {\n                        cancel: function() {\n                            var index = tasks.indexOf(task);\n                            -1 !== index && tasks.splice(index, 1);\n                        }\n                    };\n                },\n                all: function(err) {\n                    cleanErr = err;\n                    var results = [];\n                    cleaned = !0;\n                    for (;tasks.length; ) {\n                        var task = tasks.shift();\n                        results.push(task());\n                    }\n                    return promise_ZalgoPromise.all(results).then(src_util_noop);\n                }\n            };\n            return cleaner;\n        }\n        function assertExists(name, thing) {\n            if (null == thing) throw new Error(\"Expected \" + name + \" to be present\");\n            return thing;\n        }\n        var util_ExtendableError = function(_Error) {\n            _inheritsLoose(ExtendableError, _Error);\n            function ExtendableError(message) {\n                var _this6;\n                (_this6 = _Error.call(this, message) || this).name = _this6.constructor.name;\n                \"function\" == typeof Error.captureStackTrace ? Error.captureStackTrace(function(self) {\n                    if (void 0 === self) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n                    return self;\n                }(_this6), _this6.constructor) : _this6.stack = new Error(message).stack;\n                return _this6;\n            }\n            return ExtendableError;\n        }(wrapNativeSuper_wrapNativeSuper(Error));\n        function getBody() {\n            var body = document.body;\n            if (!body) throw new Error(\"Body element not found\");\n            return body;\n        }\n        function isDocumentReady() {\n            return Boolean(document.body) && \"complete\" === document.readyState;\n        }\n        function isDocumentInteractive() {\n            return Boolean(document.body) && \"interactive\" === document.readyState;\n        }\n        function urlEncode(str) {\n            return encodeURIComponent(str);\n        }\n        memoize((function() {\n            return new promise_ZalgoPromise((function(resolve) {\n                if (isDocumentReady() || isDocumentInteractive()) return resolve();\n                var interval = setInterval((function() {\n                    if (isDocumentReady() || isDocumentInteractive()) {\n                        clearInterval(interval);\n                        return resolve();\n                    }\n                }), 10);\n            }));\n        }));\n        function parseQuery(queryString) {\n            return inlineMemoize(parseQuery, (function() {\n                var params = {};\n                if (!queryString) return params;\n                if (-1 === queryString.indexOf(\"=\")) return params;\n                for (var _i2 = 0, _queryString$split2 = queryString.split(\"&\"); _i2 < _queryString$split2.length; _i2++) {\n                    var pair = _queryString$split2[_i2];\n                    (pair = pair.split(\"=\"))[0] && pair[1] && (params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]));\n                }\n                return params;\n            }), [ queryString ]);\n        }\n        function extendQuery(originalQuery, props) {\n            void 0 === props && (props = {});\n            return props && Object.keys(props).length ? function(obj) {\n                void 0 === obj && (obj = {});\n                return Object.keys(obj).filter((function(key) {\n                    return \"string\" == typeof obj[key] || \"boolean\" == typeof obj[key];\n                })).map((function(key) {\n                    var val = obj[key];\n                    if (\"string\" != typeof val && \"boolean\" != typeof val) throw new TypeError(\"Invalid type for query\");\n                    return urlEncode(key) + \"=\" + urlEncode(val.toString());\n                })).join(\"&\");\n            }(_extends({}, parseQuery(originalQuery), props)) : originalQuery;\n        }\n        function appendChild(container, child) {\n            container.appendChild(child);\n        }\n        function isElement(element) {\n            return element instanceof window.Element || null !== element && \"object\" == typeof element && 1 === element.nodeType && \"object\" == typeof element.style && \"object\" == typeof element.ownerDocument;\n        }\n        function getElementSafe(id, doc) {\n            void 0 === doc && (doc = document);\n            return isElement(id) ? id : \"string\" == typeof id ? doc.querySelector(id) : void 0;\n        }\n        function elementReady(id) {\n            return new promise_ZalgoPromise((function(resolve, reject) {\n                var name = stringify(id);\n                var el = getElementSafe(id);\n                if (el) return resolve(el);\n                if (isDocumentReady()) return reject(new Error(\"Document is ready and element \" + name + \" does not exist\"));\n                var interval = setInterval((function() {\n                    if (el = getElementSafe(id)) {\n                        resolve(el);\n                        clearInterval(interval);\n                    } else if (isDocumentReady()) {\n                        clearInterval(interval);\n                        return reject(new Error(\"Document is ready and element \" + name + \" does not exist\"));\n                    }\n                }), 10);\n            }));\n        }\n        var dom_PopupOpenError = function(_ExtendableError) {\n            _inheritsLoose(PopupOpenError, _ExtendableError);\n            function PopupOpenError() {\n                return _ExtendableError.apply(this, arguments) || this;\n            }\n            return PopupOpenError;\n        }(util_ExtendableError);\n        var awaitFrameLoadPromises;\n        function awaitFrameLoad(frame) {\n            if ((awaitFrameLoadPromises = awaitFrameLoadPromises || new weakmap_CrossDomainSafeWeakMap).has(frame)) {\n                var _promise = awaitFrameLoadPromises.get(frame);\n                if (_promise) return _promise;\n            }\n            var promise = new promise_ZalgoPromise((function(resolve, reject) {\n                frame.addEventListener(\"load\", (function() {\n                    !function(frame) {\n                        !function() {\n                            for (var i = 0; i < iframeWindows.length; i++) {\n                                var closed = !1;\n                                try {\n                                    closed = iframeWindows[i].closed;\n                                } catch (err) {}\n                                if (closed) {\n                                    iframeFrames.splice(i, 1);\n                                    iframeWindows.splice(i, 1);\n                                }\n                            }\n                        }();\n                        if (frame && frame.contentWindow) try {\n                            iframeWindows.push(frame.contentWindow);\n                            iframeFrames.push(frame);\n                        } catch (err) {}\n                    }(frame);\n                    resolve(frame);\n                }));\n                frame.addEventListener(\"error\", (function(err) {\n                    frame.contentWindow ? resolve(frame) : reject(err);\n                }));\n            }));\n            awaitFrameLoadPromises.set(frame, promise);\n            return promise;\n        }\n        function awaitFrameWindow(frame) {\n            return awaitFrameLoad(frame).then((function(loadedFrame) {\n                if (!loadedFrame.contentWindow) throw new Error(\"Could not find window in iframe\");\n                return loadedFrame.contentWindow;\n            }));\n        }\n        function dom_iframe(options, container) {\n            void 0 === options && (options = {});\n            var style = options.style || {};\n            var frame = function(tag, options, container) {\n                void 0 === tag && (tag = \"div\");\n                void 0 === options && (options = {});\n                tag = tag.toLowerCase();\n                var element = document.createElement(tag);\n                options.style && extend(element.style, options.style);\n                options.class && (element.className = options.class.join(\" \"));\n                options.id && element.setAttribute(\"id\", options.id);\n                if (options.attributes) for (var _i10 = 0, _Object$keys2 = Object.keys(options.attributes); _i10 < _Object$keys2.length; _i10++) {\n                    var key = _Object$keys2[_i10];\n                    element.setAttribute(key, options.attributes[key]);\n                }\n                options.styleSheet && function(el, styleText, doc) {\n                    void 0 === doc && (doc = window.document);\n                    el.styleSheet ? el.styleSheet.cssText = styleText : el.appendChild(doc.createTextNode(styleText));\n                }(element, options.styleSheet);\n                if (options.html) {\n                    if (\"iframe\" === tag) throw new Error(\"Iframe html can not be written unless container provided and iframe in DOM\");\n                    element.innerHTML = options.html;\n                }\n                return element;\n            }(\"iframe\", {\n                attributes: _extends({\n                    allowTransparency: \"true\"\n                }, options.attributes || {}),\n                style: _extends({\n                    backgroundColor: \"transparent\",\n                    border: \"none\"\n                }, style),\n                html: options.html,\n                class: options.class\n            });\n            var isIE = window.navigator.userAgent.match(/MSIE|Edge/i);\n            frame.hasAttribute(\"id\") || frame.setAttribute(\"id\", uniqueID());\n            awaitFrameLoad(frame);\n            container && function(id, doc) {\n                void 0 === doc && (doc = document);\n                var element = getElementSafe(id, doc);\n                if (element) return element;\n                throw new Error(\"Can not find element: \" + stringify(id));\n            }(container).appendChild(frame);\n            (options.url || isIE) && frame.setAttribute(\"src\", options.url || \"about:blank\");\n            return frame;\n        }\n        function addEventListener(obj, event, handler) {\n            obj.addEventListener(event, handler);\n            return {\n                cancel: function() {\n                    obj.removeEventListener(event, handler);\n                }\n            };\n        }\n        function showElement(element) {\n            element.style.setProperty(\"display\", \"\");\n        }\n        function hideElement(element) {\n            element.style.setProperty(\"display\", \"none\", \"important\");\n        }\n        function destroyElement(element) {\n            element && element.parentNode && element.parentNode.removeChild(element);\n        }\n        function isElementClosed(el) {\n            return !(el && el.parentNode && el.ownerDocument && el.ownerDocument.documentElement && el.ownerDocument.documentElement.contains(el));\n        }\n        function onResize(el, handler, _temp) {\n            var _ref2 = void 0 === _temp ? {} : _temp, _ref2$width = _ref2.width, width = void 0 === _ref2$width || _ref2$width, _ref2$height = _ref2.height, height = void 0 === _ref2$height || _ref2$height, _ref2$interval = _ref2.interval, interval = void 0 === _ref2$interval ? 100 : _ref2$interval, _ref2$win = _ref2.win, win = void 0 === _ref2$win ? window : _ref2$win;\n            var currentWidth = el.offsetWidth;\n            var currentHeight = el.offsetHeight;\n            var canceled = !1;\n            handler({\n                width: currentWidth,\n                height: currentHeight\n            });\n            var check = function() {\n                if (!canceled && function(el) {\n                    return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n                }(el)) {\n                    var newWidth = el.offsetWidth;\n                    var newHeight = el.offsetHeight;\n                    (width && newWidth !== currentWidth || height && newHeight !== currentHeight) && handler({\n                        width: newWidth,\n                        height: newHeight\n                    });\n                    currentWidth = newWidth;\n                    currentHeight = newHeight;\n                }\n            };\n            var observer;\n            var timeout;\n            win.addEventListener(\"resize\", check);\n            if (void 0 !== win.ResizeObserver) {\n                (observer = new win.ResizeObserver(check)).observe(el);\n                timeout = safeInterval(check, 10 * interval);\n            } else if (void 0 !== win.MutationObserver) {\n                (observer = new win.MutationObserver(check)).observe(el, {\n                    attributes: !0,\n                    childList: !0,\n                    subtree: !0,\n                    characterData: !1\n                });\n                timeout = safeInterval(check, 10 * interval);\n            } else timeout = safeInterval(check, interval);\n            return {\n                cancel: function() {\n                    canceled = !0;\n                    observer.disconnect();\n                    window.removeEventListener(\"resize\", check);\n                    timeout.cancel();\n                }\n            };\n        }\n        function isShadowElement(element) {\n            for (;element.parentNode; ) element = element.parentNode;\n            return \"[object ShadowRoot]\" === element.toString();\n        }\n        var currentScript = \"undefined\" != typeof document ? document.currentScript : null;\n        var getCurrentScript = memoize((function() {\n            if (currentScript) return currentScript;\n            if (currentScript = function() {\n                try {\n                    var stack = function() {\n                        try {\n                            throw new Error(\"_\");\n                        } catch (err) {\n                            return err.stack || \"\";\n                        }\n                    }();\n                    var stackDetails = /.*at [^(]*\\((.*):(.+):(.+)\\)$/gi.exec(stack);\n                    var scriptLocation = stackDetails && stackDetails[1];\n                    if (!scriptLocation) return;\n                    for (var _i22 = 0, _Array$prototype$slic2 = [].slice.call(document.getElementsByTagName(\"script\")).reverse(); _i22 < _Array$prototype$slic2.length; _i22++) {\n                        var script = _Array$prototype$slic2[_i22];\n                        if (script.src && script.src === scriptLocation) return script;\n                    }\n                } catch (err) {}\n            }()) return currentScript;\n            throw new Error(\"Can not determine current script\");\n        }));\n        var currentUID = uniqueID();\n        memoize((function() {\n            var script;\n            try {\n                script = getCurrentScript();\n            } catch (err) {\n                return currentUID;\n            }\n            var uid = script.getAttribute(\"data-uid\");\n            if (uid && \"string\" == typeof uid) return uid;\n            if ((uid = script.getAttribute(\"data-uid-auto\")) && \"string\" == typeof uid) return uid;\n            if (script.src) {\n                var hashedString = function(str) {\n                    var hash = \"\";\n                    for (var i = 0; i < str.length; i++) {\n                        var total = str[i].charCodeAt(0) * i;\n                        str[i + 1] && (total += str[i + 1].charCodeAt(0) * (i - 1));\n                        hash += String.fromCharCode(97 + Math.abs(total) % 26);\n                    }\n                    return hash;\n                }(JSON.stringify({\n                    src: script.src,\n                    dataset: script.dataset\n                }));\n                uid = \"uid_\" + hashedString.slice(hashedString.length - 30);\n            } else uid = uniqueID();\n            script.setAttribute(\"data-uid-auto\", uid);\n            return uid;\n        }));\n        function toPx(val) {\n            return function(val) {\n                if (\"number\" == typeof val) return val;\n                var match = val.match(/^([0-9]+)(px|%)$/);\n                if (!match) throw new Error(\"Could not match css value from \" + val);\n                return parseInt(match[1], 10);\n            }(val) + \"px\";\n        }\n        function toCSS(val) {\n            return \"number\" == typeof val ? toPx(val) : \"string\" == typeof (str = val) && /^[0-9]+%$/.test(str) ? val : toPx(val);\n            var str;\n        }\n        function global_getGlobal(win) {\n            void 0 === win && (win = window);\n            var globalKey = \"__post_robot_10_0_44__\";\n            return win !== window ? win[globalKey] : win[globalKey] = win[globalKey] || {};\n        }\n        var getObj = function() {\n            return {};\n        };\n        function globalStore(key, defStore) {\n            void 0 === key && (key = \"store\");\n            void 0 === defStore && (defStore = getObj);\n            return util_getOrSet(global_getGlobal(), key, (function() {\n                var store = defStore();\n                return {\n                    has: function(storeKey) {\n                        return store.hasOwnProperty(storeKey);\n                    },\n                    get: function(storeKey, defVal) {\n                        return store.hasOwnProperty(storeKey) ? store[storeKey] : defVal;\n                    },\n                    set: function(storeKey, val) {\n                        store[storeKey] = val;\n                        return val;\n                    },\n                    del: function(storeKey) {\n                        delete store[storeKey];\n                    },\n                    getOrSet: function(storeKey, getter) {\n                        return util_getOrSet(store, storeKey, getter);\n                    },\n                    reset: function() {\n                        store = defStore();\n                    },\n                    keys: function() {\n                        return Object.keys(store);\n                    }\n                };\n            }));\n        }\n        var WildCard = function() {};\n        function getWildcard() {\n            var global = global_getGlobal();\n            global.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new WildCard;\n            return global.WINDOW_WILDCARD;\n        }\n        function windowStore(key, defStore) {\n            void 0 === key && (key = \"store\");\n            void 0 === defStore && (defStore = getObj);\n            return globalStore(\"windowStore\").getOrSet(key, (function() {\n                var winStore = new weakmap_CrossDomainSafeWeakMap;\n                var getStore = function(win) {\n                    return winStore.getOrSet(win, defStore);\n                };\n                return {\n                    has: function(win) {\n                        return getStore(win).hasOwnProperty(key);\n                    },\n                    get: function(win, defVal) {\n                        var store = getStore(win);\n                        return store.hasOwnProperty(key) ? store[key] : defVal;\n                    },\n                    set: function(win, val) {\n                        getStore(win)[key] = val;\n                        return val;\n                    },\n                    del: function(win) {\n                        delete getStore(win)[key];\n                    },\n                    getOrSet: function(win, getter) {\n                        return util_getOrSet(getStore(win), key, getter);\n                    }\n                };\n            }));\n        }\n        function getInstanceID() {\n            return globalStore(\"instance\").getOrSet(\"instanceID\", uniqueID);\n        }\n        function resolveHelloPromise(win, _ref) {\n            var domain = _ref.domain;\n            var helloPromises = windowStore(\"helloPromises\");\n            var existingPromise = helloPromises.get(win);\n            existingPromise && existingPromise.resolve({\n                domain: domain\n            });\n            var newPromise = promise_ZalgoPromise.resolve({\n                domain: domain\n            });\n            helloPromises.set(win, newPromise);\n            return newPromise;\n        }\n        function sayHello(win, _ref4) {\n            return (0, _ref4.send)(win, \"postrobot_hello\", {\n                instanceID: getInstanceID()\n            }, {\n                domain: \"*\",\n                timeout: -1\n            }).then((function(_ref5) {\n                var origin = _ref5.origin, instanceID = _ref5.data.instanceID;\n                resolveHelloPromise(win, {\n                    domain: origin\n                });\n                return {\n                    win: win,\n                    domain: origin,\n                    instanceID: instanceID\n                };\n            }));\n        }\n        function getWindowInstanceID(win, _ref6) {\n            var send = _ref6.send;\n            return windowStore(\"windowInstanceIDPromises\").getOrSet(win, (function() {\n                return sayHello(win, {\n                    send: send\n                }).then((function(_ref7) {\n                    return _ref7.instanceID;\n                }));\n            }));\n        }\n        function markWindowKnown(win) {\n            windowStore(\"knownWindows\").set(win, !0);\n        }\n        function isSerializedType(item) {\n            return \"object\" == typeof item && null !== item && \"string\" == typeof item.__type__;\n        }\n        function determineType(val) {\n            return void 0 === val ? \"undefined\" : null === val ? \"null\" : Array.isArray(val) ? \"array\" : \"function\" == typeof val ? \"function\" : \"object\" == typeof val ? val instanceof Error ? \"error\" : \"function\" == typeof val.then ? \"promise\" : \"[object RegExp]\" === {}.toString.call(val) ? \"regex\" : \"[object Date]\" === {}.toString.call(val) ? \"date\" : \"object\" : \"string\" == typeof val ? \"string\" : \"number\" == typeof val ? \"number\" : \"boolean\" == typeof val ? \"boolean\" : void 0;\n        }\n        function serializeType(type, val) {\n            return {\n                __type__: type,\n                __val__: val\n            };\n        }\n        var _SERIALIZER;\n        var SERIALIZER = ((_SERIALIZER = {}).function = function() {}, _SERIALIZER.error = function(_ref) {\n            return serializeType(\"error\", {\n                message: _ref.message,\n                stack: _ref.stack,\n                code: _ref.code,\n                data: _ref.data\n            });\n        }, _SERIALIZER.promise = function() {}, _SERIALIZER.regex = function(val) {\n            return serializeType(\"regex\", val.source);\n        }, _SERIALIZER.date = function(val) {\n            return serializeType(\"date\", val.toJSON());\n        }, _SERIALIZER.array = function(val) {\n            return val;\n        }, _SERIALIZER.object = function(val) {\n            return val;\n        }, _SERIALIZER.string = function(val) {\n            return val;\n        }, _SERIALIZER.number = function(val) {\n            return val;\n        }, _SERIALIZER.boolean = function(val) {\n            return val;\n        }, _SERIALIZER.null = function(val) {\n            return val;\n        }, _SERIALIZER[void 0] = function(val) {\n            return serializeType(\"undefined\", val);\n        }, _SERIALIZER);\n        var defaultSerializers = {};\n        var _DESERIALIZER;\n        var DESERIALIZER = ((_DESERIALIZER = {}).function = function() {\n            throw new Error(\"Function serialization is not implemented; nothing to deserialize\");\n        }, _DESERIALIZER.error = function(_ref2) {\n            var stack = _ref2.stack, code = _ref2.code, data = _ref2.data;\n            var error = new Error(_ref2.message);\n            error.code = code;\n            data && (error.data = data);\n            error.stack = stack + \"\\n\\n\" + error.stack;\n            return error;\n        }, _DESERIALIZER.promise = function() {\n            throw new Error(\"Promise serialization is not implemented; nothing to deserialize\");\n        }, _DESERIALIZER.regex = function(val) {\n            return new RegExp(val);\n        }, _DESERIALIZER.date = function(val) {\n            return new Date(val);\n        }, _DESERIALIZER.array = function(val) {\n            return val;\n        }, _DESERIALIZER.object = function(val) {\n            return val;\n        }, _DESERIALIZER.string = function(val) {\n            return val;\n        }, _DESERIALIZER.number = function(val) {\n            return val;\n        }, _DESERIALIZER.boolean = function(val) {\n            return val;\n        }, _DESERIALIZER.null = function(val) {\n            return val;\n        }, _DESERIALIZER[void 0] = function() {}, _DESERIALIZER);\n        var defaultDeserializers = {};\n        new promise_ZalgoPromise((function(resolve) {\n            if (window.document && window.document.body) return resolve(window.document.body);\n            var interval = setInterval((function() {\n                if (window.document && window.document.body) {\n                    clearInterval(interval);\n                    return resolve(window.document.body);\n                }\n            }), 10);\n        }));\n        function cleanupProxyWindows() {\n            var idToProxyWindow = globalStore(\"idToProxyWindow\");\n            for (var _i2 = 0, _idToProxyWindow$keys2 = idToProxyWindow.keys(); _i2 < _idToProxyWindow$keys2.length; _i2++) {\n                var id = _idToProxyWindow$keys2[_i2];\n                idToProxyWindow.get(id).shouldClean() && idToProxyWindow.del(id);\n            }\n        }\n        function getSerializedWindow(winPromise, _ref) {\n            var send = _ref.send, _ref$id = _ref.id, id = void 0 === _ref$id ? uniqueID() : _ref$id;\n            var windowNamePromise = winPromise.then((function(win) {\n                if (isSameDomain(win)) return assertSameDomain(win).name;\n            }));\n            var windowTypePromise = winPromise.then((function(window) {\n                if (isWindowClosed(window)) throw new Error(\"Window is closed, can not determine type\");\n                return getOpener(window) ? WINDOW_TYPE.POPUP : WINDOW_TYPE.IFRAME;\n            }));\n            windowNamePromise.catch(src_util_noop);\n            windowTypePromise.catch(src_util_noop);\n            var getName = function() {\n                return winPromise.then((function(win) {\n                    if (!isWindowClosed(win)) return isSameDomain(win) ? assertSameDomain(win).name : windowNamePromise;\n                }));\n            };\n            return {\n                id: id,\n                getType: function() {\n                    return windowTypePromise;\n                },\n                getInstanceID: memoizePromise((function() {\n                    return winPromise.then((function(win) {\n                        return getWindowInstanceID(win, {\n                            send: send\n                        });\n                    }));\n                })),\n                close: function() {\n                    return winPromise.then(closeWindow);\n                },\n                getName: getName,\n                focus: function() {\n                    return winPromise.then((function(win) {\n                        win.focus();\n                    }));\n                },\n                isClosed: function() {\n                    return winPromise.then((function(win) {\n                        return isWindowClosed(win);\n                    }));\n                },\n                setLocation: function(href, opts) {\n                    void 0 === opts && (opts = {});\n                    return winPromise.then((function(win) {\n                        var domain = window.location.protocol + \"//\" + window.location.host;\n                        var _opts$method = opts.method, method = void 0 === _opts$method ? \"get\" : _opts$method, body = opts.body;\n                        if (0 === href.indexOf(\"/\")) href = \"\" + domain + href; else if (!href.match(/^https?:\\/\\//) && 0 !== href.indexOf(domain)) throw new Error(\"Expected url to be http or https url, or absolute path, got \" + JSON.stringify(href));\n                        if (\"post\" === method) return getName().then((function(name) {\n                            if (!name) throw new Error(\"Can not post to window without target name\");\n                            !function(_ref3) {\n                                var url = _ref3.url, target = _ref3.target, body = _ref3.body, _ref3$method = _ref3.method, method = void 0 === _ref3$method ? \"post\" : _ref3$method;\n                                var form = document.createElement(\"form\");\n                                form.setAttribute(\"target\", target);\n                                form.setAttribute(\"method\", method);\n                                form.setAttribute(\"action\", url);\n                                form.style.display = \"none\";\n                                if (body) for (var _i24 = 0, _Object$keys4 = Object.keys(body); _i24 < _Object$keys4.length; _i24++) {\n                                    var _body$key;\n                                    var key = _Object$keys4[_i24];\n                                    var input = document.createElement(\"input\");\n                                    input.setAttribute(\"name\", key);\n                                    input.setAttribute(\"value\", null == (_body$key = body[key]) ? void 0 : _body$key.toString());\n                                    form.appendChild(input);\n                                }\n                                getBody().appendChild(form);\n                                form.submit();\n                                getBody().removeChild(form);\n                            }({\n                                url: href,\n                                target: name,\n                                method: method,\n                                body: body\n                            });\n                        }));\n                        if (\"get\" !== method) throw new Error(\"Unsupported method: \" + method);\n                        if (isSameDomain(win)) try {\n                            if (win.location && \"function\" == typeof win.location.replace) {\n                                win.location.replace(href);\n                                return;\n                            }\n                        } catch (err) {}\n                        win.location = href;\n                    }));\n                },\n                setName: function(name) {\n                    return winPromise.then((function(win) {\n                        var sameDomain = isSameDomain(win);\n                        var frame = getFrameForWindow(win);\n                        if (!sameDomain) throw new Error(\"Can not set name for cross-domain window: \" + name);\n                        assertSameDomain(win).name = name;\n                        frame && frame.setAttribute(\"name\", name);\n                        windowNamePromise = promise_ZalgoPromise.resolve(name);\n                    }));\n                }\n            };\n        }\n        var window_ProxyWindow = function() {\n            function ProxyWindow(_ref2) {\n                var send = _ref2.send, win = _ref2.win, serializedWindow = _ref2.serializedWindow;\n                this.id = void 0;\n                this.isProxyWindow = !0;\n                this.serializedWindow = void 0;\n                this.actualWindow = void 0;\n                this.actualWindowPromise = void 0;\n                this.send = void 0;\n                this.name = void 0;\n                this.actualWindowPromise = new promise_ZalgoPromise;\n                this.serializedWindow = serializedWindow || getSerializedWindow(this.actualWindowPromise, {\n                    send: send\n                });\n                globalStore(\"idToProxyWindow\").set(this.getID(), this);\n                win && this.setWindow(win, {\n                    send: send\n                });\n            }\n            var _proto = ProxyWindow.prototype;\n            _proto.getID = function() {\n                return this.serializedWindow.id;\n            };\n            _proto.getType = function() {\n                return this.serializedWindow.getType();\n            };\n            _proto.isPopup = function() {\n                return this.getType().then((function(type) {\n                    return type === WINDOW_TYPE.POPUP;\n                }));\n            };\n            _proto.setLocation = function(href, opts) {\n                var _this = this;\n                return this.serializedWindow.setLocation(href, opts).then((function() {\n                    return _this;\n                }));\n            };\n            _proto.getName = function() {\n                return this.serializedWindow.getName();\n            };\n            _proto.setName = function(name) {\n                var _this2 = this;\n                return this.serializedWindow.setName(name).then((function() {\n                    return _this2;\n                }));\n            };\n            _proto.close = function() {\n                var _this3 = this;\n                return this.serializedWindow.close().then((function() {\n                    return _this3;\n                }));\n            };\n            _proto.focus = function() {\n                var _this4 = this;\n                var isPopupPromise = this.isPopup();\n                var getNamePromise = this.getName();\n                var reopenPromise = promise_ZalgoPromise.hash({\n                    isPopup: isPopupPromise,\n                    name: getNamePromise\n                }).then((function(_ref3) {\n                    var name = _ref3.name;\n                    _ref3.isPopup && name && window.open(\"\", name);\n                }));\n                var focusPromise = this.serializedWindow.focus();\n                return promise_ZalgoPromise.all([ reopenPromise, focusPromise ]).then((function() {\n                    return _this4;\n                }));\n            };\n            _proto.isClosed = function() {\n                return this.serializedWindow.isClosed();\n            };\n            _proto.getWindow = function() {\n                return this.actualWindow;\n            };\n            _proto.setWindow = function(win, _ref4) {\n                var send = _ref4.send;\n                this.actualWindow = win;\n                this.actualWindowPromise.resolve(this.actualWindow);\n                this.serializedWindow = getSerializedWindow(this.actualWindowPromise, {\n                    send: send,\n                    id: this.getID()\n                });\n                windowStore(\"winToProxyWindow\").set(win, this);\n            };\n            _proto.awaitWindow = function() {\n                return this.actualWindowPromise;\n            };\n            _proto.matchWindow = function(win, _ref5) {\n                var _this5 = this;\n                var send = _ref5.send;\n                return promise_ZalgoPromise.try((function() {\n                    return _this5.actualWindow ? win === _this5.actualWindow : promise_ZalgoPromise.hash({\n                        proxyInstanceID: _this5.getInstanceID(),\n                        knownWindowInstanceID: getWindowInstanceID(win, {\n                            send: send\n                        })\n                    }).then((function(_ref6) {\n                        var match = _ref6.proxyInstanceID === _ref6.knownWindowInstanceID;\n                        match && _this5.setWindow(win, {\n                            send: send\n                        });\n                        return match;\n                    }));\n                }));\n            };\n            _proto.unwrap = function() {\n                return this.actualWindow || this;\n            };\n            _proto.getInstanceID = function() {\n                return this.serializedWindow.getInstanceID();\n            };\n            _proto.shouldClean = function() {\n                return Boolean(this.actualWindow && isWindowClosed(this.actualWindow));\n            };\n            _proto.serialize = function() {\n                return this.serializedWindow;\n            };\n            ProxyWindow.unwrap = function(win) {\n                return ProxyWindow.isProxyWindow(win) ? win.unwrap() : win;\n            };\n            ProxyWindow.serialize = function(win, _ref7) {\n                var send = _ref7.send;\n                cleanupProxyWindows();\n                return ProxyWindow.toProxyWindow(win, {\n                    send: send\n                }).serialize();\n            };\n            ProxyWindow.deserialize = function(serializedWindow, _ref8) {\n                var send = _ref8.send;\n                cleanupProxyWindows();\n                return globalStore(\"idToProxyWindow\").get(serializedWindow.id) || new ProxyWindow({\n                    serializedWindow: serializedWindow,\n                    send: send\n                });\n            };\n            ProxyWindow.isProxyWindow = function(obj) {\n                return Boolean(obj && !isWindow(obj) && obj.isProxyWindow);\n            };\n            ProxyWindow.toProxyWindow = function(win, _ref9) {\n                var send = _ref9.send;\n                cleanupProxyWindows();\n                if (ProxyWindow.isProxyWindow(win)) return win;\n                var actualWindow = win;\n                return windowStore(\"winToProxyWindow\").get(actualWindow) || new ProxyWindow({\n                    win: actualWindow,\n                    send: send\n                });\n            };\n            return ProxyWindow;\n        }();\n        function addMethod(id, val, name, source, domain) {\n            var methodStore = windowStore(\"methodStore\");\n            var proxyWindowMethods = globalStore(\"proxyWindowMethods\");\n            if (window_ProxyWindow.isProxyWindow(source)) proxyWindowMethods.set(id, {\n                val: val,\n                name: name,\n                domain: domain,\n                source: source\n            }); else {\n                proxyWindowMethods.del(id);\n                methodStore.getOrSet(source, (function() {\n                    return {};\n                }))[id] = {\n                    domain: domain,\n                    name: name,\n                    val: val,\n                    source: source\n                };\n            }\n        }\n        function lookupMethod(source, id) {\n            var methodStore = windowStore(\"methodStore\");\n            var proxyWindowMethods = globalStore(\"proxyWindowMethods\");\n            return methodStore.getOrSet(source, (function() {\n                return {};\n            }))[id] || proxyWindowMethods.get(id);\n        }\n        function function_serializeFunction(destination, domain, val, key, _ref3) {\n            on = (_ref = {\n                on: _ref3.on,\n                send: _ref3.send\n            }).on, send = _ref.send, globalStore(\"builtinListeners\").getOrSet(\"functionCalls\", (function() {\n                return on(\"postrobot_method\", {\n                    domain: \"*\"\n                }, (function(_ref2) {\n                    var source = _ref2.source, origin = _ref2.origin, data = _ref2.data;\n                    var id = data.id, name = data.name;\n                    var meth = lookupMethod(source, id);\n                    if (!meth) throw new Error(\"Could not find method '\" + name + \"' with id: \" + data.id + \" in \" + getDomain(window));\n                    var methodSource = meth.source, domain = meth.domain, val = meth.val;\n                    return promise_ZalgoPromise.try((function() {\n                        if (!matchDomain(domain, origin)) throw new Error(\"Method '\" + data.name + \"' domain \" + JSON.stringify(util_isRegex(meth.domain) ? meth.domain.source : meth.domain) + \" does not match origin \" + origin + \" in \" + getDomain(window));\n                        if (window_ProxyWindow.isProxyWindow(methodSource)) return methodSource.matchWindow(source, {\n                            send: send\n                        }).then((function(match) {\n                            if (!match) throw new Error(\"Method call '\" + data.name + \"' failed - proxy window does not match source in \" + getDomain(window));\n                        }));\n                    })).then((function() {\n                        return val.apply({\n                            source: source,\n                            origin: origin\n                        }, data.args);\n                    }), (function(err) {\n                        return promise_ZalgoPromise.try((function() {\n                            if (val.onError) return val.onError(err);\n                        })).then((function() {\n                            err.stack && (err.stack = \"Remote call to \" + name + \"(\" + function(args) {\n                                void 0 === args && (args = []);\n                                return arrayFrom(args).map((function(arg) {\n                                    return \"string\" == typeof arg ? \"'\" + arg + \"'\" : void 0 === arg ? \"undefined\" : null === arg ? \"null\" : \"boolean\" == typeof arg ? arg.toString() : Array.isArray(arg) ? \"[ ... ]\" : \"object\" == typeof arg ? \"{ ... }\" : \"function\" == typeof arg ? \"() => { ... }\" : \"<\" + typeof arg + \">\";\n                                })).join(\", \");\n                            }(data.args) + \") failed\\n\\n\" + err.stack);\n                            throw err;\n                        }));\n                    })).then((function(result) {\n                        return {\n                            result: result,\n                            id: id,\n                            name: name\n                        };\n                    }));\n                }));\n            }));\n            var _ref, on, send;\n            var id = val.__id__ || uniqueID();\n            destination = window_ProxyWindow.unwrap(destination);\n            var name = val.__name__ || val.name || key;\n            \"string\" == typeof name && \"function\" == typeof name.indexOf && 0 === name.indexOf(\"anonymous::\") && (name = name.replace(\"anonymous::\", key + \"::\"));\n            if (window_ProxyWindow.isProxyWindow(destination)) {\n                addMethod(id, val, name, destination, domain);\n                destination.awaitWindow().then((function(win) {\n                    addMethod(id, val, name, win, domain);\n                }));\n            } else addMethod(id, val, name, destination, domain);\n            return serializeType(\"cross_domain_function\", {\n                id: id,\n                name: name\n            });\n        }\n        function serializeMessage(destination, domain, obj, _ref) {\n            var _serialize;\n            var on = _ref.on, send = _ref.send;\n            return function(obj, serializers) {\n                void 0 === serializers && (serializers = defaultSerializers);\n                var result = JSON.stringify(obj, (function(key) {\n                    var val = this[key];\n                    if (isSerializedType(this)) return val;\n                    var type = determineType(val);\n                    if (!type) return val;\n                    var serializer = serializers[type] || SERIALIZER[type];\n                    return serializer ? serializer(val, key) : val;\n                }));\n                return void 0 === result ? \"undefined\" : result;\n            }(obj, ((_serialize = {}).promise = function(val, key) {\n                return function(destination, domain, val, key, _ref) {\n                    return serializeType(\"cross_domain_zalgo_promise\", {\n                        then: function_serializeFunction(destination, domain, (function(resolve, reject) {\n                            return val.then(resolve, reject);\n                        }), key, {\n                            on: _ref.on,\n                            send: _ref.send\n                        })\n                    });\n                }(destination, domain, val, key, {\n                    on: on,\n                    send: send\n                });\n            }, _serialize.function = function(val, key) {\n                return function_serializeFunction(destination, domain, val, key, {\n                    on: on,\n                    send: send\n                });\n            }, _serialize.object = function(val) {\n                return isWindow(val) || window_ProxyWindow.isProxyWindow(val) ? serializeType(\"cross_domain_window\", window_ProxyWindow.serialize(val, {\n                    send: send\n                })) : val;\n            }, _serialize));\n        }\n        function deserializeMessage(source, origin, message, _ref2) {\n            var _deserialize;\n            var send = _ref2.send;\n            return function(str, deserializers) {\n                void 0 === deserializers && (deserializers = defaultDeserializers);\n                if (\"undefined\" !== str) return JSON.parse(str, (function(key, val) {\n                    if (isSerializedType(this)) return val;\n                    var type;\n                    var value;\n                    if (isSerializedType(val)) {\n                        type = val.__type__;\n                        value = val.__val__;\n                    } else {\n                        type = determineType(val);\n                        value = val;\n                    }\n                    if (!type) return value;\n                    var deserializer = deserializers[type] || DESERIALIZER[type];\n                    return deserializer ? deserializer(value, key) : value;\n                }));\n            }(message, ((_deserialize = {}).cross_domain_zalgo_promise = function(serializedPromise) {\n                return function(source, origin, _ref2) {\n                    return new promise_ZalgoPromise(_ref2.then);\n                }(0, 0, serializedPromise);\n            }, _deserialize.cross_domain_function = function(serializedFunction) {\n                return function(source, origin, _ref4, _ref5) {\n                    var id = _ref4.id, name = _ref4.name;\n                    var send = _ref5.send;\n                    var getDeserializedFunction = function(opts) {\n                        void 0 === opts && (opts = {});\n                        function crossDomainFunctionWrapper() {\n                            var _arguments = arguments;\n                            return window_ProxyWindow.toProxyWindow(source, {\n                                send: send\n                            }).awaitWindow().then((function(win) {\n                                var meth = lookupMethod(win, id);\n                                if (meth && meth.val !== crossDomainFunctionWrapper) return meth.val.apply({\n                                    source: window,\n                                    origin: getDomain()\n                                }, _arguments);\n                                var _args = [].slice.call(_arguments);\n                                return opts.fireAndForget ? send(win, \"postrobot_method\", {\n                                    id: id,\n                                    name: name,\n                                    args: _args\n                                }, {\n                                    domain: origin,\n                                    fireAndForget: !0\n                                }) : send(win, \"postrobot_method\", {\n                                    id: id,\n                                    name: name,\n                                    args: _args\n                                }, {\n                                    domain: origin,\n                                    fireAndForget: !1\n                                }).then((function(res) {\n                                    return res.data.result;\n                                }));\n                            })).catch((function(err) {\n                                throw err;\n                            }));\n                        }\n                        crossDomainFunctionWrapper.__name__ = name;\n                        crossDomainFunctionWrapper.__origin__ = origin;\n                        crossDomainFunctionWrapper.__source__ = source;\n                        crossDomainFunctionWrapper.__id__ = id;\n                        crossDomainFunctionWrapper.origin = origin;\n                        return crossDomainFunctionWrapper;\n                    };\n                    var crossDomainFunctionWrapper = getDeserializedFunction();\n                    crossDomainFunctionWrapper.fireAndForget = getDeserializedFunction({\n                        fireAndForget: !0\n                    });\n                    return crossDomainFunctionWrapper;\n                }(source, origin, serializedFunction, {\n                    send: send\n                });\n            }, _deserialize.cross_domain_window = function(serializedWindow) {\n                return window_ProxyWindow.deserialize(serializedWindow, {\n                    send: send\n                });\n            }, _deserialize));\n        }\n        var SEND_MESSAGE_STRATEGIES = {};\n        SEND_MESSAGE_STRATEGIES.postrobot_post_message = function(win, serializedMessage, domain) {\n            0 === domain.indexOf(\"file:\") && (domain = \"*\");\n            win.postMessage(serializedMessage, domain);\n        };\n        SEND_MESSAGE_STRATEGIES.postrobot_global = function(win, serializedMessage) {\n            if (!function(win) {\n                return (win = win || window).navigator.mockUserAgent || win.navigator.userAgent;\n            }(window).match(/MSIE|rv:11|trident|edge\\/12|edge\\/13/i)) throw new Error(\"Global messaging not needed for browser\");\n            if (!isSameDomain(win)) throw new Error(\"Post message through global disabled between different domain windows\");\n            if (!1 !== isSameTopWindow(window, win)) throw new Error(\"Can only use global to communicate between two different windows, not between frames\");\n            var foreignGlobal = global_getGlobal(win);\n            if (!foreignGlobal) throw new Error(\"Can not find postRobot global on foreign window\");\n            foreignGlobal.receiveMessage({\n                source: window,\n                origin: getDomain(),\n                data: serializedMessage\n            });\n        };\n        function send_sendMessage(win, domain, message, _ref2) {\n            var on = _ref2.on, send = _ref2.send;\n            return promise_ZalgoPromise.try((function() {\n                var domainBuffer = windowStore().getOrSet(win, (function() {\n                    return {};\n                }));\n                domainBuffer.buffer = domainBuffer.buffer || [];\n                domainBuffer.buffer.push(message);\n                domainBuffer.flush = domainBuffer.flush || promise_ZalgoPromise.flush().then((function() {\n                    if (isWindowClosed(win)) throw new Error(\"Window is closed\");\n                    var serializedMessage = serializeMessage(win, domain, ((_ref = {}).__post_robot_10_0_44__ = domainBuffer.buffer || [], \n                    _ref), {\n                        on: on,\n                        send: send\n                    });\n                    var _ref;\n                    delete domainBuffer.buffer;\n                    var strategies = Object.keys(SEND_MESSAGE_STRATEGIES);\n                    var errors = [];\n                    for (var _i2 = 0; _i2 < strategies.length; _i2++) {\n                        var strategyName = strategies[_i2];\n                        try {\n                            SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n                        } catch (err) {\n                            errors.push(err);\n                        }\n                    }\n                    if (errors.length === strategies.length) throw new Error(\"All post-robot messaging strategies failed:\\n\\n\" + errors.map((function(err, i) {\n                        return i + \". \" + stringifyError(err);\n                    })).join(\"\\n\\n\"));\n                }));\n                return domainBuffer.flush.then((function() {\n                    delete domainBuffer.flush;\n                }));\n            })).then(src_util_noop);\n        }\n        function getResponseListener(hash) {\n            return globalStore(\"responseListeners\").get(hash);\n        }\n        function deleteResponseListener(hash) {\n            globalStore(\"responseListeners\").del(hash);\n        }\n        function isResponseListenerErrored(hash) {\n            return globalStore(\"erroredResponseListeners\").has(hash);\n        }\n        function getRequestListener(_ref) {\n            var name = _ref.name, win = _ref.win, domain = _ref.domain;\n            var requestListeners = windowStore(\"requestListeners\");\n            \"*\" === win && (win = null);\n            \"*\" === domain && (domain = null);\n            if (!name) throw new Error(\"Name required to get request listener\");\n            for (var _i4 = 0, _ref3 = [ win, getWildcard() ]; _i4 < _ref3.length; _i4++) {\n                var winQualifier = _ref3[_i4];\n                if (winQualifier) {\n                    var nameListeners = requestListeners.get(winQualifier);\n                    if (nameListeners) {\n                        var domainListeners = nameListeners[name];\n                        if (domainListeners) {\n                            if (domain && \"string\" == typeof domain) {\n                                if (domainListeners[domain]) return domainListeners[domain];\n                                if (domainListeners.__domain_regex__) for (var _i6 = 0, _domainListeners$__DO2 = domainListeners.__domain_regex__; _i6 < _domainListeners$__DO2.length; _i6++) {\n                                    var _domainListeners$__DO3 = _domainListeners$__DO2[_i6], listener = _domainListeners$__DO3.listener;\n                                    if (matchDomain(_domainListeners$__DO3.regex, domain)) return listener;\n                                }\n                            }\n                            if (domainListeners[\"*\"]) return domainListeners[\"*\"];\n                        }\n                    }\n                }\n            }\n        }\n        function handleRequest(source, origin, message, _ref) {\n            var on = _ref.on, send = _ref.send;\n            var options = getRequestListener({\n                name: message.name,\n                win: source,\n                domain: origin\n            });\n            var logName = \"postrobot_method\" === message.name && message.data && \"string\" == typeof message.data.name ? message.data.name + \"()\" : message.name;\n            function sendResponse(ack, data, error) {\n                return promise_ZalgoPromise.flush().then((function() {\n                    if (!message.fireAndForget && !isWindowClosed(source)) try {\n                        return send_sendMessage(source, origin, {\n                            id: uniqueID(),\n                            origin: getDomain(window),\n                            type: \"postrobot_message_response\",\n                            hash: message.hash,\n                            name: message.name,\n                            ack: ack,\n                            data: data,\n                            error: error\n                        }, {\n                            on: on,\n                            send: send\n                        });\n                    } catch (err) {\n                        throw new Error(\"Send response message failed for \" + logName + \" in \" + getDomain() + \"\\n\\n\" + stringifyError(err));\n                    }\n                }));\n            }\n            return promise_ZalgoPromise.all([ promise_ZalgoPromise.flush().then((function() {\n                if (!message.fireAndForget && !isWindowClosed(source)) try {\n                    return send_sendMessage(source, origin, {\n                        id: uniqueID(),\n                        origin: getDomain(window),\n                        type: \"postrobot_message_ack\",\n                        hash: message.hash,\n                        name: message.name\n                    }, {\n                        on: on,\n                        send: send\n                    });\n                } catch (err) {\n                    throw new Error(\"Send ack message failed for \" + logName + \" in \" + getDomain() + \"\\n\\n\" + stringifyError(err));\n                }\n            })), promise_ZalgoPromise.try((function() {\n                if (!options) throw new Error(\"No handler found for post message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n                if (!matchDomain(options.domain, origin)) throw new Error(\"Request origin \" + origin + \" does not match domain \" + options.domain.toString());\n                return options.handler({\n                    source: source,\n                    origin: origin,\n                    data: message.data\n                });\n            })).then((function(data) {\n                return sendResponse(\"success\", data);\n            }), (function(error) {\n                return sendResponse(\"error\", null, error);\n            })) ]).then(src_util_noop).catch((function(err) {\n                if (options && options.handleError) return options.handleError(err);\n                throw err;\n            }));\n        }\n        function handleAck(source, origin, message) {\n            if (!isResponseListenerErrored(message.hash)) {\n                var options = getResponseListener(message.hash);\n                if (!options) throw new Error(\"No handler found for post message ack for message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n                try {\n                    if (!matchDomain(options.domain, origin)) throw new Error(\"Ack origin \" + origin + \" does not match domain \" + options.domain.toString());\n                    if (source !== options.win) throw new Error(\"Ack source does not match registered window\");\n                } catch (err) {\n                    options.promise.reject(err);\n                }\n                options.ack = !0;\n            }\n        }\n        function handleResponse(source, origin, message) {\n            if (!isResponseListenerErrored(message.hash)) {\n                var options = getResponseListener(message.hash);\n                if (!options) throw new Error(\"No handler found for post message response for message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n                if (!matchDomain(options.domain, origin)) throw new Error(\"Response origin \" + origin + \" does not match domain \" + (pattern = options.domain, \n                Array.isArray(pattern) ? \"(\" + pattern.join(\" | \") + \")\" : isRegex(pattern) ? \"RegExp(\" + pattern.toString() + \")\" : pattern.toString()));\n                var pattern;\n                if (source !== options.win) throw new Error(\"Response source does not match registered window\");\n                deleteResponseListener(message.hash);\n                \"error\" === message.ack ? options.promise.reject(message.error) : \"success\" === message.ack && options.promise.resolve({\n                    source: source,\n                    origin: origin,\n                    data: message.data\n                });\n            }\n        }\n        function receive_receiveMessage(event, _ref2) {\n            var on = _ref2.on, send = _ref2.send;\n            var receivedMessages = globalStore(\"receivedMessages\");\n            try {\n                if (!window || window.closed || !event.source) return;\n            } catch (err) {\n                return;\n            }\n            var source = event.source, origin = event.origin;\n            var messages = function(message, source, origin, _ref) {\n                var on = _ref.on, send = _ref.send;\n                var parsedMessage;\n                try {\n                    parsedMessage = deserializeMessage(source, origin, message, {\n                        on: on,\n                        send: send\n                    });\n                } catch (err) {\n                    return;\n                }\n                if (parsedMessage && \"object\" == typeof parsedMessage && null !== parsedMessage) {\n                    var parseMessages = parsedMessage.__post_robot_10_0_44__;\n                    if (Array.isArray(parseMessages)) return parseMessages;\n                }\n            }(event.data, source, origin, {\n                on: on,\n                send: send\n            });\n            if (messages) {\n                markWindowKnown(source);\n                for (var _i2 = 0; _i2 < messages.length; _i2++) {\n                    var message = messages[_i2];\n                    if (receivedMessages.has(message.id)) return;\n                    receivedMessages.set(message.id, !0);\n                    if (isWindowClosed(source) && !message.fireAndForget) return;\n                    0 === message.origin.indexOf(\"file:\") && (origin = \"file://\");\n                    try {\n                        \"postrobot_message_request\" === message.type ? handleRequest(source, origin, message, {\n                            on: on,\n                            send: send\n                        }) : \"postrobot_message_response\" === message.type ? handleResponse(source, origin, message) : \"postrobot_message_ack\" === message.type && handleAck(source, origin, message);\n                    } catch (err) {\n                        setTimeout((function() {\n                            throw err;\n                        }), 0);\n                    }\n                }\n            }\n        }\n        function on_on(name, options, handler) {\n            if (!name) throw new Error(\"Expected name\");\n            if (\"function\" == typeof (options = options || {})) {\n                handler = options;\n                options = {};\n            }\n            if (!handler) throw new Error(\"Expected handler\");\n            (options = options || {}).name = name;\n            options.handler = handler || options.handler;\n            var win = options.window;\n            var domain = options.domain;\n            var requestListener = function addRequestListener(_ref4, listener) {\n                var name = _ref4.name, win = _ref4.win, domain = _ref4.domain;\n                var requestListeners = windowStore(\"requestListeners\");\n                if (!name || \"string\" != typeof name) throw new Error(\"Name required to add request listener\");\n                if (Array.isArray(win)) {\n                    var listenersCollection = [];\n                    for (var _i8 = 0, _win2 = win; _i8 < _win2.length; _i8++) listenersCollection.push(addRequestListener({\n                        name: name,\n                        domain: domain,\n                        win: _win2[_i8]\n                    }, listener));\n                    return {\n                        cancel: function() {\n                            for (var _i10 = 0; _i10 < listenersCollection.length; _i10++) listenersCollection[_i10].cancel();\n                        }\n                    };\n                }\n                if (Array.isArray(domain)) {\n                    var _listenersCollection = [];\n                    for (var _i12 = 0, _domain2 = domain; _i12 < _domain2.length; _i12++) _listenersCollection.push(addRequestListener({\n                        name: name,\n                        win: win,\n                        domain: _domain2[_i12]\n                    }, listener));\n                    return {\n                        cancel: function() {\n                            for (var _i14 = 0; _i14 < _listenersCollection.length; _i14++) _listenersCollection[_i14].cancel();\n                        }\n                    };\n                }\n                var existingListener = getRequestListener({\n                    name: name,\n                    win: win,\n                    domain: domain\n                });\n                win && \"*\" !== win || (win = getWildcard());\n                domain = domain || \"*\";\n                if (existingListener) throw win && domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString() + \" for \" + (win === getWildcard() ? \"wildcard\" : \"specified\") + \" window\") : win ? new Error(\"Request listener already exists for \" + name + \" for \" + (win === getWildcard() ? \"wildcard\" : \"specified\") + \" window\") : domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString()) : new Error(\"Request listener already exists for \" + name);\n                var nameListeners = requestListeners.getOrSet(win, (function() {\n                    return {};\n                }));\n                var domainListeners = util_getOrSet(nameListeners, name, (function() {\n                    return {};\n                }));\n                var strDomain = domain.toString();\n                var regexListeners;\n                var regexListener;\n                util_isRegex(domain) ? (regexListeners = util_getOrSet(domainListeners, \"__domain_regex__\", (function() {\n                    return [];\n                }))).push(regexListener = {\n                    regex: domain,\n                    listener: listener\n                }) : domainListeners[strDomain] = listener;\n                return {\n                    cancel: function() {\n                        delete domainListeners[strDomain];\n                        if (regexListener) {\n                            regexListeners.splice(regexListeners.indexOf(regexListener, 1));\n                            regexListeners.length || delete domainListeners.__domain_regex__;\n                        }\n                        Object.keys(domainListeners).length || delete nameListeners[name];\n                        win && !Object.keys(nameListeners).length && requestListeners.del(win);\n                    }\n                };\n            }({\n                name: name,\n                win: win,\n                domain: domain\n            }, {\n                handler: options.handler,\n                handleError: options.errorHandler || function(err) {\n                    throw err;\n                },\n                window: win,\n                domain: domain || \"*\",\n                name: name\n            });\n            return {\n                cancel: function() {\n                    requestListener.cancel();\n                }\n            };\n        }\n        var send_send = function send(win, name, data, options) {\n            var domainMatcher = (options = options || {}).domain || \"*\";\n            var responseTimeout = options.timeout || -1;\n            var childTimeout = options.timeout || 5e3;\n            var fireAndForget = options.fireAndForget || !1;\n            return promise_ZalgoPromise.try((function() {\n                !function(name, win, domain) {\n                    if (!name) throw new Error(\"Expected name\");\n                    if (domain && \"string\" != typeof domain && !Array.isArray(domain) && !util_isRegex(domain)) throw new TypeError(\"Can not send \" + name + \". Expected domain \" + JSON.stringify(domain) + \" to be a string, array, or regex\");\n                    if (isWindowClosed(win)) throw new Error(\"Can not send \" + name + \". Target window is closed\");\n                }(name, win, domainMatcher);\n                if (function(parent, child) {\n                    var actualParent = getAncestor(child);\n                    if (actualParent) return actualParent === parent;\n                    if (child === parent) return !1;\n                    if (getTop(child) === child) return !1;\n                    for (var _i15 = 0, _getFrames8 = getFrames(parent); _i15 < _getFrames8.length; _i15++) if (_getFrames8[_i15] === child) return !0;\n                    return !1;\n                }(window, win)) return function(win, timeout, name) {\n                    void 0 === timeout && (timeout = 5e3);\n                    void 0 === name && (name = \"Window\");\n                    var promise = function(win) {\n                        return windowStore(\"helloPromises\").getOrSet(win, (function() {\n                            return new promise_ZalgoPromise;\n                        }));\n                    }(win);\n                    -1 !== timeout && (promise = promise.timeout(timeout, new Error(name + \" did not load after \" + timeout + \"ms\")));\n                    return promise;\n                }(win, childTimeout);\n            })).then((function(_temp) {\n                return function(win, targetDomain, actualDomain, _ref) {\n                    var send = _ref.send;\n                    return promise_ZalgoPromise.try((function() {\n                        return \"string\" == typeof targetDomain ? targetDomain : promise_ZalgoPromise.try((function() {\n                            return actualDomain || sayHello(win, {\n                                send: send\n                            }).then((function(_ref2) {\n                                return _ref2.domain;\n                            }));\n                        })).then((function(normalizedDomain) {\n                            if (!matchDomain(targetDomain, targetDomain)) throw new Error(\"Domain \" + stringify(targetDomain) + \" does not match \" + stringify(targetDomain));\n                            return normalizedDomain;\n                        }));\n                    }));\n                }(win, domainMatcher, (void 0 === _temp ? {} : _temp).domain, {\n                    send: send\n                });\n            })).then((function(targetDomain) {\n                var domain = targetDomain;\n                var logName = \"postrobot_method\" === name && data && \"string\" == typeof data.name ? data.name + \"()\" : name;\n                var promise = new promise_ZalgoPromise;\n                var hash = name + \"_\" + uniqueID();\n                if (!fireAndForget) {\n                    var responseListener = {\n                        name: name,\n                        win: win,\n                        domain: domain,\n                        promise: promise\n                    };\n                    !function(hash, listener) {\n                        globalStore(\"responseListeners\").set(hash, listener);\n                    }(hash, responseListener);\n                    var reqPromises = windowStore(\"requestPromises\").getOrSet(win, (function() {\n                        return [];\n                    }));\n                    reqPromises.push(promise);\n                    promise.catch((function() {\n                        !function(hash) {\n                            globalStore(\"erroredResponseListeners\").set(hash, !0);\n                        }(hash);\n                        deleteResponseListener(hash);\n                    }));\n                    var totalAckTimeout = function(win) {\n                        return windowStore(\"knownWindows\").get(win, !1);\n                    }(win) ? 1e4 : 2e3;\n                    var totalResTimeout = responseTimeout;\n                    var ackTimeout = totalAckTimeout;\n                    var resTimeout = totalResTimeout;\n                    var interval = safeInterval((function() {\n                        if (isWindowClosed(win)) return promise.reject(new Error(\"Window closed for \" + name + \" before \" + (responseListener.ack ? \"response\" : \"ack\")));\n                        if (responseListener.cancelled) return promise.reject(new Error(\"Response listener was cancelled for \" + name));\n                        ackTimeout = Math.max(ackTimeout - 500, 0);\n                        -1 !== resTimeout && (resTimeout = Math.max(resTimeout - 500, 0));\n                        return responseListener.ack || 0 !== ackTimeout ? 0 === resTimeout ? promise.reject(new Error(\"No response for postMessage \" + logName + \" in \" + getDomain() + \" in \" + totalResTimeout + \"ms\")) : void 0 : promise.reject(new Error(\"No ack for postMessage \" + logName + \" in \" + getDomain() + \" in \" + totalAckTimeout + \"ms\"));\n                    }), 500);\n                    promise.finally((function() {\n                        interval.cancel();\n                        reqPromises.splice(reqPromises.indexOf(promise, 1));\n                    })).catch(src_util_noop);\n                }\n                return send_sendMessage(win, domain, {\n                    id: uniqueID(),\n                    origin: getDomain(window),\n                    type: \"postrobot_message_request\",\n                    hash: hash,\n                    name: name,\n                    data: data,\n                    fireAndForget: fireAndForget\n                }, {\n                    on: on_on,\n                    send: send\n                }).then((function() {\n                    return fireAndForget ? promise.resolve() : promise;\n                }), (function(err) {\n                    throw new Error(\"Send request message failed for \" + logName + \" in \" + getDomain() + \"\\n\\n\" + stringifyError(err));\n                }));\n            }));\n        };\n        function setup_serializeMessage(destination, domain, obj) {\n            return serializeMessage(destination, domain, obj, {\n                on: on_on,\n                send: send_send\n            });\n        }\n        function setup_deserializeMessage(source, origin, message) {\n            return deserializeMessage(source, origin, message, {\n                on: on_on,\n                send: send_send\n            });\n        }\n        function setup_toProxyWindow(win) {\n            return window_ProxyWindow.toProxyWindow(win, {\n                send: send_send\n            });\n        }\n        function lib_global_getGlobal(win) {\n            void 0 === win && (win = window);\n            if (!isSameDomain(win)) throw new Error(\"Can not get global for window on different domain\");\n            win.__zoid_9_0_78__ || (win.__zoid_9_0_78__ = {});\n            return win.__zoid_9_0_78__;\n        }\n        function getProxyObject(obj) {\n            return {\n                get: function() {\n                    var _this = this;\n                    return promise_ZalgoPromise.try((function() {\n                        if (_this.source && _this.source !== window) throw new Error(\"Can not call get on proxy object from a remote window\");\n                        return obj;\n                    }));\n                }\n            };\n        }\n        var PROP_TYPE = {\n            STRING: \"string\",\n            OBJECT: \"object\",\n            FUNCTION: \"function\",\n            BOOLEAN: \"boolean\",\n            NUMBER: \"number\",\n            ARRAY: \"array\"\n        };\n        var PROP_SERIALIZATION = {\n            JSON: \"json\",\n            DOTIFY: \"dotify\",\n            BASE64: \"base64\"\n        };\n        var CONTEXT = WINDOW_TYPE;\n        var EVENT = {\n            RENDER: \"zoid-render\",\n            RENDERED: \"zoid-rendered\",\n            DISPLAY: \"zoid-display\",\n            ERROR: \"zoid-error\",\n            CLOSE: \"zoid-close\",\n            DESTROY: \"zoid-destroy\",\n            PROPS: \"zoid-props\",\n            RESIZE: \"zoid-resize\",\n            FOCUS: \"zoid-focus\"\n        };\n        function normalizeChildProp(propsDef, props, key, value, helpers) {\n            if (!propsDef.hasOwnProperty(key)) return value;\n            var prop = propsDef[key];\n            return \"function\" == typeof prop.childDecorate ? prop.childDecorate({\n                value: value,\n                uid: helpers.uid,\n                tag: helpers.tag,\n                close: helpers.close,\n                focus: helpers.focus,\n                onError: helpers.onError,\n                onProps: helpers.onProps,\n                resize: helpers.resize,\n                getParent: helpers.getParent,\n                getParentDomain: helpers.getParentDomain,\n                show: helpers.show,\n                hide: helpers.hide,\n                export: helpers.export,\n                getSiblings: helpers.getSiblings\n            }) : value;\n        }\n        function parseChildWindowName(windowName) {\n            return inlineMemoize(parseChildWindowName, (function() {\n                if (!windowName) throw new Error(\"No window name\");\n                var _windowName$split = windowName.split(\"__\"), zoidcomp = _windowName$split[1], name = _windowName$split[2], encodedPayload = _windowName$split[3];\n                if (\"zoid\" !== zoidcomp) throw new Error(\"Window not rendered by zoid - got \" + zoidcomp);\n                if (!name) throw new Error(\"Expected component name\");\n                if (!encodedPayload) throw new Error(\"Expected encoded payload\");\n                try {\n                    return JSON.parse(function(str) {\n                        if (\"function\" == typeof atob) return decodeURIComponent([].map.call(atob(str), (function(c) {\n                            return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\n                        })).join(\"\"));\n                        if (\"undefined\" != typeof Buffer) return Buffer.from(str, \"base64\").toString(\"utf8\");\n                        throw new Error(\"Can not find window.atob or Buffer\");\n                    }(encodedPayload));\n                } catch (err) {\n                    throw new Error(\"Can not decode window name payload: \" + encodedPayload + \": \" + stringifyError(err));\n                }\n            }), [ windowName ]);\n        }\n        function getChildPayload() {\n            try {\n                return parseChildWindowName(window.name);\n            } catch (err) {}\n        }\n        function child_focus() {\n            return promise_ZalgoPromise.try((function() {\n                window.focus();\n            }));\n        }\n        function child_destroy() {\n            return promise_ZalgoPromise.try((function() {\n                window.close();\n            }));\n        }\n        var props_defaultNoop = function() {\n            return src_util_noop;\n        };\n        var props_decorateOnce = function(_ref) {\n            return once(_ref.value);\n        };\n        function eachProp(props, propsDef, handler) {\n            for (var _i2 = 0, _Object$keys2 = Object.keys(props); _i2 < _Object$keys2.length; _i2++) {\n                var key = _Object$keys2[_i2];\n                var propDef = propsDef[key];\n                propDef && handler(key, propDef, props[key]);\n            }\n        }\n        function serializeProps(propsDef, props, method) {\n            var params = {};\n            return promise_ZalgoPromise.all(function(props, propsDef, handler) {\n                var results = [];\n                eachProp(props, propsDef, (function(key, propDef, value) {\n                    var result = function(key, propDef, value) {\n                        return promise_ZalgoPromise.resolve().then((function() {\n                            var _METHOD$GET$METHOD$PO, _METHOD$GET$METHOD$PO2;\n                            if (null != value) {\n                                var getParam = (_METHOD$GET$METHOD$PO = {}, _METHOD$GET$METHOD$PO.get = propDef.queryParam, \n                                _METHOD$GET$METHOD$PO.post = propDef.bodyParam, _METHOD$GET$METHOD$PO)[method];\n                                var getValue = (_METHOD$GET$METHOD$PO2 = {}, _METHOD$GET$METHOD$PO2.get = propDef.queryValue, \n                                _METHOD$GET$METHOD$PO2.post = propDef.bodyValue, _METHOD$GET$METHOD$PO2)[method];\n                                if (getParam) return promise_ZalgoPromise.hash({\n                                    finalParam: promise_ZalgoPromise.try((function() {\n                                        return \"function\" == typeof getParam ? getParam({\n                                            value: value\n                                        }) : \"string\" == typeof getParam ? getParam : key;\n                                    })),\n                                    finalValue: promise_ZalgoPromise.try((function() {\n                                        return \"function\" == typeof getValue && isDefined(value) ? getValue({\n                                            value: value\n                                        }) : value;\n                                    }))\n                                }).then((function(_ref) {\n                                    var finalParam = _ref.finalParam, finalValue = _ref.finalValue;\n                                    var result;\n                                    if (\"boolean\" == typeof finalValue) result = finalValue.toString(); else if (\"string\" == typeof finalValue) result = finalValue.toString(); else if (\"object\" == typeof finalValue && null !== finalValue) {\n                                        if (propDef.serialization === PROP_SERIALIZATION.JSON) result = JSON.stringify(finalValue); else if (propDef.serialization === PROP_SERIALIZATION.BASE64) result = base64encode(JSON.stringify(finalValue)); else if (propDef.serialization === PROP_SERIALIZATION.DOTIFY || !propDef.serialization) {\n                                            result = function dotify(obj, prefix, newobj) {\n                                                void 0 === prefix && (prefix = \"\");\n                                                void 0 === newobj && (newobj = {});\n                                                prefix = prefix ? prefix + \".\" : prefix;\n                                                for (var key in obj) obj.hasOwnProperty(key) && null != obj[key] && \"function\" != typeof obj[key] && (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every((function(val) {\n                                                    return \"object\" != typeof val;\n                                                })) ? newobj[\"\" + prefix + key + \"[]\"] = obj[key].join(\",\") : obj[key] && \"object\" == typeof obj[key] ? newobj = dotify(obj[key], \"\" + prefix + key, newobj) : newobj[\"\" + prefix + key] = obj[key].toString());\n                                                return newobj;\n                                            }(finalValue, key);\n                                            for (var _i10 = 0, _Object$keys6 = Object.keys(result); _i10 < _Object$keys6.length; _i10++) {\n                                                var dotkey = _Object$keys6[_i10];\n                                                params[dotkey] = result[dotkey];\n                                            }\n                                            return;\n                                        }\n                                    } else \"number\" == typeof finalValue && (result = finalValue.toString());\n                                    params[finalParam] = result;\n                                }));\n                            }\n                        }));\n                    }(key, propDef, value);\n                    results.push(result);\n                }));\n                return results;\n            }(props, propsDef)).then((function() {\n                return params;\n            }));\n        }\n        function parentComponent(_ref) {\n            var uid = _ref.uid, options = _ref.options, _ref$overrides = _ref.overrides, overrides = void 0 === _ref$overrides ? {} : _ref$overrides, _ref$parentWin = _ref.parentWin, parentWin = void 0 === _ref$parentWin ? window : _ref$parentWin;\n            var propsDef = options.propsDef, containerTemplate = options.containerTemplate, prerenderTemplate = options.prerenderTemplate, tag = options.tag, name = options.name, attributes = options.attributes, dimensions = options.dimensions, autoResize = options.autoResize, url = options.url, domainMatch = options.domain, xports = options.exports;\n            var initPromise = new promise_ZalgoPromise;\n            var handledErrors = [];\n            var clean = cleanup();\n            var state = {};\n            var internalState = {\n                visible: !0\n            };\n            var event = overrides.event ? overrides.event : (triggered = {}, handlers = {}, \n            emitter = {\n                on: function(eventName, handler) {\n                    var handlerList = handlers[eventName] = handlers[eventName] || [];\n                    handlerList.push(handler);\n                    var cancelled = !1;\n                    return {\n                        cancel: function() {\n                            if (!cancelled) {\n                                cancelled = !0;\n                                handlerList.splice(handlerList.indexOf(handler), 1);\n                            }\n                        }\n                    };\n                },\n                once: function(eventName, handler) {\n                    var listener = emitter.on(eventName, (function() {\n                        listener.cancel();\n                        handler();\n                    }));\n                    return listener;\n                },\n                trigger: function(eventName) {\n                    for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) args[_key3 - 1] = arguments[_key3];\n                    var handlerList = handlers[eventName];\n                    var promises = [];\n                    if (handlerList) {\n                        var _loop = function(_i2) {\n                            var handler = handlerList[_i2];\n                            promises.push(promise_ZalgoPromise.try((function() {\n                                return handler.apply(void 0, args);\n                            })));\n                        };\n                        for (var _i2 = 0; _i2 < handlerList.length; _i2++) _loop(_i2);\n                    }\n                    return promise_ZalgoPromise.all(promises).then(src_util_noop);\n                },\n                triggerOnce: function(eventName) {\n                    if (triggered[eventName]) return promise_ZalgoPromise.resolve();\n                    triggered[eventName] = !0;\n                    for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) args[_key4 - 1] = arguments[_key4];\n                    return emitter.trigger.apply(emitter, [ eventName ].concat(args));\n                },\n                reset: function() {\n                    handlers = {};\n                }\n            });\n            var triggered, handlers, emitter;\n            var props = overrides.props ? overrides.props : {};\n            var currentProxyWin;\n            var currentProxyContainer;\n            var childComponent;\n            var onErrorOverride = overrides.onError;\n            var getProxyContainerOverride = overrides.getProxyContainer;\n            var showOverride = overrides.show;\n            var hideOverride = overrides.hide;\n            var closeOverride = overrides.close;\n            var renderContainerOverride = overrides.renderContainer;\n            var getProxyWindowOverride = overrides.getProxyWindow;\n            var setProxyWinOverride = overrides.setProxyWin;\n            var openFrameOverride = overrides.openFrame;\n            var openPrerenderFrameOverride = overrides.openPrerenderFrame;\n            var prerenderOverride = overrides.prerender;\n            var openOverride = overrides.open;\n            var openPrerenderOverride = overrides.openPrerender;\n            var watchForUnloadOverride = overrides.watchForUnload;\n            var getInternalStateOverride = overrides.getInternalState;\n            var setInternalStateOverride = overrides.setInternalState;\n            var resolveInitPromise = function() {\n                return promise_ZalgoPromise.try((function() {\n                    return overrides.resolveInitPromise ? overrides.resolveInitPromise() : initPromise.resolve();\n                }));\n            };\n            var rejectInitPromise = function(err) {\n                return promise_ZalgoPromise.try((function() {\n                    return overrides.rejectInitPromise ? overrides.rejectInitPromise(err) : initPromise.reject(err);\n                }));\n            };\n            var getPropsForChild = function(domain) {\n                var result = {};\n                for (var _i2 = 0, _Object$keys2 = Object.keys(props); _i2 < _Object$keys2.length; _i2++) {\n                    var key = _Object$keys2[_i2];\n                    var prop = propsDef[key];\n                    prop && !1 === prop.sendToChild || prop && prop.sameDomain && !matchDomain(domain, getDomain(window)) || (result[key] = props[key]);\n                }\n                return promise_ZalgoPromise.hash(result);\n            };\n            var getInternalState = function() {\n                return promise_ZalgoPromise.try((function() {\n                    return getInternalStateOverride ? getInternalStateOverride() : internalState;\n                }));\n            };\n            var setInternalState = function(newInternalState) {\n                return promise_ZalgoPromise.try((function() {\n                    return setInternalStateOverride ? setInternalStateOverride(newInternalState) : internalState = _extends({}, internalState, newInternalState);\n                }));\n            };\n            var getProxyWindow = function() {\n                return getProxyWindowOverride ? getProxyWindowOverride() : promise_ZalgoPromise.try((function() {\n                    var windowProp = props.window;\n                    if (windowProp) {\n                        var _proxyWin = setup_toProxyWindow(windowProp);\n                        clean.register((function() {\n                            return windowProp.close();\n                        }));\n                        return _proxyWin;\n                    }\n                    return new window_ProxyWindow({\n                        send: send_send\n                    });\n                }));\n            };\n            var getProxyContainer = function(container) {\n                return getProxyContainerOverride ? getProxyContainerOverride(container) : promise_ZalgoPromise.try((function() {\n                    return elementReady(container);\n                })).then((function(containerElement) {\n                    isShadowElement(containerElement) && (containerElement = function insertShadowSlot(element) {\n                        var shadowHost = function(element) {\n                            var shadowRoot = function(element) {\n                                for (;element.parentNode; ) element = element.parentNode;\n                                if (isShadowElement(element)) return element;\n                            }(element);\n                            if (shadowRoot && shadowRoot.host) return shadowRoot.host;\n                        }(element);\n                        if (!shadowHost) throw new Error(\"Element is not in shadow dom\");\n                        var slotName = \"shadow-slot-\" + uniqueID();\n                        var slot = document.createElement(\"slot\");\n                        slot.setAttribute(\"name\", slotName);\n                        element.appendChild(slot);\n                        var slotProvider = document.createElement(\"div\");\n                        slotProvider.setAttribute(\"slot\", slotName);\n                        shadowHost.appendChild(slotProvider);\n                        return isShadowElement(shadowHost) ? insertShadowSlot(slotProvider) : slotProvider;\n                    }(containerElement));\n                    return getProxyObject(containerElement);\n                }));\n            };\n            var setProxyWin = function(proxyWin) {\n                return setProxyWinOverride ? setProxyWinOverride(proxyWin) : promise_ZalgoPromise.try((function() {\n                    currentProxyWin = proxyWin;\n                }));\n            };\n            var show = function() {\n                return showOverride ? showOverride() : promise_ZalgoPromise.hash({\n                    setState: setInternalState({\n                        visible: !0\n                    }),\n                    showElement: currentProxyContainer ? currentProxyContainer.get().then(showElement) : null\n                }).then(src_util_noop);\n            };\n            var hide = function() {\n                return hideOverride ? hideOverride() : promise_ZalgoPromise.hash({\n                    setState: setInternalState({\n                        visible: !1\n                    }),\n                    showElement: currentProxyContainer ? currentProxyContainer.get().then(hideElement) : null\n                }).then(src_util_noop);\n            };\n            var getUrl = function() {\n                return \"function\" == typeof url ? url({\n                    props: props\n                }) : url;\n            };\n            var getAttributes = function() {\n                return \"function\" == typeof attributes ? attributes({\n                    props: props\n                }) : attributes;\n            };\n            var getChildDomain = function() {\n                return domainMatch && \"string\" == typeof domainMatch ? domainMatch : getDomainFromUrl(getUrl());\n            };\n            var getDomainMatcher = function() {\n                return domainMatch && util_isRegex(domainMatch) ? domainMatch : getChildDomain();\n            };\n            var openFrame = function(context, _ref2) {\n                var windowName = _ref2.windowName;\n                return openFrameOverride ? openFrameOverride(context, {\n                    windowName: windowName\n                }) : promise_ZalgoPromise.try((function() {\n                    if (context === CONTEXT.IFRAME) return getProxyObject(dom_iframe({\n                        attributes: _extends({\n                            name: windowName,\n                            title: name\n                        }, getAttributes().iframe)\n                    }));\n                }));\n            };\n            var openPrerenderFrame = function(context) {\n                return openPrerenderFrameOverride ? openPrerenderFrameOverride(context) : promise_ZalgoPromise.try((function() {\n                    if (context === CONTEXT.IFRAME) return getProxyObject(dom_iframe({\n                        attributes: _extends({\n                            name: \"__zoid_prerender_frame__\" + name + \"_\" + uniqueID() + \"__\",\n                            title: \"prerender__\" + name\n                        }, getAttributes().iframe)\n                    }));\n                }));\n            };\n            var openPrerender = function(context, proxyWin, proxyPrerenderFrame) {\n                return openPrerenderOverride ? openPrerenderOverride(context, proxyWin, proxyPrerenderFrame) : promise_ZalgoPromise.try((function() {\n                    if (context === CONTEXT.IFRAME) {\n                        if (!proxyPrerenderFrame) throw new Error(\"Expected proxy frame to be passed\");\n                        return proxyPrerenderFrame.get().then((function(prerenderFrame) {\n                            clean.register((function() {\n                                return destroyElement(prerenderFrame);\n                            }));\n                            return awaitFrameWindow(prerenderFrame).then((function(prerenderFrameWindow) {\n                                return assertSameDomain(prerenderFrameWindow);\n                            })).then((function(win) {\n                                return setup_toProxyWindow(win);\n                            }));\n                        }));\n                    }\n                    throw new Error(\"No render context available for \" + context);\n                }));\n            };\n            var focus = function() {\n                return promise_ZalgoPromise.try((function() {\n                    if (currentProxyWin) return promise_ZalgoPromise.all([ event.trigger(EVENT.FOCUS), currentProxyWin.focus() ]).then(src_util_noop);\n                }));\n            };\n            var getWindowRef = function(target, domain, context) {\n                if (domain === getDomain(window)) {\n                    var global = lib_global_getGlobal(window);\n                    global.windows = global.windows || {};\n                    global.windows[uid] = window;\n                    clean.register((function() {\n                        delete global.windows[uid];\n                    }));\n                    return {\n                        type: \"global\",\n                        uid: uid\n                    };\n                }\n                return context === CONTEXT.POPUP ? {\n                    type: \"opener\"\n                } : {\n                    type: \"parent\",\n                    distance: getDistanceFromTop(window)\n                };\n            };\n            var initChild = function(childExports) {\n                return promise_ZalgoPromise.try((function() {\n                    childComponent = childExports;\n                    resolveInitPromise();\n                    clean.register((function() {\n                        return childExports.close.fireAndForget().catch(src_util_noop);\n                    }));\n                }));\n            };\n            var resize = function(_ref3) {\n                var width = _ref3.width, height = _ref3.height;\n                return promise_ZalgoPromise.try((function() {\n                    event.trigger(EVENT.RESIZE, {\n                        width: width,\n                        height: height\n                    });\n                }));\n            };\n            var destroy = function(err) {\n                return promise_ZalgoPromise.try((function() {\n                    return event.trigger(EVENT.DESTROY);\n                })).catch(src_util_noop).then((function() {\n                    return clean.all(err);\n                })).then((function() {\n                    initPromise.asyncReject(err || new Error(\"Component destroyed\"));\n                }));\n            };\n            var close = memoize((function(err) {\n                return promise_ZalgoPromise.try((function() {\n                    if (closeOverride) {\n                        if (isWindowClosed(closeOverride.__source__)) return;\n                        return closeOverride();\n                    }\n                    return promise_ZalgoPromise.try((function() {\n                        return event.trigger(EVENT.CLOSE);\n                    })).then((function() {\n                        return destroy(err || new Error(\"Component closed\"));\n                    }));\n                }));\n            }));\n            var open = function(context, _ref4) {\n                var proxyWin = _ref4.proxyWin, proxyFrame = _ref4.proxyFrame, windowName = _ref4.windowName;\n                return openOverride ? openOverride(context, {\n                    proxyWin: proxyWin,\n                    proxyFrame: proxyFrame,\n                    windowName: windowName\n                }) : promise_ZalgoPromise.try((function() {\n                    if (context === CONTEXT.IFRAME) {\n                        if (!proxyFrame) throw new Error(\"Expected proxy frame to be passed\");\n                        return proxyFrame.get().then((function(frame) {\n                            return awaitFrameWindow(frame).then((function(win) {\n                                clean.register((function() {\n                                    return destroyElement(frame);\n                                }));\n                                clean.register((function() {\n                                    return function(win) {\n                                        for (var _i2 = 0, _requestPromises$get2 = windowStore(\"requestPromises\").get(win, []); _i2 < _requestPromises$get2.length; _i2++) _requestPromises$get2[_i2].reject(new Error(\"Window \" + (isWindowClosed(win) ? \"closed\" : \"cleaned up\") + \" before response\")).catch(src_util_noop);\n                                    }(win);\n                                }));\n                                return win;\n                            }));\n                        }));\n                    }\n                    throw new Error(\"No render context available for \" + context);\n                })).then((function(win) {\n                    proxyWin.setWindow(win, {\n                        send: send_send\n                    });\n                    return proxyWin.setName(windowName).then((function() {\n                        return proxyWin;\n                    }));\n                }));\n            };\n            var watchForUnload = function() {\n                return promise_ZalgoPromise.try((function() {\n                    var unloadWindowListener = addEventListener(window, \"unload\", once((function() {\n                        destroy(new Error(\"Window navigated away\"));\n                    })));\n                    var closeParentWindowListener = onCloseWindow(parentWin, destroy, 3e3);\n                    clean.register(closeParentWindowListener.cancel);\n                    clean.register(unloadWindowListener.cancel);\n                    if (watchForUnloadOverride) return watchForUnloadOverride();\n                }));\n            };\n            var checkWindowClose = function(proxyWin) {\n                var closed = !1;\n                return proxyWin.isClosed().then((function(isClosed) {\n                    if (isClosed) {\n                        closed = !0;\n                        return close(new Error(\"Detected component window close\"));\n                    }\n                    return promise_ZalgoPromise.delay(200).then((function() {\n                        return proxyWin.isClosed();\n                    })).then((function(secondIsClosed) {\n                        if (secondIsClosed) {\n                            closed = !0;\n                            return close(new Error(\"Detected component window close\"));\n                        }\n                    }));\n                })).then((function() {\n                    return closed;\n                }));\n            };\n            var onError = function(err) {\n                return onErrorOverride ? onErrorOverride(err) : promise_ZalgoPromise.try((function() {\n                    if (-1 === handledErrors.indexOf(err)) {\n                        handledErrors.push(err);\n                        initPromise.asyncReject(err);\n                        return event.trigger(EVENT.ERROR, err);\n                    }\n                }));\n            };\n            var exportsPromise = new promise_ZalgoPromise;\n            var xport = function(actualExports) {\n                return promise_ZalgoPromise.try((function() {\n                    exportsPromise.resolve(actualExports);\n                }));\n            };\n            initChild.onError = onError;\n            var renderTemplate = function(renderer, _ref7) {\n                return renderer({\n                    uid: uid,\n                    container: _ref7.container,\n                    context: _ref7.context,\n                    doc: _ref7.doc,\n                    frame: _ref7.frame,\n                    prerenderFrame: _ref7.prerenderFrame,\n                    focus: focus,\n                    close: close,\n                    state: state,\n                    props: props,\n                    tag: tag,\n                    dimensions: \"function\" == typeof dimensions ? dimensions({\n                        props: props\n                    }) : dimensions,\n                    event: event\n                });\n            };\n            var prerender = function(proxyPrerenderWin, _ref8) {\n                var context = _ref8.context;\n                return prerenderOverride ? prerenderOverride(proxyPrerenderWin, {\n                    context: context\n                }) : promise_ZalgoPromise.try((function() {\n                    if (prerenderTemplate) {\n                        var prerenderWindow = proxyPrerenderWin.getWindow();\n                        if (prerenderWindow && isSameDomain(prerenderWindow) && function(win) {\n                            try {\n                                if (!win.location.href) return !0;\n                                if (\"about:blank\" === win.location.href) return !0;\n                            } catch (err) {}\n                            return !1;\n                        }(prerenderWindow)) {\n                            var doc = (prerenderWindow = assertSameDomain(prerenderWindow)).document;\n                            var el = renderTemplate(prerenderTemplate, {\n                                context: context,\n                                doc: doc\n                            });\n                            if (el) {\n                                if (el.ownerDocument !== doc) throw new Error(\"Expected prerender template to have been created with document from child window\");\n                                !function(win, el) {\n                                    var tag = el.tagName.toLowerCase();\n                                    if (\"html\" !== tag) throw new Error(\"Expected element to be html, got \" + tag);\n                                    var documentElement = win.document.documentElement;\n                                    for (var _i6 = 0, _arrayFrom2 = arrayFrom(documentElement.children); _i6 < _arrayFrom2.length; _i6++) documentElement.removeChild(_arrayFrom2[_i6]);\n                                    for (var _i8 = 0, _arrayFrom4 = arrayFrom(el.children); _i8 < _arrayFrom4.length; _i8++) documentElement.appendChild(_arrayFrom4[_i8]);\n                                }(prerenderWindow, el);\n                                var _autoResize$width = autoResize.width, width = void 0 !== _autoResize$width && _autoResize$width, _autoResize$height = autoResize.height, height = void 0 !== _autoResize$height && _autoResize$height, _autoResize$element = autoResize.element, element = void 0 === _autoResize$element ? \"body\" : _autoResize$element;\n                                if ((element = getElementSafe(element, doc)) && (width || height)) {\n                                    var prerenderResizeListener = onResize(element, (function(_ref9) {\n                                        resize({\n                                            width: width ? _ref9.width : void 0,\n                                            height: height ? _ref9.height : void 0\n                                        });\n                                    }), {\n                                        width: width,\n                                        height: height,\n                                        win: prerenderWindow\n                                    });\n                                    event.on(EVENT.RENDERED, prerenderResizeListener.cancel);\n                                }\n                            }\n                        }\n                    }\n                }));\n            };\n            var renderContainer = function(proxyContainer, _ref10) {\n                var proxyFrame = _ref10.proxyFrame, proxyPrerenderFrame = _ref10.proxyPrerenderFrame, context = _ref10.context, rerender = _ref10.rerender;\n                return renderContainerOverride ? renderContainerOverride(proxyContainer, {\n                    proxyFrame: proxyFrame,\n                    proxyPrerenderFrame: proxyPrerenderFrame,\n                    context: context,\n                    rerender: rerender\n                }) : promise_ZalgoPromise.hash({\n                    container: proxyContainer.get(),\n                    frame: proxyFrame ? proxyFrame.get() : null,\n                    prerenderFrame: proxyPrerenderFrame ? proxyPrerenderFrame.get() : null,\n                    internalState: getInternalState()\n                }).then((function(_ref11) {\n                    var container = _ref11.container, visible = _ref11.internalState.visible;\n                    var innerContainer = renderTemplate(containerTemplate, {\n                        context: context,\n                        container: container,\n                        frame: _ref11.frame,\n                        prerenderFrame: _ref11.prerenderFrame,\n                        doc: document\n                    });\n                    if (innerContainer) {\n                        visible || hideElement(innerContainer);\n                        appendChild(container, innerContainer);\n                        var containerWatcher = function(element, handler) {\n                            handler = once(handler);\n                            var cancelled = !1;\n                            var mutationObservers = [];\n                            var interval;\n                            var sacrificialFrame;\n                            var sacrificialFrameWin;\n                            var cancel = function() {\n                                cancelled = !0;\n                                for (var _i18 = 0; _i18 < mutationObservers.length; _i18++) mutationObservers[_i18].disconnect();\n                                interval && interval.cancel();\n                                sacrificialFrameWin && sacrificialFrameWin.removeEventListener(\"unload\", elementClosed);\n                                sacrificialFrame && destroyElement(sacrificialFrame);\n                            };\n                            var elementClosed = function() {\n                                if (!cancelled) {\n                                    handler();\n                                    cancel();\n                                }\n                            };\n                            if (isElementClosed(element)) {\n                                elementClosed();\n                                return {\n                                    cancel: cancel\n                                };\n                            }\n                            if (window.MutationObserver) {\n                                var mutationElement = element.parentElement;\n                                for (;mutationElement; ) {\n                                    var mutationObserver = new window.MutationObserver((function() {\n                                        isElementClosed(element) && elementClosed();\n                                    }));\n                                    mutationObserver.observe(mutationElement, {\n                                        childList: !0\n                                    });\n                                    mutationObservers.push(mutationObserver);\n                                    mutationElement = mutationElement.parentElement;\n                                }\n                            }\n                            (sacrificialFrame = document.createElement(\"iframe\")).setAttribute(\"name\", \"__detect_close_\" + uniqueID() + \"__\");\n                            sacrificialFrame.style.display = \"none\";\n                            awaitFrameWindow(sacrificialFrame).then((function(frameWin) {\n                                (sacrificialFrameWin = assertSameDomain(frameWin)).addEventListener(\"unload\", elementClosed);\n                            }));\n                            element.appendChild(sacrificialFrame);\n                            interval = safeInterval((function() {\n                                isElementClosed(element) && elementClosed();\n                            }), 1e3);\n                            return {\n                                cancel: cancel\n                            };\n                        }(innerContainer, (function() {\n                            var removeError = new Error(\"Detected container element removed from DOM\");\n                            return promise_ZalgoPromise.delay(1).then((function() {\n                                if (!isElementClosed(innerContainer)) {\n                                    clean.all(removeError);\n                                    return rerender().then(resolveInitPromise, rejectInitPromise);\n                                }\n                                close(removeError);\n                            }));\n                        }));\n                        clean.register((function() {\n                            return containerWatcher.cancel();\n                        }));\n                        clean.register((function() {\n                            return destroyElement(innerContainer);\n                        }));\n                        return currentProxyContainer = getProxyObject(innerContainer);\n                    }\n                }));\n            };\n            var getHelpers = function() {\n                return {\n                    state: state,\n                    event: event,\n                    close: close,\n                    focus: focus,\n                    resize: resize,\n                    onError: onError,\n                    updateProps: updateProps,\n                    show: show,\n                    hide: hide\n                };\n            };\n            var setProps = function(newProps, isUpdate) {\n                void 0 === isUpdate && (isUpdate = !1);\n                var helpers = getHelpers();\n                !function(propsDef, props, inputProps, helpers, isUpdate) {\n                    void 0 === isUpdate && (isUpdate = !1);\n                    extend(props, inputProps = inputProps || {});\n                    var propNames = isUpdate ? [] : [].concat(Object.keys(propsDef));\n                    for (var _i2 = 0, _Object$keys2 = Object.keys(inputProps); _i2 < _Object$keys2.length; _i2++) {\n                        var key = _Object$keys2[_i2];\n                        -1 === propNames.indexOf(key) && propNames.push(key);\n                    }\n                    var aliases = [];\n                    var state = helpers.state, close = helpers.close, focus = helpers.focus, event = helpers.event, onError = helpers.onError;\n                    for (var _i4 = 0; _i4 < propNames.length; _i4++) {\n                        var _key = propNames[_i4];\n                        var propDef = propsDef[_key];\n                        var value = inputProps[_key];\n                        if (propDef) {\n                            var alias = propDef.alias;\n                            if (alias) {\n                                !isDefined(value) && isDefined(inputProps[alias]) && (value = inputProps[alias]);\n                                aliases.push(alias);\n                            }\n                            propDef.value && (value = propDef.value({\n                                props: props,\n                                state: state,\n                                close: close,\n                                focus: focus,\n                                event: event,\n                                onError: onError\n                            }));\n                            !isDefined(value) && propDef.default && (value = propDef.default({\n                                props: props,\n                                state: state,\n                                close: close,\n                                focus: focus,\n                                event: event,\n                                onError: onError\n                            }));\n                            if (isDefined(value) && (\"array\" === propDef.type ? !Array.isArray(value) : typeof value !== propDef.type)) throw new TypeError(\"Prop is not of type \" + propDef.type + \": \" + _key);\n                            props[_key] = value;\n                        }\n                    }\n                    for (var _i6 = 0; _i6 < aliases.length; _i6++) delete props[aliases[_i6]];\n                    eachProp(props, propsDef, (function(key, propDef, value) {\n                        if (propDef && isDefined(value) && propDef.decorate) {\n                            var decoratedValue = propDef.decorate({\n                                value: value,\n                                props: props,\n                                state: state,\n                                close: close,\n                                focus: focus,\n                                event: event,\n                                onError: onError\n                            });\n                            props[key] = decoratedValue;\n                        }\n                    }));\n                    for (var _i8 = 0, _Object$keys4 = Object.keys(propsDef); _i8 < _Object$keys4.length; _i8++) {\n                        var _key2 = _Object$keys4[_i8];\n                        if (!1 !== propsDef[_key2].required && !isDefined(props[_key2])) throw new Error('Expected prop \"' + _key2 + '\" to be defined');\n                    }\n                }(propsDef, props, newProps, helpers, isUpdate);\n            };\n            var updateProps = function(newProps) {\n                setProps(newProps, !0);\n                return initPromise.then((function() {\n                    var child = childComponent;\n                    var proxyWin = currentProxyWin;\n                    if (child && proxyWin) return getPropsForChild(getDomainMatcher()).then((function(childProps) {\n                        return child.updateProps(childProps).catch((function(err) {\n                            return checkWindowClose(proxyWin).then((function(closed) {\n                                if (!closed) throw err;\n                            }));\n                        }));\n                    }));\n                }));\n            };\n            return {\n                init: function() {\n                    !function() {\n                        event.on(EVENT.RENDER, (function() {\n                            return props.onRender();\n                        }));\n                        event.on(EVENT.DISPLAY, (function() {\n                            return props.onDisplay();\n                        }));\n                        event.on(EVENT.RENDERED, (function() {\n                            return props.onRendered();\n                        }));\n                        event.on(EVENT.CLOSE, (function() {\n                            return props.onClose();\n                        }));\n                        event.on(EVENT.DESTROY, (function() {\n                            return props.onDestroy();\n                        }));\n                        event.on(EVENT.RESIZE, (function() {\n                            return props.onResize();\n                        }));\n                        event.on(EVENT.FOCUS, (function() {\n                            return props.onFocus();\n                        }));\n                        event.on(EVENT.PROPS, (function(newProps) {\n                            return props.onProps(newProps);\n                        }));\n                        event.on(EVENT.ERROR, (function(err) {\n                            return props && props.onError ? props.onError(err) : rejectInitPromise(err).then((function() {\n                                setTimeout((function() {\n                                    throw err;\n                                }), 1);\n                            }));\n                        }));\n                        clean.register(event.reset);\n                    }();\n                },\n                render: function(_ref13) {\n                    var target = _ref13.target, container = _ref13.container, context = _ref13.context, rerender = _ref13.rerender;\n                    return promise_ZalgoPromise.try((function() {\n                        var domain = getDomainMatcher();\n                        var childDomain = getChildDomain();\n                        !function(target, domain, container) {\n                            if (target !== window) {\n                                if (!isSameTopWindow(window, target)) throw new Error(\"Can only renderTo an adjacent frame\");\n                                var origin = getDomain();\n                                if (!matchDomain(domain, origin) && !isSameDomain(target)) throw new Error(\"Can not render remotely to \" + domain.toString() + \" - can only render to \" + origin);\n                                if (container && \"string\" != typeof container) throw new Error(\"Container passed to renderTo must be a string selector, got \" + typeof container + \" }\");\n                            }\n                        }(target, domain, container);\n                        var delegatePromise = promise_ZalgoPromise.try((function() {\n                            if (target !== window) return function(context, target) {\n                                var delegateProps = {};\n                                for (var _i4 = 0, _Object$keys4 = Object.keys(props); _i4 < _Object$keys4.length; _i4++) {\n                                    var propName = _Object$keys4[_i4];\n                                    var propDef = propsDef[propName];\n                                    propDef && propDef.allowDelegate && (delegateProps[propName] = props[propName]);\n                                }\n                                var childOverridesPromise = send_send(target, \"zoid_delegate_\" + name, {\n                                    uid: uid,\n                                    overrides: {\n                                        props: delegateProps,\n                                        event: event,\n                                        close: close,\n                                        onError: onError,\n                                        getInternalState: getInternalState,\n                                        setInternalState: setInternalState,\n                                        resolveInitPromise: resolveInitPromise,\n                                        rejectInitPromise: rejectInitPromise\n                                    }\n                                }).then((function(_ref12) {\n                                    var parentComp = _ref12.data.parent;\n                                    clean.register((function(err) {\n                                        if (!isWindowClosed(target)) return parentComp.destroy(err);\n                                    }));\n                                    return parentComp.getDelegateOverrides();\n                                })).catch((function(err) {\n                                    throw new Error(\"Unable to delegate rendering. Possibly the component is not loaded in the target window.\\n\\n\" + stringifyError(err));\n                                }));\n                                getProxyContainerOverride = function() {\n                                    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];\n                                    return childOverridesPromise.then((function(childOverrides) {\n                                        return childOverrides.getProxyContainer.apply(childOverrides, args);\n                                    }));\n                                };\n                                renderContainerOverride = function() {\n                                    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) args[_key2] = arguments[_key2];\n                                    return childOverridesPromise.then((function(childOverrides) {\n                                        return childOverrides.renderContainer.apply(childOverrides, args);\n                                    }));\n                                };\n                                showOverride = function() {\n                                    for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) args[_key3] = arguments[_key3];\n                                    return childOverridesPromise.then((function(childOverrides) {\n                                        return childOverrides.show.apply(childOverrides, args);\n                                    }));\n                                };\n                                hideOverride = function() {\n                                    for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) args[_key4] = arguments[_key4];\n                                    return childOverridesPromise.then((function(childOverrides) {\n                                        return childOverrides.hide.apply(childOverrides, args);\n                                    }));\n                                };\n                                watchForUnloadOverride = function() {\n                                    for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) args[_key5] = arguments[_key5];\n                                    return childOverridesPromise.then((function(childOverrides) {\n                                        return childOverrides.watchForUnload.apply(childOverrides, args);\n                                    }));\n                                };\n                                if (context === CONTEXT.IFRAME) {\n                                    getProxyWindowOverride = function() {\n                                        for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) args[_key6] = arguments[_key6];\n                                        return childOverridesPromise.then((function(childOverrides) {\n                                            return childOverrides.getProxyWindow.apply(childOverrides, args);\n                                        }));\n                                    };\n                                    openFrameOverride = function() {\n                                        for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) args[_key7] = arguments[_key7];\n                                        return childOverridesPromise.then((function(childOverrides) {\n                                            return childOverrides.openFrame.apply(childOverrides, args);\n                                        }));\n                                    };\n                                    openPrerenderFrameOverride = function() {\n                                        for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) args[_key8] = arguments[_key8];\n                                        return childOverridesPromise.then((function(childOverrides) {\n                                            return childOverrides.openPrerenderFrame.apply(childOverrides, args);\n                                        }));\n                                    };\n                                    prerenderOverride = function() {\n                                        for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) args[_key9] = arguments[_key9];\n                                        return childOverridesPromise.then((function(childOverrides) {\n                                            return childOverrides.prerender.apply(childOverrides, args);\n                                        }));\n                                    };\n                                    openOverride = function() {\n                                        for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) args[_key10] = arguments[_key10];\n                                        return childOverridesPromise.then((function(childOverrides) {\n                                            return childOverrides.open.apply(childOverrides, args);\n                                        }));\n                                    };\n                                    openPrerenderOverride = function() {\n                                        for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) args[_key11] = arguments[_key11];\n                                        return childOverridesPromise.then((function(childOverrides) {\n                                            return childOverrides.openPrerender.apply(childOverrides, args);\n                                        }));\n                                    };\n                                }\n                                return childOverridesPromise;\n                            }(context, target);\n                        }));\n                        var windowProp = props.window;\n                        var watchForUnloadPromise = watchForUnload();\n                        var buildUrlPromise = serializeProps(propsDef, props, \"get\").then((function(query) {\n                            return function(url, options) {\n                                var query = options.query || {};\n                                var hash = options.hash || {};\n                                var originalUrl;\n                                var originalHash;\n                                var _url$split = url.split(\"#\");\n                                originalHash = _url$split[1];\n                                var _originalUrl$split = (originalUrl = _url$split[0]).split(\"?\");\n                                originalUrl = _originalUrl$split[0];\n                                var queryString = extendQuery(_originalUrl$split[1], query);\n                                var hashString = extendQuery(originalHash, hash);\n                                queryString && (originalUrl = originalUrl + \"?\" + queryString);\n                                hashString && (originalUrl = originalUrl + \"#\" + hashString);\n                                return originalUrl;\n                            }(function(url) {\n                                if (!(domain = getDomainFromUrl(url), 0 === domain.indexOf(\"mock:\"))) return url;\n                                var domain;\n                                throw new Error(\"Mock urls not supported out of test mode\");\n                            }(getUrl()), {\n                                query: query\n                            });\n                        }));\n                        var buildBodyPromise = serializeProps(propsDef, props, \"post\");\n                        var onRenderPromise = event.trigger(EVENT.RENDER);\n                        var getProxyContainerPromise = getProxyContainer(container);\n                        var getProxyWindowPromise = getProxyWindow();\n                        var buildWindowNamePromise = getProxyWindowPromise.then((function(proxyWin) {\n                            return function(_temp) {\n                                var _ref5 = void 0 === _temp ? {} : _temp, proxyWin = _ref5.proxyWin, childDomain = _ref5.childDomain, domain = _ref5.domain, context = (void 0 === _ref5.target && window, \n                                _ref5.context);\n                                return function(proxyWin, childDomain, domain) {\n                                    return getPropsForChild(domain).then((function(childProps) {\n                                        var value = setup_serializeMessage(proxyWin, domain, childProps);\n                                        var propRef = childDomain === getDomain() ? {\n                                            type: \"uid\",\n                                            uid: uid\n                                        } : {\n                                            type: \"raw\",\n                                            value: value\n                                        };\n                                        if (\"uid\" === propRef.type) {\n                                            var global = lib_global_getGlobal(window);\n                                            global.props = global.props || {};\n                                            global.props[uid] = value;\n                                            clean.register((function() {\n                                                delete global.props[uid];\n                                            }));\n                                        }\n                                        return propRef;\n                                    }));\n                                }(proxyWin, childDomain, domain).then((function(propsRef) {\n                                    return {\n                                        uid: uid,\n                                        context: context,\n                                        tag: tag,\n                                        version: \"9_0_78\",\n                                        childDomain: childDomain,\n                                        parentDomain: getDomain(window),\n                                        parent: getWindowRef(0, childDomain, context),\n                                        props: propsRef,\n                                        exports: setup_serializeMessage(proxyWin, domain, (win = proxyWin, {\n                                            init: initChild,\n                                            close: close,\n                                            checkClose: function() {\n                                                return checkWindowClose(win);\n                                            },\n                                            resize: resize,\n                                            onError: onError,\n                                            show: show,\n                                            hide: hide,\n                                            export: xport\n                                        }))\n                                    };\n                                    var win;\n                                }));\n                            }({\n                                proxyWin: (_ref6 = {\n                                    proxyWin: proxyWin,\n                                    childDomain: childDomain,\n                                    domain: domain,\n                                    target: target,\n                                    context: context\n                                }).proxyWin,\n                                childDomain: _ref6.childDomain,\n                                domain: _ref6.domain,\n                                target: _ref6.target,\n                                context: _ref6.context\n                            }).then((function(childPayload) {\n                                return \"__zoid__\" + name + \"__\" + base64encode(JSON.stringify(childPayload)) + \"__\";\n                            }));\n                            var _ref6;\n                        }));\n                        var openFramePromise = buildWindowNamePromise.then((function(windowName) {\n                            return openFrame(context, {\n                                windowName: windowName\n                            });\n                        }));\n                        var openPrerenderFramePromise = openPrerenderFrame(context);\n                        var renderContainerPromise = promise_ZalgoPromise.hash({\n                            proxyContainer: getProxyContainerPromise,\n                            proxyFrame: openFramePromise,\n                            proxyPrerenderFrame: openPrerenderFramePromise\n                        }).then((function(_ref14) {\n                            return renderContainer(_ref14.proxyContainer, {\n                                context: context,\n                                proxyFrame: _ref14.proxyFrame,\n                                proxyPrerenderFrame: _ref14.proxyPrerenderFrame,\n                                rerender: rerender\n                            });\n                        })).then((function(proxyContainer) {\n                            return proxyContainer;\n                        }));\n                        var openPromise = promise_ZalgoPromise.hash({\n                            windowName: buildWindowNamePromise,\n                            proxyFrame: openFramePromise,\n                            proxyWin: getProxyWindowPromise\n                        }).then((function(_ref15) {\n                            var proxyWin = _ref15.proxyWin;\n                            return windowProp ? proxyWin : open(context, {\n                                windowName: _ref15.windowName,\n                                proxyWin: proxyWin,\n                                proxyFrame: _ref15.proxyFrame\n                            });\n                        }));\n                        var openPrerenderPromise = promise_ZalgoPromise.hash({\n                            proxyWin: openPromise,\n                            proxyPrerenderFrame: openPrerenderFramePromise\n                        }).then((function(_ref16) {\n                            return openPrerender(context, _ref16.proxyWin, _ref16.proxyPrerenderFrame);\n                        }));\n                        var setStatePromise = openPromise.then((function(proxyWin) {\n                            currentProxyWin = proxyWin;\n                            return setProxyWin(proxyWin);\n                        }));\n                        var prerenderPromise = promise_ZalgoPromise.hash({\n                            proxyPrerenderWin: openPrerenderPromise,\n                            state: setStatePromise\n                        }).then((function(_ref17) {\n                            return prerender(_ref17.proxyPrerenderWin, {\n                                context: context\n                            });\n                        }));\n                        var setWindowNamePromise = promise_ZalgoPromise.hash({\n                            proxyWin: openPromise,\n                            windowName: buildWindowNamePromise\n                        }).then((function(_ref18) {\n                            if (windowProp) return _ref18.proxyWin.setName(_ref18.windowName);\n                        }));\n                        var getMethodPromise = promise_ZalgoPromise.hash({\n                            body: buildBodyPromise\n                        }).then((function(_ref19) {\n                            return options.method ? options.method : Object.keys(_ref19.body).length ? \"post\" : \"get\";\n                        }));\n                        var loadUrlPromise = promise_ZalgoPromise.hash({\n                            proxyWin: openPromise,\n                            windowUrl: buildUrlPromise,\n                            body: buildBodyPromise,\n                            method: getMethodPromise,\n                            windowName: setWindowNamePromise,\n                            prerender: prerenderPromise\n                        }).then((function(_ref20) {\n                            return _ref20.proxyWin.setLocation(_ref20.windowUrl, {\n                                method: _ref20.method,\n                                body: _ref20.body\n                            });\n                        }));\n                        var watchForClosePromise = openPromise.then((function(proxyWin) {\n                            !function watchForClose(proxyWin, context) {\n                                var cancelled = !1;\n                                clean.register((function() {\n                                    cancelled = !0;\n                                }));\n                                return promise_ZalgoPromise.delay(2e3).then((function() {\n                                    return proxyWin.isClosed();\n                                })).then((function(isClosed) {\n                                    if (!cancelled) return isClosed ? close(new Error(\"Detected \" + context + \" close\")) : watchForClose(proxyWin, context);\n                                }));\n                            }(proxyWin, context);\n                        }));\n                        var onDisplayPromise = promise_ZalgoPromise.hash({\n                            container: renderContainerPromise,\n                            prerender: prerenderPromise\n                        }).then((function() {\n                            return event.trigger(EVENT.DISPLAY);\n                        }));\n                        var openBridgePromise = openPromise.then((function(proxyWin) {}));\n                        var runTimeoutPromise = loadUrlPromise.then((function() {\n                            return promise_ZalgoPromise.try((function() {\n                                var timeout = props.timeout;\n                                if (timeout) return initPromise.timeout(timeout, new Error(\"Loading component timed out after \" + timeout + \" milliseconds\"));\n                            }));\n                        }));\n                        var onRenderedPromise = initPromise.then((function() {\n                            return event.trigger(EVENT.RENDERED);\n                        }));\n                        return promise_ZalgoPromise.hash({\n                            initPromise: initPromise,\n                            buildUrlPromise: buildUrlPromise,\n                            onRenderPromise: onRenderPromise,\n                            getProxyContainerPromise: getProxyContainerPromise,\n                            openFramePromise: openFramePromise,\n                            openPrerenderFramePromise: openPrerenderFramePromise,\n                            renderContainerPromise: renderContainerPromise,\n                            openPromise: openPromise,\n                            openPrerenderPromise: openPrerenderPromise,\n                            setStatePromise: setStatePromise,\n                            prerenderPromise: prerenderPromise,\n                            loadUrlPromise: loadUrlPromise,\n                            buildWindowNamePromise: buildWindowNamePromise,\n                            setWindowNamePromise: setWindowNamePromise,\n                            watchForClosePromise: watchForClosePromise,\n                            onDisplayPromise: onDisplayPromise,\n                            openBridgePromise: openBridgePromise,\n                            runTimeoutPromise: runTimeoutPromise,\n                            onRenderedPromise: onRenderedPromise,\n                            delegatePromise: delegatePromise,\n                            watchForUnloadPromise: watchForUnloadPromise\n                        });\n                    })).catch((function(err) {\n                        return promise_ZalgoPromise.all([ onError(err), destroy(err) ]).then((function() {\n                            throw err;\n                        }), (function() {\n                            throw err;\n                        }));\n                    })).then(src_util_noop);\n                },\n                destroy: destroy,\n                getProps: function() {\n                    return props;\n                },\n                setProps: setProps,\n                export: xport,\n                getHelpers: getHelpers,\n                getDelegateOverrides: function() {\n                    return promise_ZalgoPromise.try((function() {\n                        return {\n                            getProxyContainer: getProxyContainer,\n                            show: show,\n                            hide: hide,\n                            renderContainer: renderContainer,\n                            getProxyWindow: getProxyWindow,\n                            watchForUnload: watchForUnload,\n                            openFrame: openFrame,\n                            openPrerenderFrame: openPrerenderFrame,\n                            prerender: prerender,\n                            open: open,\n                            openPrerender: openPrerender,\n                            setProxyWin: setProxyWin\n                        };\n                    }));\n                },\n                getExports: function() {\n                    return xports({\n                        getExports: function() {\n                            return exportsPromise;\n                        }\n                    });\n                }\n            };\n        }\n        function defaultContainerTemplate(_ref) {\n            var uid = _ref.uid, frame = _ref.frame, prerenderFrame = _ref.prerenderFrame, doc = _ref.doc, props = _ref.props, event = _ref.event, dimensions = _ref.dimensions;\n            var width = dimensions.width, height = dimensions.height;\n            if (frame && prerenderFrame) {\n                var div = doc.createElement(\"div\");\n                div.setAttribute(\"id\", uid);\n                var style = doc.createElement(\"style\");\n                props.cspNonce && style.setAttribute(\"nonce\", props.cspNonce);\n                style.appendChild(doc.createTextNode(\"\\n            #\" + uid + \" {\\n                display: inline-block;\\n                position: relative;\\n                width: \" + width + \";\\n                height: \" + height + \";\\n            }\\n\\n            #\" + uid + \" > iframe {\\n                display: inline-block;\\n                position: absolute;\\n                width: 100%;\\n                height: 100%;\\n                top: 0;\\n                left: 0;\\n                transition: opacity .2s ease-in-out;\\n            }\\n\\n            #\" + uid + \" > iframe.zoid-invisible {\\n                opacity: 0;\\n            }\\n\\n            #\" + uid + \" > iframe.zoid-visible {\\n                opacity: 1;\\n        }\\n        \"));\n                div.appendChild(frame);\n                div.appendChild(prerenderFrame);\n                div.appendChild(style);\n                prerenderFrame.classList.add(\"zoid-visible\");\n                frame.classList.add(\"zoid-invisible\");\n                event.on(EVENT.RENDERED, (function() {\n                    prerenderFrame.classList.remove(\"zoid-visible\");\n                    prerenderFrame.classList.add(\"zoid-invisible\");\n                    frame.classList.remove(\"zoid-invisible\");\n                    frame.classList.add(\"zoid-visible\");\n                    setTimeout((function() {\n                        destroyElement(prerenderFrame);\n                    }), 1);\n                }));\n                event.on(EVENT.RESIZE, (function(_ref2) {\n                    var newWidth = _ref2.width, newHeight = _ref2.height;\n                    \"number\" == typeof newWidth && (div.style.width = toCSS(newWidth));\n                    \"number\" == typeof newHeight && (div.style.height = toCSS(newHeight));\n                }));\n                return div;\n            }\n        }\n        var cleanInstances = cleanup();\n        var cleanZoid = cleanup();\n        function component(opts) {\n            var options = function(options) {\n                var tag = options.tag, url = options.url, domain = options.domain, bridgeUrl = options.bridgeUrl, _options$props = options.props, props = void 0 === _options$props ? {} : _options$props, _options$dimensions = options.dimensions, dimensions = void 0 === _options$dimensions ? {} : _options$dimensions, _options$autoResize = options.autoResize, autoResize = void 0 === _options$autoResize ? {} : _options$autoResize, _options$allowedParen = options.allowedParentDomains, allowedParentDomains = void 0 === _options$allowedParen ? \"*\" : _options$allowedParen, _options$attributes = options.attributes, attributes = void 0 === _options$attributes ? {} : _options$attributes, _options$defaultConte = options.defaultContext, defaultContext = void 0 === _options$defaultConte ? CONTEXT.IFRAME : _options$defaultConte, _options$containerTem = options.containerTemplate, containerTemplate = void 0 === _options$containerTem ? defaultContainerTemplate : _options$containerTem, _options$prerenderTem = options.prerenderTemplate, prerenderTemplate = void 0 === _options$prerenderTem ? null : _options$prerenderTem, validate = options.validate, _options$eligible = options.eligible, eligible = void 0 === _options$eligible ? function() {\n                    return {\n                        eligible: !0\n                    };\n                } : _options$eligible, _options$logger = options.logger, logger = void 0 === _options$logger ? {\n                    info: src_util_noop\n                } : _options$logger, _options$exports = options.exports, xportsDefinition = void 0 === _options$exports ? src_util_noop : _options$exports, method = options.method, _options$children = options.children, children = void 0 === _options$children ? function() {\n                    return {};\n                } : _options$children;\n                var name = tag.replace(/-/g, \"_\");\n                var propsDef = _extends({}, {\n                    window: {\n                        type: PROP_TYPE.OBJECT,\n                        sendToChild: !1,\n                        required: !1,\n                        allowDelegate: !0,\n                        validate: function(_ref2) {\n                            var value = _ref2.value;\n                            if (!isWindow(value) && !window_ProxyWindow.isProxyWindow(value)) throw new Error(\"Expected Window or ProxyWindow\");\n                            if (isWindow(value)) {\n                                if (isWindowClosed(value)) throw new Error(\"Window is closed\");\n                                if (!isSameDomain(value)) throw new Error(\"Window is not same domain\");\n                            }\n                        },\n                        decorate: function(_ref3) {\n                            return setup_toProxyWindow(_ref3.value);\n                        }\n                    },\n                    timeout: {\n                        type: PROP_TYPE.NUMBER,\n                        required: !1,\n                        sendToChild: !1\n                    },\n                    cspNonce: {\n                        type: PROP_TYPE.STRING,\n                        required: !1\n                    },\n                    onDisplay: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        allowDelegate: !0,\n                        default: props_defaultNoop,\n                        decorate: props_decorateOnce\n                    },\n                    onRendered: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        default: props_defaultNoop,\n                        decorate: props_decorateOnce\n                    },\n                    onRender: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        default: props_defaultNoop,\n                        decorate: props_decorateOnce\n                    },\n                    onClose: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        allowDelegate: !0,\n                        default: props_defaultNoop,\n                        decorate: props_decorateOnce\n                    },\n                    onDestroy: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        allowDelegate: !0,\n                        default: props_defaultNoop,\n                        decorate: props_decorateOnce\n                    },\n                    onResize: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        allowDelegate: !0,\n                        default: props_defaultNoop\n                    },\n                    onFocus: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        allowDelegate: !0,\n                        default: props_defaultNoop\n                    },\n                    close: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref4) {\n                            return _ref4.close;\n                        }\n                    },\n                    focus: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref5) {\n                            return _ref5.focus;\n                        }\n                    },\n                    resize: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref6) {\n                            return _ref6.resize;\n                        }\n                    },\n                    uid: {\n                        type: PROP_TYPE.STRING,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref7) {\n                            return _ref7.uid;\n                        }\n                    },\n                    tag: {\n                        type: PROP_TYPE.STRING,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref8) {\n                            return _ref8.tag;\n                        }\n                    },\n                    getParent: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref9) {\n                            return _ref9.getParent;\n                        }\n                    },\n                    getParentDomain: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref10) {\n                            return _ref10.getParentDomain;\n                        }\n                    },\n                    show: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref11) {\n                            return _ref11.show;\n                        }\n                    },\n                    hide: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref12) {\n                            return _ref12.hide;\n                        }\n                    },\n                    export: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref13) {\n                            return _ref13.export;\n                        }\n                    },\n                    onError: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref14) {\n                            return _ref14.onError;\n                        }\n                    },\n                    onProps: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref15) {\n                            return _ref15.onProps;\n                        }\n                    },\n                    getSiblings: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref16) {\n                            return _ref16.getSiblings;\n                        }\n                    }\n                }, props);\n                if (!containerTemplate) throw new Error(\"Container template required\");\n                return {\n                    name: name,\n                    tag: tag,\n                    url: url,\n                    domain: domain,\n                    bridgeUrl: bridgeUrl,\n                    method: method,\n                    propsDef: propsDef,\n                    dimensions: dimensions,\n                    autoResize: autoResize,\n                    allowedParentDomains: allowedParentDomains,\n                    attributes: attributes,\n                    defaultContext: defaultContext,\n                    containerTemplate: containerTemplate,\n                    prerenderTemplate: prerenderTemplate,\n                    validate: validate,\n                    logger: logger,\n                    eligible: eligible,\n                    children: children,\n                    exports: \"function\" == typeof xportsDefinition ? xportsDefinition : function(_ref) {\n                        var getExports = _ref.getExports;\n                        var result = {};\n                        var _loop = function(_i2, _Object$keys2) {\n                            var key = _Object$keys2[_i2];\n                            var type = xportsDefinition[key].type;\n                            var valuePromise = getExports().then((function(res) {\n                                return res[key];\n                            }));\n                            result[key] = type === PROP_TYPE.FUNCTION ? function() {\n                                for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];\n                                return valuePromise.then((function(value) {\n                                    return value.apply(void 0, args);\n                                }));\n                            } : valuePromise;\n                        };\n                        for (var _i2 = 0, _Object$keys2 = Object.keys(xportsDefinition); _i2 < _Object$keys2.length; _i2++) _loop(_i2, _Object$keys2);\n                        return result;\n                    }\n                };\n            }(opts);\n            var name = options.name, tag = options.tag, defaultContext = options.defaultContext, eligible = options.eligible, children = options.children;\n            var global = lib_global_getGlobal();\n            var instances = [];\n            var isChild = function() {\n                var payload = getChildPayload();\n                return Boolean(payload && payload.tag === tag && payload.childDomain === getDomain());\n            };\n            var registerChild = memoize((function() {\n                if (isChild()) {\n                    if (window.xprops) {\n                        delete global.components[tag];\n                        throw new Error(\"Can not register \" + name + \" as child - child already registered\");\n                    }\n                    var child = function(options) {\n                        var tag = options.tag, propsDef = options.propsDef, autoResize = options.autoResize, allowedParentDomains = options.allowedParentDomains;\n                        var onPropHandlers = [];\n                        var childPayload = getChildPayload();\n                        var props;\n                        var exportsPromise = new promise_ZalgoPromise;\n                        if (!childPayload) throw new Error(\"No child payload found\");\n                        if (\"9_0_78\" !== childPayload.version) throw new Error(\"Parent window has zoid version \" + childPayload.version + \", child window has version 9_0_78\");\n                        var uid = childPayload.uid, parentDomain = childPayload.parentDomain, parentExports = childPayload.exports, context = childPayload.context, propsRef = childPayload.props;\n                        var parentComponentWindow = function(ref) {\n                            var type = ref.type;\n                            if (\"opener\" === type) return assertExists(\"opener\", getOpener(window));\n                            if (\"parent\" === type && \"number\" == typeof ref.distance) return assertExists(\"parent\", function(win, n) {\n                                void 0 === n && (n = 1);\n                                return function(win, n) {\n                                    void 0 === n && (n = 1);\n                                    var parent = win;\n                                    for (var i = 0; i < n; i++) {\n                                        if (!parent) return;\n                                        parent = utils_getParent(parent);\n                                    }\n                                    return parent;\n                                }(win, getDistanceFromTop(win) - n);\n                            }(window, ref.distance));\n                            if (\"global\" === type && ref.uid && \"string\" == typeof ref.uid) {\n                                var uid = ref.uid;\n                                var ancestor = getAncestor(window);\n                                if (!ancestor) throw new Error(\"Can not find ancestor window\");\n                                for (var _i2 = 0, _getAllFramesInWindow2 = getAllFramesInWindow(ancestor); _i2 < _getAllFramesInWindow2.length; _i2++) {\n                                    var frame = _getAllFramesInWindow2[_i2];\n                                    if (isSameDomain(frame)) {\n                                        var global = lib_global_getGlobal(frame);\n                                        if (global && global.windows && global.windows[uid]) return global.windows[uid];\n                                    }\n                                }\n                            }\n                            throw new Error(\"Unable to find \" + type + \" parent component window\");\n                        }(childPayload.parent);\n                        var parent = setup_deserializeMessage(parentComponentWindow, parentDomain, parentExports);\n                        var show = parent.show, hide = parent.hide, close = parent.close;\n                        var getParent = function() {\n                            return parentComponentWindow;\n                        };\n                        var getParentDomain = function() {\n                            return parentDomain;\n                        };\n                        var onProps = function(handler) {\n                            onPropHandlers.push(handler);\n                        };\n                        var onError = function(err) {\n                            return promise_ZalgoPromise.try((function() {\n                                if (parent && parent.onError) return parent.onError(err);\n                                throw err;\n                            }));\n                        };\n                        var resize = function(_ref) {\n                            return parent.resize.fireAndForget({\n                                width: _ref.width,\n                                height: _ref.height\n                            });\n                        };\n                        var xport = function(xports) {\n                            exportsPromise.resolve(xports);\n                            return parent.export(xports);\n                        };\n                        var getSiblings = function(_temp) {\n                            var anyParent = (void 0 === _temp ? {} : _temp).anyParent;\n                            var result = [];\n                            var currentParent = props.parent;\n                            void 0 === anyParent && (anyParent = !currentParent);\n                            if (!anyParent && !currentParent) throw new Error(\"No parent found for \" + tag + \" child\");\n                            for (var _i4 = 0, _getAllFramesInWindow4 = getAllFramesInWindow(window); _i4 < _getAllFramesInWindow4.length; _i4++) {\n                                var win = _getAllFramesInWindow4[_i4];\n                                if (isSameDomain(win)) {\n                                    var xprops = assertSameDomain(win).xprops;\n                                    if (xprops && getParent() === xprops.getParent()) {\n                                        var winParent = xprops.parent;\n                                        (anyParent || !currentParent || winParent && winParent.uid === currentParent.uid) && result.push({\n                                            props: xprops,\n                                            exports: lib_global_getGlobal(win).exports\n                                        });\n                                    }\n                                }\n                            }\n                            return result;\n                        };\n                        var setProps = function(newProps, origin, isUpdate) {\n                            void 0 === isUpdate && (isUpdate = !1);\n                            var normalizedProps = function(parentComponentWindow, propsDef, props, origin, helpers, isUpdate) {\n                                void 0 === isUpdate && (isUpdate = !1);\n                                var result = {};\n                                for (var _i2 = 0, _Object$keys2 = Object.keys(props); _i2 < _Object$keys2.length; _i2++) {\n                                    var key = _Object$keys2[_i2];\n                                    var prop = propsDef[key];\n                                    if (!prop || !prop.sameDomain || origin === getDomain(window) && isSameDomain(parentComponentWindow)) {\n                                        var value = normalizeChildProp(propsDef, 0, key, props[key], helpers);\n                                        result[key] = value;\n                                        prop && prop.alias && !result[prop.alias] && (result[prop.alias] = value);\n                                    }\n                                }\n                                if (!isUpdate) for (var _i4 = 0, _Object$keys4 = Object.keys(propsDef); _i4 < _Object$keys4.length; _i4++) {\n                                    var _key = _Object$keys4[_i4];\n                                    props.hasOwnProperty(_key) || (result[_key] = normalizeChildProp(propsDef, 0, _key, void 0, helpers));\n                                }\n                                return result;\n                            }(parentComponentWindow, propsDef, newProps, origin, {\n                                tag: tag,\n                                show: show,\n                                hide: hide,\n                                close: close,\n                                focus: child_focus,\n                                onError: onError,\n                                resize: resize,\n                                getSiblings: getSiblings,\n                                onProps: onProps,\n                                getParent: getParent,\n                                getParentDomain: getParentDomain,\n                                uid: uid,\n                                export: xport\n                            }, isUpdate);\n                            props ? extend(props, normalizedProps) : props = normalizedProps;\n                            for (var _i6 = 0; _i6 < onPropHandlers.length; _i6++) (0, onPropHandlers[_i6])(props);\n                        };\n                        var updateProps = function(newProps) {\n                            return promise_ZalgoPromise.try((function() {\n                                return setProps(newProps, parentDomain, !0);\n                            }));\n                        };\n                        return {\n                            init: function() {\n                                return promise_ZalgoPromise.try((function() {\n                                    lib_global_getGlobal().exports = options.exports({\n                                        getExports: function() {\n                                            return exportsPromise;\n                                        }\n                                    });\n                                    !function(allowedParentDomains, domain) {\n                                        if (!matchDomain(allowedParentDomains, domain)) throw new Error(\"Can not be rendered by domain: \" + domain);\n                                    }(allowedParentDomains, parentDomain);\n                                    markWindowKnown(parentComponentWindow);\n                                    !function() {\n                                        window.addEventListener(\"beforeunload\", (function() {\n                                            parent.checkClose.fireAndForget();\n                                        }));\n                                        window.addEventListener(\"unload\", (function() {\n                                            parent.checkClose.fireAndForget();\n                                        }));\n                                        onCloseWindow(parentComponentWindow, (function() {\n                                            child_destroy();\n                                        }));\n                                    }();\n                                    return parent.init({\n                                        updateProps: updateProps,\n                                        close: child_destroy\n                                    });\n                                })).then((function() {\n                                    return (_autoResize$width = autoResize.width, width = void 0 !== _autoResize$width && _autoResize$width, \n                                    _autoResize$height = autoResize.height, height = void 0 !== _autoResize$height && _autoResize$height, \n                                    _autoResize$element = autoResize.element, elementReady(void 0 === _autoResize$element ? \"body\" : _autoResize$element).catch(src_util_noop).then((function(element) {\n                                        return {\n                                            width: width,\n                                            height: height,\n                                            element: element\n                                        };\n                                    }))).then((function(_ref3) {\n                                        var width = _ref3.width, height = _ref3.height, element = _ref3.element;\n                                        element && (width || height) && context !== CONTEXT.POPUP && onResize(element, (function(_ref4) {\n                                            resize({\n                                                width: width ? _ref4.width : void 0,\n                                                height: height ? _ref4.height : void 0\n                                            });\n                                        }), {\n                                            width: width,\n                                            height: height\n                                        });\n                                    }));\n                                    var _autoResize$width, width, _autoResize$height, height, _autoResize$element;\n                                })).catch((function(err) {\n                                    onError(err);\n                                }));\n                            },\n                            getProps: function() {\n                                if (props) return props;\n                                setProps(function(parentComponentWindow, domain, propRef) {\n                                    var props;\n                                    if (\"raw\" === propRef.type) props = propRef.value; else if (\"uid\" === propRef.type) {\n                                        if (!isSameDomain(parentComponentWindow)) throw new Error(\"Parent component window is on a different domain - expected \" + getDomain() + \" - can not retrieve props\");\n                                        var global = lib_global_getGlobal(parentComponentWindow);\n                                        props = assertExists(\"props\", global && global.props[propRef.uid]);\n                                    }\n                                    if (!props) throw new Error(\"Could not find props\");\n                                    return setup_deserializeMessage(parentComponentWindow, domain, props);\n                                }(parentComponentWindow, parentDomain, propsRef), parentDomain);\n                                return props;\n                            }\n                        };\n                    }(options);\n                    child.init();\n                    return child;\n                }\n            }));\n            registerChild();\n            !function() {\n                var allowDelegateListener = on_on(\"zoid_allow_delegate_\" + name, (function() {\n                    return !0;\n                }));\n                var delegateListener = on_on(\"zoid_delegate_\" + name, (function(_ref2) {\n                    var _ref2$data = _ref2.data;\n                    return {\n                        parent: parentComponent({\n                            uid: _ref2$data.uid,\n                            options: options,\n                            overrides: _ref2$data.overrides,\n                            parentWin: _ref2.source\n                        })\n                    };\n                }));\n                cleanZoid.register(allowDelegateListener.cancel);\n                cleanZoid.register(delegateListener.cancel);\n            }();\n            global.components = global.components || {};\n            if (global.components[tag]) throw new Error(\"Can not register multiple components with the same tag: \" + tag);\n            global.components[tag] = !0;\n            return {\n                init: function init(inputProps) {\n                    var instance;\n                    var uid = \"zoid-\" + tag + \"-\" + uniqueID();\n                    var props = inputProps || {};\n                    var _eligible = eligible({\n                        props: props\n                    }), eligibility = _eligible.eligible, reason = _eligible.reason;\n                    var onDestroy = props.onDestroy;\n                    props.onDestroy = function() {\n                        instance && eligibility && instances.splice(instances.indexOf(instance), 1);\n                        if (onDestroy) return onDestroy.apply(void 0, arguments);\n                    };\n                    var parent = parentComponent({\n                        uid: uid,\n                        options: options\n                    });\n                    parent.init();\n                    eligibility ? parent.setProps(props) : props.onDestroy && props.onDestroy();\n                    cleanInstances.register((function(err) {\n                        return parent.destroy(err || new Error(\"zoid destroyed all components\"));\n                    }));\n                    var clone = function(_temp) {\n                        var _ref4$decorate = (void 0 === _temp ? {} : _temp).decorate;\n                        return init((void 0 === _ref4$decorate ? identity : _ref4$decorate)(props));\n                    };\n                    var _render = function(target, container, context) {\n                        return promise_ZalgoPromise.try((function() {\n                            if (!eligibility) {\n                                var err = new Error(reason || name + \" component is not eligible\");\n                                return parent.destroy(err).then((function() {\n                                    throw err;\n                                }));\n                            }\n                            if (!isWindow(target)) throw new Error(\"Must pass window to renderTo\");\n                            return function(props, context) {\n                                return promise_ZalgoPromise.try((function() {\n                                    if (props.window) return setup_toProxyWindow(props.window).getType();\n                                    if (context) {\n                                        if (context !== CONTEXT.IFRAME && context !== CONTEXT.POPUP) throw new Error(\"Unrecognized context: \" + context);\n                                        return context;\n                                    }\n                                    return defaultContext;\n                                }));\n                            }(props, context);\n                        })).then((function(finalContext) {\n                            container = function(context, container) {\n                                if (container) {\n                                    if (\"string\" != typeof container && !isElement(container)) throw new TypeError(\"Expected string or element selector to be passed\");\n                                    return container;\n                                }\n                                if (context === CONTEXT.POPUP) return \"body\";\n                                throw new Error(\"Expected element to be passed to render iframe\");\n                            }(finalContext, container);\n                            if (target !== window && \"string\" != typeof container) throw new Error(\"Must pass string element when rendering to another window\");\n                            return parent.render({\n                                target: target,\n                                container: container,\n                                context: finalContext,\n                                rerender: function() {\n                                    var newInstance = clone();\n                                    extend(instance, newInstance);\n                                    return newInstance.renderTo(target, container, context);\n                                }\n                            });\n                        })).catch((function(err) {\n                            return parent.destroy(err).then((function() {\n                                throw err;\n                            }));\n                        }));\n                    };\n                    instance = _extends({}, parent.getExports(), parent.getHelpers(), function() {\n                        var childComponents = children();\n                        var result = {};\n                        var _loop2 = function(_i4, _Object$keys4) {\n                            var childName = _Object$keys4[_i4];\n                            var Child = childComponents[childName];\n                            result[childName] = function(childInputProps) {\n                                var parentProps = parent.getProps();\n                                var childProps = _extends({}, childInputProps, {\n                                    parent: {\n                                        uid: uid,\n                                        props: parentProps,\n                                        export: parent.export\n                                    }\n                                });\n                                return Child(childProps);\n                            };\n                        };\n                        for (var _i4 = 0, _Object$keys4 = Object.keys(childComponents); _i4 < _Object$keys4.length; _i4++) _loop2(_i4, _Object$keys4);\n                        return result;\n                    }(), {\n                        isEligible: function() {\n                            return eligibility;\n                        },\n                        clone: clone,\n                        render: function(container, context) {\n                            return _render(window, container, context);\n                        },\n                        renderTo: function(target, container, context) {\n                            return _render(target, container, context);\n                        }\n                    });\n                    eligibility && instances.push(instance);\n                    return instance;\n                },\n                instances: instances,\n                driver: function(driverName, dep) {\n                    throw new Error(\"Driver support not enabled\");\n                },\n                isChild: isChild,\n                canRenderTo: function(win) {\n                    return send_send(win, \"zoid_allow_delegate_\" + name).then((function(_ref3) {\n                        return _ref3.data;\n                    })).catch((function() {\n                        return !1;\n                    }));\n                },\n                registerChild: registerChild\n            };\n        }\n        var component_create = function(options) {\n            !function() {\n                if (!global_getGlobal().initialized) {\n                    global_getGlobal().initialized = !0;\n                    on = (_ref3 = {\n                        on: on_on,\n                        send: send_send\n                    }).on, send = _ref3.send, (global = global_getGlobal()).receiveMessage = global.receiveMessage || function(message) {\n                        return receive_receiveMessage(message, {\n                            on: on,\n                            send: send\n                        });\n                    };\n                    !function(_ref5) {\n                        var on = _ref5.on, send = _ref5.send;\n                        globalStore().getOrSet(\"postMessageListener\", (function() {\n                            return addEventListener(window, \"message\", (function(event) {\n                                !function(event, _ref4) {\n                                    var on = _ref4.on, send = _ref4.send;\n                                    promise_ZalgoPromise.try((function() {\n                                        var source = event.source || event.sourceElement;\n                                        var origin = event.origin || event.originalEvent && event.originalEvent.origin;\n                                        var data = event.data;\n                                        \"null\" === origin && (origin = \"file://\");\n                                        if (source) {\n                                            if (!origin) throw new Error(\"Post message did not have origin domain\");\n                                            receive_receiveMessage({\n                                                source: source,\n                                                origin: origin,\n                                                data: data\n                                            }, {\n                                                on: on,\n                                                send: send\n                                            });\n                                        }\n                                    }));\n                                }(event, {\n                                    on: on,\n                                    send: send\n                                });\n                            }));\n                        }));\n                    }({\n                        on: on_on,\n                        send: send_send\n                    });\n                    !function(_ref8) {\n                        var on = _ref8.on, send = _ref8.send;\n                        globalStore(\"builtinListeners\").getOrSet(\"helloListener\", (function() {\n                            var listener = on(\"postrobot_hello\", {\n                                domain: \"*\"\n                            }, (function(_ref3) {\n                                resolveHelloPromise(_ref3.source, {\n                                    domain: _ref3.origin\n                                });\n                                return {\n                                    instanceID: getInstanceID()\n                                };\n                            }));\n                            var parent = getAncestor();\n                            parent && sayHello(parent, {\n                                send: send\n                            }).catch((function(err) {}));\n                            return listener;\n                        }));\n                    }({\n                        on: on_on,\n                        send: send_send\n                    });\n                }\n                var _ref3, on, send, global;\n            }();\n            var comp = component(options);\n            var init = function(props) {\n                return comp.init(props);\n            };\n            init.driver = function(name, dep) {\n                return comp.driver(name, dep);\n            };\n            init.isChild = function() {\n                return comp.isChild();\n            };\n            init.canRenderTo = function(win) {\n                return comp.canRenderTo(win);\n            };\n            init.instances = comp.instances;\n            var child = comp.registerChild();\n            child && (window.xprops = init.xprops = child.getProps());\n            return init;\n        };\n        function destroyComponents(err) {\n            var destroyPromise = cleanInstances.all(err);\n            cleanInstances = cleanup();\n            return destroyPromise;\n        }\n        var destroyAll = destroyComponents;\n        function component_destroy(err) {\n            destroyAll();\n            delete window.__zoid_9_0_78__;\n            !function() {\n                !function() {\n                    var responseListeners = globalStore(\"responseListeners\");\n                    for (var _i2 = 0, _responseListeners$ke2 = responseListeners.keys(); _i2 < _responseListeners$ke2.length; _i2++) {\n                        var hash = _responseListeners$ke2[_i2];\n                        var listener = responseListeners.get(hash);\n                        listener && (listener.cancelled = !0);\n                        responseListeners.del(hash);\n                    }\n                }();\n                (listener = globalStore().get(\"postMessageListener\")) && listener.cancel();\n                var listener;\n                delete window.__post_robot_10_0_44__;\n            }();\n            return cleanZoid.all(err);\n        }\n    } ]);\n}));","!function(root, factory) {\n    \"object\" == typeof exports && \"object\" == typeof module ? module.exports = factory() : \"function\" == typeof define && define.amd ? define(\"zoid\", [], factory) : \"object\" == typeof exports ? exports.zoid = factory() : root.zoid = factory();\n}(\"undefined\" != typeof self ? self : this, (function() {\n    return function(modules) {\n        var installedModules = {};\n        function __webpack_require__(moduleId) {\n            if (installedModules[moduleId]) return installedModules[moduleId].exports;\n            var module = installedModules[moduleId] = {\n                i: moduleId,\n                l: !1,\n                exports: {}\n            };\n            modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n            module.l = !0;\n            return module.exports;\n        }\n        __webpack_require__.m = modules;\n        __webpack_require__.c = installedModules;\n        __webpack_require__.d = function(exports, name, getter) {\n            __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {\n                enumerable: !0,\n                get: getter\n            });\n        };\n        __webpack_require__.r = function(exports) {\n            \"undefined\" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(exports, Symbol.toStringTag, {\n                value: \"Module\"\n            });\n            Object.defineProperty(exports, \"__esModule\", {\n                value: !0\n            });\n        };\n        __webpack_require__.t = function(value, mode) {\n            1 & mode && (value = __webpack_require__(value));\n            if (8 & mode) return value;\n            if (4 & mode && \"object\" == typeof value && value && value.__esModule) return value;\n            var ns = Object.create(null);\n            __webpack_require__.r(ns);\n            Object.defineProperty(ns, \"default\", {\n                enumerable: !0,\n                value: value\n            });\n            if (2 & mode && \"string\" != typeof value) for (var key in value) __webpack_require__.d(ns, key, function(key) {\n                return value[key];\n            }.bind(null, key));\n            return ns;\n        };\n        __webpack_require__.n = function(module) {\n            var getter = module && module.__esModule ? function() {\n                return module.default;\n            } : function() {\n                return module;\n            };\n            __webpack_require__.d(getter, \"a\", getter);\n            return getter;\n        };\n        __webpack_require__.o = function(object, property) {\n            return {}.hasOwnProperty.call(object, property);\n        };\n        __webpack_require__.p = \"\";\n        return __webpack_require__(__webpack_require__.s = 0);\n    }([ function(module, __webpack_exports__, __webpack_require__) {\n        \"use strict\";\n        __webpack_require__.r(__webpack_exports__);\n        __webpack_require__.d(__webpack_exports__, \"PopupOpenError\", (function() {\n            return dom_PopupOpenError;\n        }));\n        __webpack_require__.d(__webpack_exports__, \"create\", (function() {\n            return component_create;\n        }));\n        __webpack_require__.d(__webpack_exports__, \"destroy\", (function() {\n            return component_destroy;\n        }));\n        __webpack_require__.d(__webpack_exports__, \"destroyComponents\", (function() {\n            return destroyComponents;\n        }));\n        __webpack_require__.d(__webpack_exports__, \"destroyAll\", (function() {\n            return destroyAll;\n        }));\n        __webpack_require__.d(__webpack_exports__, \"PROP_TYPE\", (function() {\n            return PROP_TYPE;\n        }));\n        __webpack_require__.d(__webpack_exports__, \"PROP_SERIALIZATION\", (function() {\n            return PROP_SERIALIZATION;\n        }));\n        __webpack_require__.d(__webpack_exports__, \"CONTEXT\", (function() {\n            return CONTEXT;\n        }));\n        __webpack_require__.d(__webpack_exports__, \"EVENT\", (function() {\n            return EVENT;\n        }));\n        function _setPrototypeOf(o, p) {\n            return (_setPrototypeOf = Object.setPrototypeOf || function(o, p) {\n                o.__proto__ = p;\n                return o;\n            })(o, p);\n        }\n        function _inheritsLoose(subClass, superClass) {\n            subClass.prototype = Object.create(superClass.prototype);\n            subClass.prototype.constructor = subClass;\n            _setPrototypeOf(subClass, superClass);\n        }\n        function _extends() {\n            return (_extends = Object.assign || function(target) {\n                for (var i = 1; i < arguments.length; i++) {\n                    var source = arguments[i];\n                    for (var key in source) ({}).hasOwnProperty.call(source, key) && (target[key] = source[key]);\n                }\n                return target;\n            }).apply(this, arguments);\n        }\n        function utils_isPromise(item) {\n            try {\n                if (!item) return !1;\n                if (\"undefined\" != typeof Promise && item instanceof Promise) return !0;\n                if (\"undefined\" != typeof window && \"function\" == typeof window.Window && item instanceof window.Window) return !1;\n                if (\"undefined\" != typeof window && \"function\" == typeof window.constructor && item instanceof window.constructor) return !1;\n                var _toString = {}.toString;\n                if (_toString) {\n                    var name = _toString.call(item);\n                    if (\"[object Window]\" === name || \"[object global]\" === name || \"[object DOMWindow]\" === name) return !1;\n                }\n                if (\"function\" == typeof item.then) return !0;\n            } catch (err) {\n                return !1;\n            }\n            return !1;\n        }\n        var dispatchedErrors = [];\n        var possiblyUnhandledPromiseHandlers = [];\n        var activeCount = 0;\n        var flushPromise;\n        function flushActive() {\n            if (!activeCount && flushPromise) {\n                var promise = flushPromise;\n                flushPromise = null;\n                promise.resolve();\n            }\n        }\n        function startActive() {\n            activeCount += 1;\n        }\n        function endActive() {\n            activeCount -= 1;\n            flushActive();\n        }\n        var promise_ZalgoPromise = function() {\n            function ZalgoPromise(handler) {\n                var _this = this;\n                this.resolved = void 0;\n                this.rejected = void 0;\n                this.errorHandled = void 0;\n                this.value = void 0;\n                this.error = void 0;\n                this.handlers = void 0;\n                this.dispatching = void 0;\n                this.stack = void 0;\n                this.resolved = !1;\n                this.rejected = !1;\n                this.errorHandled = !1;\n                this.handlers = [];\n                if (handler) {\n                    var _result;\n                    var _error;\n                    var resolved = !1;\n                    var rejected = !1;\n                    var isAsync = !1;\n                    startActive();\n                    try {\n                        handler((function(res) {\n                            if (isAsync) _this.resolve(res); else {\n                                resolved = !0;\n                                _result = res;\n                            }\n                        }), (function(err) {\n                            if (isAsync) _this.reject(err); else {\n                                rejected = !0;\n                                _error = err;\n                            }\n                        }));\n                    } catch (err) {\n                        endActive();\n                        this.reject(err);\n                        return;\n                    }\n                    endActive();\n                    isAsync = !0;\n                    resolved ? this.resolve(_result) : rejected && this.reject(_error);\n                }\n            }\n            var _proto = ZalgoPromise.prototype;\n            _proto.resolve = function(result) {\n                if (this.resolved || this.rejected) return this;\n                if (utils_isPromise(result)) throw new Error(\"Can not resolve promise with another promise\");\n                this.resolved = !0;\n                this.value = result;\n                this.dispatch();\n                return this;\n            };\n            _proto.reject = function(error) {\n                var _this2 = this;\n                if (this.resolved || this.rejected) return this;\n                if (utils_isPromise(error)) throw new Error(\"Can not reject promise with another promise\");\n                if (!error) {\n                    var _err = error && \"function\" == typeof error.toString ? error.toString() : {}.toString.call(error);\n                    error = new Error(\"Expected reject to be called with Error, got \" + _err);\n                }\n                this.rejected = !0;\n                this.error = error;\n                this.errorHandled || setTimeout((function() {\n                    _this2.errorHandled || function(err, promise) {\n                        if (-1 === dispatchedErrors.indexOf(err)) {\n                            dispatchedErrors.push(err);\n                            setTimeout((function() {\n                                throw err;\n                            }), 1);\n                            for (var j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) possiblyUnhandledPromiseHandlers[j](err, promise);\n                        }\n                    }(error, _this2);\n                }), 1);\n                this.dispatch();\n                return this;\n            };\n            _proto.asyncReject = function(error) {\n                this.errorHandled = !0;\n                this.reject(error);\n                return this;\n            };\n            _proto.dispatch = function() {\n                var resolved = this.resolved, rejected = this.rejected, handlers = this.handlers;\n                if (!this.dispatching && (resolved || rejected)) {\n                    this.dispatching = !0;\n                    startActive();\n                    var chain = function(firstPromise, secondPromise) {\n                        return firstPromise.then((function(res) {\n                            secondPromise.resolve(res);\n                        }), (function(err) {\n                            secondPromise.reject(err);\n                        }));\n                    };\n                    for (var i = 0; i < handlers.length; i++) {\n                        var _handlers$i = handlers[i], onSuccess = _handlers$i.onSuccess, onError = _handlers$i.onError, promise = _handlers$i.promise;\n                        var _result2 = void 0;\n                        if (resolved) try {\n                            _result2 = onSuccess ? onSuccess(this.value) : this.value;\n                        } catch (err) {\n                            promise.reject(err);\n                            continue;\n                        } else if (rejected) {\n                            if (!onError) {\n                                promise.reject(this.error);\n                                continue;\n                            }\n                            try {\n                                _result2 = onError(this.error);\n                            } catch (err) {\n                                promise.reject(err);\n                                continue;\n                            }\n                        }\n                        if (_result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected)) {\n                            var promiseResult = _result2;\n                            promiseResult.resolved ? promise.resolve(promiseResult.value) : promise.reject(promiseResult.error);\n                            promiseResult.errorHandled = !0;\n                        } else utils_isPromise(_result2) ? _result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected) ? _result2.resolved ? promise.resolve(_result2.value) : promise.reject(_result2.error) : chain(_result2, promise) : promise.resolve(_result2);\n                    }\n                    handlers.length = 0;\n                    this.dispatching = !1;\n                    endActive();\n                }\n            };\n            _proto.then = function(onSuccess, onError) {\n                if (onSuccess && \"function\" != typeof onSuccess && !onSuccess.call) throw new Error(\"Promise.then expected a function for success handler\");\n                if (onError && \"function\" != typeof onError && !onError.call) throw new Error(\"Promise.then expected a function for error handler\");\n                var promise = new ZalgoPromise;\n                this.handlers.push({\n                    promise: promise,\n                    onSuccess: onSuccess,\n                    onError: onError\n                });\n                this.errorHandled = !0;\n                this.dispatch();\n                return promise;\n            };\n            _proto.catch = function(onError) {\n                return this.then(void 0, onError);\n            };\n            _proto.finally = function(onFinally) {\n                if (onFinally && \"function\" != typeof onFinally && !onFinally.call) throw new Error(\"Promise.finally expected a function\");\n                return this.then((function(result) {\n                    return ZalgoPromise.try(onFinally).then((function() {\n                        return result;\n                    }));\n                }), (function(err) {\n                    return ZalgoPromise.try(onFinally).then((function() {\n                        throw err;\n                    }));\n                }));\n            };\n            _proto.timeout = function(time, err) {\n                var _this3 = this;\n                if (this.resolved || this.rejected) return this;\n                var timeout = setTimeout((function() {\n                    _this3.resolved || _this3.rejected || _this3.reject(err || new Error(\"Promise timed out after \" + time + \"ms\"));\n                }), time);\n                return this.then((function(result) {\n                    clearTimeout(timeout);\n                    return result;\n                }));\n            };\n            _proto.toPromise = function() {\n                if (\"undefined\" == typeof Promise) throw new TypeError(\"Could not find Promise\");\n                return Promise.resolve(this);\n            };\n            ZalgoPromise.resolve = function(value) {\n                return value instanceof ZalgoPromise ? value : utils_isPromise(value) ? new ZalgoPromise((function(resolve, reject) {\n                    return value.then(resolve, reject);\n                })) : (new ZalgoPromise).resolve(value);\n            };\n            ZalgoPromise.reject = function(error) {\n                return (new ZalgoPromise).reject(error);\n            };\n            ZalgoPromise.asyncReject = function(error) {\n                return (new ZalgoPromise).asyncReject(error);\n            };\n            ZalgoPromise.all = function(promises) {\n                var promise = new ZalgoPromise;\n                var count = promises.length;\n                var results = [].slice();\n                if (!count) {\n                    promise.resolve(results);\n                    return promise;\n                }\n                var chain = function(i, firstPromise, secondPromise) {\n                    return firstPromise.then((function(res) {\n                        results[i] = res;\n                        0 == (count -= 1) && promise.resolve(results);\n                    }), (function(err) {\n                        secondPromise.reject(err);\n                    }));\n                };\n                for (var i = 0; i < promises.length; i++) {\n                    var prom = promises[i];\n                    if (prom instanceof ZalgoPromise) {\n                        if (prom.resolved) {\n                            results[i] = prom.value;\n                            count -= 1;\n                            continue;\n                        }\n                    } else if (!utils_isPromise(prom)) {\n                        results[i] = prom;\n                        count -= 1;\n                        continue;\n                    }\n                    chain(i, ZalgoPromise.resolve(prom), promise);\n                }\n                0 === count && promise.resolve(results);\n                return promise;\n            };\n            ZalgoPromise.hash = function(promises) {\n                var result = {};\n                var awaitPromises = [];\n                var _loop = function(key) {\n                    if (promises.hasOwnProperty(key)) {\n                        var value = promises[key];\n                        utils_isPromise(value) ? awaitPromises.push(value.then((function(res) {\n                            result[key] = res;\n                        }))) : result[key] = value;\n                    }\n                };\n                for (var key in promises) _loop(key);\n                return ZalgoPromise.all(awaitPromises).then((function() {\n                    return result;\n                }));\n            };\n            ZalgoPromise.map = function(items, method) {\n                return ZalgoPromise.all(items.map(method));\n            };\n            ZalgoPromise.onPossiblyUnhandledException = function(handler) {\n                return function(handler) {\n                    possiblyUnhandledPromiseHandlers.push(handler);\n                    return {\n                        cancel: function() {\n                            possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);\n                        }\n                    };\n                }(handler);\n            };\n            ZalgoPromise.try = function(method, context, args) {\n                if (method && \"function\" != typeof method && !method.call) throw new Error(\"Promise.try expected a function\");\n                var result;\n                startActive();\n                try {\n                    result = method.apply(context, args || []);\n                } catch (err) {\n                    endActive();\n                    return ZalgoPromise.reject(err);\n                }\n                endActive();\n                return ZalgoPromise.resolve(result);\n            };\n            ZalgoPromise.delay = function(_delay) {\n                return new ZalgoPromise((function(resolve) {\n                    setTimeout(resolve, _delay);\n                }));\n            };\n            ZalgoPromise.isPromise = function(value) {\n                return !!(value && value instanceof ZalgoPromise) || utils_isPromise(value);\n            };\n            ZalgoPromise.flush = function() {\n                return function(Zalgo) {\n                    var promise = flushPromise = flushPromise || new Zalgo;\n                    flushActive();\n                    return promise;\n                }(ZalgoPromise);\n            };\n            return ZalgoPromise;\n        }();\n        function isRegex(item) {\n            return \"[object RegExp]\" === {}.toString.call(item);\n        }\n        var WINDOW_TYPE = {\n            IFRAME: \"iframe\",\n            POPUP: \"popup\"\n        };\n        var IE_WIN_ACCESS_ERROR = \"Call was rejected by callee.\\r\\n\";\n        function isAboutProtocol(win) {\n            void 0 === win && (win = window);\n            return \"about:\" === win.location.protocol;\n        }\n        function utils_getParent(win) {\n            void 0 === win && (win = window);\n            if (win) try {\n                if (win.parent && win.parent !== win) return win.parent;\n            } catch (err) {}\n        }\n        function getOpener(win) {\n            void 0 === win && (win = window);\n            if (win && !utils_getParent(win)) try {\n                return win.opener;\n            } catch (err) {}\n        }\n        function canReadFromWindow(win) {\n            try {\n                return !0;\n            } catch (err) {}\n            return !1;\n        }\n        function getActualDomain(win) {\n            void 0 === win && (win = window);\n            var location = win.location;\n            if (!location) throw new Error(\"Can not read window location\");\n            var protocol = location.protocol;\n            if (!protocol) throw new Error(\"Can not read window protocol\");\n            if (\"file:\" === protocol) return \"file://\";\n            if (\"about:\" === protocol) {\n                var parent = utils_getParent(win);\n                return parent && canReadFromWindow() ? getActualDomain(parent) : \"about://\";\n            }\n            var host = location.host;\n            if (!host) throw new Error(\"Can not read window host\");\n            return protocol + \"//\" + host;\n        }\n        function getDomain(win) {\n            void 0 === win && (win = window);\n            var domain = getActualDomain(win);\n            return domain && win.mockDomain && 0 === win.mockDomain.indexOf(\"mock:\") ? win.mockDomain : domain;\n        }\n        function isSameDomain(win) {\n            if (!function(win) {\n                try {\n                    if (win === window) return !0;\n                } catch (err) {}\n                try {\n                    var desc = Object.getOwnPropertyDescriptor(win, \"location\");\n                    if (desc && !1 === desc.enumerable) return !1;\n                } catch (err) {}\n                try {\n                    if (isAboutProtocol(win) && canReadFromWindow()) return !0;\n                } catch (err) {}\n                try {\n                    if (getActualDomain(win) === getActualDomain(window)) return !0;\n                } catch (err) {}\n                return !1;\n            }(win)) return !1;\n            try {\n                if (win === window) return !0;\n                if (isAboutProtocol(win) && canReadFromWindow()) return !0;\n                if (getDomain(window) === getDomain(win)) return !0;\n            } catch (err) {}\n            return !1;\n        }\n        function assertSameDomain(win) {\n            if (!isSameDomain(win)) throw new Error(\"Expected window to be same domain\");\n            return win;\n        }\n        function isAncestorParent(parent, child) {\n            if (!parent || !child) return !1;\n            var childParent = utils_getParent(child);\n            return childParent ? childParent === parent : -1 !== function(win) {\n                var result = [];\n                try {\n                    for (;win.parent !== win; ) {\n                        result.push(win.parent);\n                        win = win.parent;\n                    }\n                } catch (err) {}\n                return result;\n            }(child).indexOf(parent);\n        }\n        function getFrames(win) {\n            var result = [];\n            var frames;\n            try {\n                frames = win.frames;\n            } catch (err) {\n                frames = win;\n            }\n            var len;\n            try {\n                len = frames.length;\n            } catch (err) {}\n            if (0 === len) return result;\n            if (len) {\n                for (var i = 0; i < len; i++) {\n                    var frame = void 0;\n                    try {\n                        frame = frames[i];\n                    } catch (err) {\n                        continue;\n                    }\n                    result.push(frame);\n                }\n                return result;\n            }\n            for (var _i = 0; _i < 100; _i++) {\n                var _frame = void 0;\n                try {\n                    _frame = frames[_i];\n                } catch (err) {\n                    return result;\n                }\n                if (!_frame) return result;\n                result.push(_frame);\n            }\n            return result;\n        }\n        function getAllChildFrames(win) {\n            var result = [];\n            for (var _i3 = 0, _getFrames2 = getFrames(win); _i3 < _getFrames2.length; _i3++) {\n                var frame = _getFrames2[_i3];\n                result.push(frame);\n                for (var _i5 = 0, _getAllChildFrames2 = getAllChildFrames(frame); _i5 < _getAllChildFrames2.length; _i5++) result.push(_getAllChildFrames2[_i5]);\n            }\n            return result;\n        }\n        function getTop(win) {\n            void 0 === win && (win = window);\n            try {\n                if (win.top) return win.top;\n            } catch (err) {}\n            if (utils_getParent(win) === win) return win;\n            try {\n                if (isAncestorParent(window, win) && window.top) return window.top;\n            } catch (err) {}\n            try {\n                if (isAncestorParent(win, window) && window.top) return window.top;\n            } catch (err) {}\n            for (var _i7 = 0, _getAllChildFrames4 = getAllChildFrames(win); _i7 < _getAllChildFrames4.length; _i7++) {\n                var frame = _getAllChildFrames4[_i7];\n                try {\n                    if (frame.top) return frame.top;\n                } catch (err) {}\n                if (utils_getParent(frame) === frame) return frame;\n            }\n        }\n        function getAllFramesInWindow(win) {\n            var top = getTop(win);\n            if (!top) throw new Error(\"Can not determine top window\");\n            var result = [].concat(getAllChildFrames(top), [ top ]);\n            -1 === result.indexOf(win) && (result = [].concat(result, [ win ], getAllChildFrames(win)));\n            return result;\n        }\n        var iframeWindows = [];\n        var iframeFrames = [];\n        function isWindowClosed(win, allowMock) {\n            void 0 === allowMock && (allowMock = !0);\n            try {\n                if (win === window) return !1;\n            } catch (err) {\n                return !0;\n            }\n            try {\n                if (!win) return !0;\n            } catch (err) {\n                return !0;\n            }\n            try {\n                if (win.closed) return !0;\n            } catch (err) {\n                return !err || err.message !== IE_WIN_ACCESS_ERROR;\n            }\n            if (allowMock && isSameDomain(win)) try {\n                if (win.mockclosed) return !0;\n            } catch (err) {}\n            try {\n                if (!win.parent || !win.top) return !0;\n            } catch (err) {}\n            var iframeIndex = function(collection, item) {\n                for (var i = 0; i < collection.length; i++) try {\n                    if (collection[i] === item) return i;\n                } catch (err) {}\n                return -1;\n            }(iframeWindows, win);\n            if (-1 !== iframeIndex) {\n                var frame = iframeFrames[iframeIndex];\n                if (frame && function(frame) {\n                    if (!frame.contentWindow) return !0;\n                    if (!frame.parentNode) return !0;\n                    var doc = frame.ownerDocument;\n                    if (doc && doc.documentElement && !doc.documentElement.contains(frame)) {\n                        var parent = frame;\n                        for (;parent.parentNode && parent.parentNode !== parent; ) parent = parent.parentNode;\n                        if (!parent.host || !doc.documentElement.contains(parent.host)) return !0;\n                    }\n                    return !1;\n                }(frame)) return !0;\n            }\n            return !1;\n        }\n        function utils_getUserAgent(win) {\n            return (win = win || window).navigator.mockUserAgent || win.navigator.userAgent;\n        }\n        function getFrameByName(win, name) {\n            var winFrames = getFrames(win);\n            for (var _i9 = 0; _i9 < winFrames.length; _i9++) {\n                var childFrame = winFrames[_i9];\n                try {\n                    if (isSameDomain(childFrame) && childFrame.name === name && -1 !== winFrames.indexOf(childFrame)) return childFrame;\n                } catch (err) {}\n            }\n            try {\n                if (-1 !== winFrames.indexOf(win.frames[name])) return win.frames[name];\n            } catch (err) {}\n            try {\n                if (-1 !== winFrames.indexOf(win[name])) return win[name];\n            } catch (err) {}\n        }\n        function isOpener(parent, child) {\n            return parent === getOpener(child);\n        }\n        function getAncestor(win) {\n            void 0 === win && (win = window);\n            return getOpener(win = win || window) || utils_getParent(win) || void 0;\n        }\n        function anyMatch(collection1, collection2) {\n            for (var _i17 = 0; _i17 < collection1.length; _i17++) {\n                var item1 = collection1[_i17];\n                for (var _i19 = 0; _i19 < collection2.length; _i19++) if (item1 === collection2[_i19]) return !0;\n            }\n            return !1;\n        }\n        function getDistanceFromTop(win) {\n            void 0 === win && (win = window);\n            var distance = 0;\n            var parent = win;\n            for (;parent; ) (parent = utils_getParent(parent)) && (distance += 1);\n            return distance;\n        }\n        function isSameTopWindow(win1, win2) {\n            var top1 = getTop(win1) || win1;\n            var top2 = getTop(win2) || win2;\n            try {\n                if (top1 && top2) return top1 === top2;\n            } catch (err) {}\n            var allFrames1 = getAllFramesInWindow(win1);\n            var allFrames2 = getAllFramesInWindow(win2);\n            if (anyMatch(allFrames1, allFrames2)) return !0;\n            var opener1 = getOpener(top1);\n            var opener2 = getOpener(top2);\n            return opener1 && anyMatch(getAllFramesInWindow(opener1), allFrames2) || opener2 && anyMatch(getAllFramesInWindow(opener2), allFrames1), \n            !1;\n        }\n        function matchDomain(pattern, origin) {\n            if (\"string\" == typeof pattern) {\n                if (\"string\" == typeof origin) return \"*\" === pattern || origin === pattern;\n                if (isRegex(origin)) return !1;\n                if (Array.isArray(origin)) return !1;\n            }\n            return isRegex(pattern) ? isRegex(origin) ? pattern.toString() === origin.toString() : !Array.isArray(origin) && Boolean(origin.match(pattern)) : !!Array.isArray(pattern) && (Array.isArray(origin) ? JSON.stringify(pattern) === JSON.stringify(origin) : !isRegex(origin) && pattern.some((function(subpattern) {\n                return matchDomain(subpattern, origin);\n            })));\n        }\n        function getDomainFromUrl(url) {\n            return url.match(/^(https?|mock|file):\\/\\//) ? url.split(\"/\").slice(0, 3).join(\"/\") : getDomain();\n        }\n        function onCloseWindow(win, callback, delay, maxtime) {\n            void 0 === delay && (delay = 1e3);\n            void 0 === maxtime && (maxtime = 1 / 0);\n            var timeout;\n            !function check() {\n                if (isWindowClosed(win)) {\n                    timeout && clearTimeout(timeout);\n                    return callback();\n                }\n                if (maxtime <= 0) clearTimeout(timeout); else {\n                    maxtime -= delay;\n                    timeout = setTimeout(check, delay);\n                }\n            }();\n            return {\n                cancel: function() {\n                    timeout && clearTimeout(timeout);\n                }\n            };\n        }\n        function isWindow(obj) {\n            try {\n                if (obj === window) return !0;\n            } catch (err) {\n                if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n            }\n            try {\n                if (\"[object Window]\" === {}.toString.call(obj)) return !0;\n            } catch (err) {\n                if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n            }\n            try {\n                if (window.Window && obj instanceof window.Window) return !0;\n            } catch (err) {\n                if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n            }\n            try {\n                if (obj && obj.self === obj) return !0;\n            } catch (err) {\n                if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n            }\n            try {\n                if (obj && obj.parent === obj) return !0;\n            } catch (err) {\n                if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n            }\n            try {\n                if (obj && obj.top === obj) return !0;\n            } catch (err) {\n                if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;\n            }\n            try {\n                if (obj && \"__unlikely_value__\" === obj.__cross_domain_utils_window_check__) return !1;\n            } catch (err) {\n                return !0;\n            }\n            try {\n                if (\"postMessage\" in obj && \"self\" in obj && \"location\" in obj) return !0;\n            } catch (err) {}\n            return !1;\n        }\n        function normalizeMockUrl(url) {\n            if (!(domain = getDomainFromUrl(url), 0 === domain.indexOf(\"mock:\"))) return url;\n            var domain;\n            throw new Error(\"Mock urls not supported out of test mode\");\n        }\n        function getFrameForWindow(win) {\n            if (isSameDomain(win)) return assertSameDomain(win).frameElement;\n            for (var _i21 = 0, _document$querySelect2 = document.querySelectorAll(\"iframe\"); _i21 < _document$querySelect2.length; _i21++) {\n                var frame = _document$querySelect2[_i21];\n                if (frame && frame.contentWindow && frame.contentWindow === win) return frame;\n            }\n        }\n        function closeWindow(win) {\n            if (function(win) {\n                void 0 === win && (win = window);\n                return Boolean(utils_getParent(win));\n            }(win)) {\n                var frame = getFrameForWindow(win);\n                if (frame && frame.parentElement) {\n                    frame.parentElement.removeChild(frame);\n                    return;\n                }\n            }\n            try {\n                win.close();\n            } catch (err) {}\n        }\n        function util_safeIndexOf(collection, item) {\n            for (var i = 0; i < collection.length; i++) try {\n                if (collection[i] === item) return i;\n            } catch (err) {}\n            return -1;\n        }\n        var weakmap_CrossDomainSafeWeakMap = function() {\n            function CrossDomainSafeWeakMap() {\n                this.name = void 0;\n                this.weakmap = void 0;\n                this.keys = void 0;\n                this.values = void 0;\n                this.name = \"__weakmap_\" + (1e9 * Math.random() >>> 0) + \"__\";\n                if (function() {\n                    if (\"undefined\" == typeof WeakMap) return !1;\n                    if (void 0 === Object.freeze) return !1;\n                    try {\n                        var testWeakMap = new WeakMap;\n                        var testKey = {};\n                        Object.freeze(testKey);\n                        testWeakMap.set(testKey, \"__testvalue__\");\n                        return \"__testvalue__\" === testWeakMap.get(testKey);\n                    } catch (err) {\n                        return !1;\n                    }\n                }()) try {\n                    this.weakmap = new WeakMap;\n                } catch (err) {}\n                this.keys = [];\n                this.values = [];\n            }\n            var _proto = CrossDomainSafeWeakMap.prototype;\n            _proto._cleanupClosedWindows = function() {\n                var weakmap = this.weakmap;\n                var keys = this.keys;\n                for (var i = 0; i < keys.length; i++) {\n                    var value = keys[i];\n                    if (isWindow(value) && isWindowClosed(value)) {\n                        if (weakmap) try {\n                            weakmap.delete(value);\n                        } catch (err) {}\n                        keys.splice(i, 1);\n                        this.values.splice(i, 1);\n                        i -= 1;\n                    }\n                }\n            };\n            _proto.isSafeToReadWrite = function(key) {\n                return !isWindow(key);\n            };\n            _proto.set = function(key, value) {\n                if (!key) throw new Error(\"WeakMap expected key\");\n                var weakmap = this.weakmap;\n                if (weakmap) try {\n                    weakmap.set(key, value);\n                } catch (err) {\n                    delete this.weakmap;\n                }\n                if (this.isSafeToReadWrite(key)) try {\n                    var name = this.name;\n                    var entry = key[name];\n                    entry && entry[0] === key ? entry[1] = value : Object.defineProperty(key, name, {\n                        value: [ key, value ],\n                        writable: !0\n                    });\n                    return;\n                } catch (err) {}\n                this._cleanupClosedWindows();\n                var keys = this.keys;\n                var values = this.values;\n                var index = util_safeIndexOf(keys, key);\n                if (-1 === index) {\n                    keys.push(key);\n                    values.push(value);\n                } else values[index] = value;\n            };\n            _proto.get = function(key) {\n                if (!key) throw new Error(\"WeakMap expected key\");\n                var weakmap = this.weakmap;\n                if (weakmap) try {\n                    if (weakmap.has(key)) return weakmap.get(key);\n                } catch (err) {\n                    delete this.weakmap;\n                }\n                if (this.isSafeToReadWrite(key)) try {\n                    var entry = key[this.name];\n                    return entry && entry[0] === key ? entry[1] : void 0;\n                } catch (err) {}\n                this._cleanupClosedWindows();\n                var index = util_safeIndexOf(this.keys, key);\n                if (-1 !== index) return this.values[index];\n            };\n            _proto.delete = function(key) {\n                if (!key) throw new Error(\"WeakMap expected key\");\n                var weakmap = this.weakmap;\n                if (weakmap) try {\n                    weakmap.delete(key);\n                } catch (err) {\n                    delete this.weakmap;\n                }\n                if (this.isSafeToReadWrite(key)) try {\n                    var entry = key[this.name];\n                    entry && entry[0] === key && (entry[0] = entry[1] = void 0);\n                } catch (err) {}\n                this._cleanupClosedWindows();\n                var keys = this.keys;\n                var index = util_safeIndexOf(keys, key);\n                if (-1 !== index) {\n                    keys.splice(index, 1);\n                    this.values.splice(index, 1);\n                }\n            };\n            _proto.has = function(key) {\n                if (!key) throw new Error(\"WeakMap expected key\");\n                var weakmap = this.weakmap;\n                if (weakmap) try {\n                    if (weakmap.has(key)) return !0;\n                } catch (err) {\n                    delete this.weakmap;\n                }\n                if (this.isSafeToReadWrite(key)) try {\n                    var entry = key[this.name];\n                    return !(!entry || entry[0] !== key);\n                } catch (err) {}\n                this._cleanupClosedWindows();\n                return -1 !== util_safeIndexOf(this.keys, key);\n            };\n            _proto.getOrSet = function(key, getter) {\n                if (this.has(key)) return this.get(key);\n                var value = getter();\n                this.set(key, value);\n                return value;\n            };\n            return CrossDomainSafeWeakMap;\n        }();\n        function _getPrototypeOf(o) {\n            return (_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {\n                return o.__proto__ || Object.getPrototypeOf(o);\n            })(o);\n        }\n        function _isNativeReflectConstruct() {\n            if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1;\n            if (Reflect.construct.sham) return !1;\n            if (\"function\" == typeof Proxy) return !0;\n            try {\n                Date.prototype.toString.call(Reflect.construct(Date, [], (function() {})));\n                return !0;\n            } catch (e) {\n                return !1;\n            }\n        }\n        function construct_construct(Parent, args, Class) {\n            return (construct_construct = _isNativeReflectConstruct() ? Reflect.construct : function(Parent, args, Class) {\n                var a = [ null ];\n                a.push.apply(a, args);\n                var instance = new (Function.bind.apply(Parent, a));\n                Class && _setPrototypeOf(instance, Class.prototype);\n                return instance;\n            }).apply(null, arguments);\n        }\n        function wrapNativeSuper_wrapNativeSuper(Class) {\n            var _cache = \"function\" == typeof Map ? new Map : void 0;\n            return (wrapNativeSuper_wrapNativeSuper = function(Class) {\n                if (null === Class || !(fn = Class, -1 !== Function.toString.call(fn).indexOf(\"[native code]\"))) return Class;\n                var fn;\n                if (\"function\" != typeof Class) throw new TypeError(\"Super expression must either be null or a function\");\n                if (void 0 !== _cache) {\n                    if (_cache.has(Class)) return _cache.get(Class);\n                    _cache.set(Class, Wrapper);\n                }\n                function Wrapper() {\n                    return construct_construct(Class, arguments, _getPrototypeOf(this).constructor);\n                }\n                Wrapper.prototype = Object.create(Class.prototype, {\n                    constructor: {\n                        value: Wrapper,\n                        enumerable: !1,\n                        writable: !0,\n                        configurable: !0\n                    }\n                });\n                return _setPrototypeOf(Wrapper, Class);\n            })(Class);\n        }\n        function getFunctionName(fn) {\n            return fn.name || fn.__name__ || fn.displayName || \"anonymous\";\n        }\n        function setFunctionName(fn, name) {\n            try {\n                delete fn.name;\n                fn.name = name;\n            } catch (err) {}\n            fn.__name__ = fn.displayName = name;\n            return fn;\n        }\n        function base64encode(str) {\n            if (\"function\" == typeof btoa) return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (function(m, p1) {\n                return String.fromCharCode(parseInt(p1, 16));\n            }))).replace(/[=]/g, \"\");\n            if (\"undefined\" != typeof Buffer) return Buffer.from(str, \"utf8\").toString(\"base64\").replace(/[=]/g, \"\");\n            throw new Error(\"Can not find window.btoa or Buffer\");\n        }\n        function uniqueID() {\n            var chars = \"0123456789abcdef\";\n            return \"uid_\" + \"xxxxxxxxxx\".replace(/./g, (function() {\n                return chars.charAt(Math.floor(Math.random() * chars.length));\n            })) + \"_\" + base64encode((new Date).toISOString().slice(11, 19).replace(\"T\", \".\")).replace(/[^a-zA-Z0-9]/g, \"\").toLowerCase();\n        }\n        var objectIDs;\n        function serializeArgs(args) {\n            try {\n                return JSON.stringify([].slice.call(args), (function(subkey, val) {\n                    return \"function\" == typeof val ? \"memoize[\" + function(obj) {\n                        objectIDs = objectIDs || new weakmap_CrossDomainSafeWeakMap;\n                        if (null == obj || \"object\" != typeof obj && \"function\" != typeof obj) throw new Error(\"Invalid object\");\n                        var uid = objectIDs.get(obj);\n                        if (!uid) {\n                            uid = typeof obj + \":\" + uniqueID();\n                            objectIDs.set(obj, uid);\n                        }\n                        return uid;\n                    }(val) + \"]\" : val;\n                }));\n            } catch (err) {\n                throw new Error(\"Arguments not serializable -- can not be used to memoize\");\n            }\n        }\n        function getEmptyObject() {\n            return {};\n        }\n        var memoizeGlobalIndex = 0;\n        var memoizeGlobalIndexValidFrom = 0;\n        function memoize(method, options) {\n            void 0 === options && (options = {});\n            var _options$thisNamespac = options.thisNamespace, thisNamespace = void 0 !== _options$thisNamespac && _options$thisNamespac, cacheTime = options.time;\n            var simpleCache;\n            var thisCache;\n            var memoizeIndex = memoizeGlobalIndex;\n            memoizeGlobalIndex += 1;\n            var memoizedFunction = function() {\n                for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];\n                if (memoizeIndex < memoizeGlobalIndexValidFrom) {\n                    simpleCache = null;\n                    thisCache = null;\n                    memoizeIndex = memoizeGlobalIndex;\n                    memoizeGlobalIndex += 1;\n                }\n                var cache;\n                cache = thisNamespace ? (thisCache = thisCache || new weakmap_CrossDomainSafeWeakMap).getOrSet(this, getEmptyObject) : simpleCache = simpleCache || {};\n                var cacheKey = serializeArgs(args);\n                var cacheResult = cache[cacheKey];\n                if (cacheResult && cacheTime && Date.now() - cacheResult.time < cacheTime) {\n                    delete cache[cacheKey];\n                    cacheResult = null;\n                }\n                if (cacheResult) return cacheResult.value;\n                var time = Date.now();\n                var value = method.apply(this, arguments);\n                cache[cacheKey] = {\n                    time: time,\n                    value: value\n                };\n                return value;\n            };\n            memoizedFunction.reset = function() {\n                simpleCache = null;\n                thisCache = null;\n            };\n            return setFunctionName(memoizedFunction, (options.name || getFunctionName(method)) + \"::memoized\");\n        }\n        memoize.clear = function() {\n            memoizeGlobalIndexValidFrom = memoizeGlobalIndex;\n        };\n        function memoizePromise(method) {\n            var cache = {};\n            function memoizedPromiseFunction() {\n                var _arguments = arguments, _this = this;\n                for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) args[_key2] = arguments[_key2];\n                var key = serializeArgs(args);\n                if (cache.hasOwnProperty(key)) return cache[key];\n                cache[key] = promise_ZalgoPromise.try((function() {\n                    return method.apply(_this, _arguments);\n                })).finally((function() {\n                    delete cache[key];\n                }));\n                return cache[key];\n            }\n            memoizedPromiseFunction.reset = function() {\n                cache = {};\n            };\n            return setFunctionName(memoizedPromiseFunction, getFunctionName(method) + \"::promiseMemoized\");\n        }\n        function inlineMemoize(method, logic, args) {\n            void 0 === args && (args = []);\n            var cache = method.__inline_memoize_cache__ = method.__inline_memoize_cache__ || {};\n            var key = serializeArgs(args);\n            return cache.hasOwnProperty(key) ? cache[key] : cache[key] = logic.apply(void 0, args);\n        }\n        function src_util_noop() {}\n        function once(method) {\n            var called = !1;\n            return setFunctionName((function() {\n                if (!called) {\n                    called = !0;\n                    return method.apply(this, arguments);\n                }\n            }), getFunctionName(method) + \"::once\");\n        }\n        function stringifyError(err, level) {\n            void 0 === level && (level = 1);\n            if (level >= 3) return \"stringifyError stack overflow\";\n            try {\n                if (!err) return \"<unknown error: \" + {}.toString.call(err) + \">\";\n                if (\"string\" == typeof err) return err;\n                if (err instanceof Error) {\n                    var stack = err && err.stack;\n                    var message = err && err.message;\n                    if (stack && message) return -1 !== stack.indexOf(message) ? stack : message + \"\\n\" + stack;\n                    if (stack) return stack;\n                    if (message) return message;\n                }\n                return err && err.toString && \"function\" == typeof err.toString ? err.toString() : {}.toString.call(err);\n            } catch (newErr) {\n                return \"Error while stringifying error: \" + stringifyError(newErr, level + 1);\n            }\n        }\n        function stringify(item) {\n            return \"string\" == typeof item ? item : item && item.toString && \"function\" == typeof item.toString ? item.toString() : {}.toString.call(item);\n        }\n        function extend(obj, source) {\n            if (!source) return obj;\n            if (Object.assign) return Object.assign(obj, source);\n            for (var key in source) source.hasOwnProperty(key) && (obj[key] = source[key]);\n            return obj;\n        }\n        memoize((function(obj) {\n            if (Object.values) return Object.values(obj);\n            var result = [];\n            for (var key in obj) obj.hasOwnProperty(key) && result.push(obj[key]);\n            return result;\n        }));\n        function identity(item) {\n            return item;\n        }\n        function safeInterval(method, time) {\n            var timeout;\n            !function loop() {\n                timeout = setTimeout((function() {\n                    method();\n                    loop();\n                }), time);\n            }();\n            return {\n                cancel: function() {\n                    clearTimeout(timeout);\n                }\n            };\n        }\n        function arrayFrom(item) {\n            return [].slice.call(item);\n        }\n        function isDefined(value) {\n            return null != value;\n        }\n        function util_isRegex(item) {\n            return \"[object RegExp]\" === {}.toString.call(item);\n        }\n        function util_getOrSet(obj, key, getter) {\n            if (obj.hasOwnProperty(key)) return obj[key];\n            var val = getter();\n            obj[key] = val;\n            return val;\n        }\n        function cleanup(obj) {\n            var tasks = [];\n            var cleaned = !1;\n            var cleanErr;\n            var cleaner = {\n                set: function(name, item) {\n                    if (!cleaned) {\n                        obj[name] = item;\n                        cleaner.register((function() {\n                            delete obj[name];\n                        }));\n                    }\n                    return item;\n                },\n                register: function(method) {\n                    var task = once((function() {\n                        return method(cleanErr);\n                    }));\n                    cleaned ? method(cleanErr) : tasks.push(task);\n                    return {\n                        cancel: function() {\n                            var index = tasks.indexOf(task);\n                            -1 !== index && tasks.splice(index, 1);\n                        }\n                    };\n                },\n                all: function(err) {\n                    cleanErr = err;\n                    var results = [];\n                    cleaned = !0;\n                    for (;tasks.length; ) {\n                        var task = tasks.shift();\n                        results.push(task());\n                    }\n                    return promise_ZalgoPromise.all(results).then(src_util_noop);\n                }\n            };\n            return cleaner;\n        }\n        function assertExists(name, thing) {\n            if (null == thing) throw new Error(\"Expected \" + name + \" to be present\");\n            return thing;\n        }\n        var util_ExtendableError = function(_Error) {\n            _inheritsLoose(ExtendableError, _Error);\n            function ExtendableError(message) {\n                var _this6;\n                (_this6 = _Error.call(this, message) || this).name = _this6.constructor.name;\n                \"function\" == typeof Error.captureStackTrace ? Error.captureStackTrace(function(self) {\n                    if (void 0 === self) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n                    return self;\n                }(_this6), _this6.constructor) : _this6.stack = new Error(message).stack;\n                return _this6;\n            }\n            return ExtendableError;\n        }(wrapNativeSuper_wrapNativeSuper(Error));\n        function getBody() {\n            var body = document.body;\n            if (!body) throw new Error(\"Body element not found\");\n            return body;\n        }\n        function isDocumentReady() {\n            return Boolean(document.body) && \"complete\" === document.readyState;\n        }\n        function isDocumentInteractive() {\n            return Boolean(document.body) && \"interactive\" === document.readyState;\n        }\n        function urlEncode(str) {\n            return encodeURIComponent(str);\n        }\n        memoize((function() {\n            return new promise_ZalgoPromise((function(resolve) {\n                if (isDocumentReady() || isDocumentInteractive()) return resolve();\n                var interval = setInterval((function() {\n                    if (isDocumentReady() || isDocumentInteractive()) {\n                        clearInterval(interval);\n                        return resolve();\n                    }\n                }), 10);\n            }));\n        }));\n        function parseQuery(queryString) {\n            return inlineMemoize(parseQuery, (function() {\n                var params = {};\n                if (!queryString) return params;\n                if (-1 === queryString.indexOf(\"=\")) return params;\n                for (var _i2 = 0, _queryString$split2 = queryString.split(\"&\"); _i2 < _queryString$split2.length; _i2++) {\n                    var pair = _queryString$split2[_i2];\n                    (pair = pair.split(\"=\"))[0] && pair[1] && (params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]));\n                }\n                return params;\n            }), [ queryString ]);\n        }\n        function extendQuery(originalQuery, props) {\n            void 0 === props && (props = {});\n            return props && Object.keys(props).length ? function(obj) {\n                void 0 === obj && (obj = {});\n                return Object.keys(obj).filter((function(key) {\n                    return \"string\" == typeof obj[key] || \"boolean\" == typeof obj[key];\n                })).map((function(key) {\n                    var val = obj[key];\n                    if (\"string\" != typeof val && \"boolean\" != typeof val) throw new TypeError(\"Invalid type for query\");\n                    return urlEncode(key) + \"=\" + urlEncode(val.toString());\n                })).join(\"&\");\n            }(_extends({}, parseQuery(originalQuery), props)) : originalQuery;\n        }\n        function appendChild(container, child) {\n            container.appendChild(child);\n        }\n        function isElement(element) {\n            return element instanceof window.Element || null !== element && \"object\" == typeof element && 1 === element.nodeType && \"object\" == typeof element.style && \"object\" == typeof element.ownerDocument;\n        }\n        function getElementSafe(id, doc) {\n            void 0 === doc && (doc = document);\n            return isElement(id) ? id : \"string\" == typeof id ? doc.querySelector(id) : void 0;\n        }\n        function elementReady(id) {\n            return new promise_ZalgoPromise((function(resolve, reject) {\n                var name = stringify(id);\n                var el = getElementSafe(id);\n                if (el) return resolve(el);\n                if (isDocumentReady()) return reject(new Error(\"Document is ready and element \" + name + \" does not exist\"));\n                var interval = setInterval((function() {\n                    if (el = getElementSafe(id)) {\n                        resolve(el);\n                        clearInterval(interval);\n                    } else if (isDocumentReady()) {\n                        clearInterval(interval);\n                        return reject(new Error(\"Document is ready and element \" + name + \" does not exist\"));\n                    }\n                }), 10);\n            }));\n        }\n        var dom_PopupOpenError = function(_ExtendableError) {\n            _inheritsLoose(PopupOpenError, _ExtendableError);\n            function PopupOpenError() {\n                return _ExtendableError.apply(this, arguments) || this;\n            }\n            return PopupOpenError;\n        }(util_ExtendableError);\n        var awaitFrameLoadPromises;\n        function awaitFrameLoad(frame) {\n            if ((awaitFrameLoadPromises = awaitFrameLoadPromises || new weakmap_CrossDomainSafeWeakMap).has(frame)) {\n                var _promise = awaitFrameLoadPromises.get(frame);\n                if (_promise) return _promise;\n            }\n            var promise = new promise_ZalgoPromise((function(resolve, reject) {\n                frame.addEventListener(\"load\", (function() {\n                    !function(frame) {\n                        !function() {\n                            for (var i = 0; i < iframeWindows.length; i++) {\n                                var closed = !1;\n                                try {\n                                    closed = iframeWindows[i].closed;\n                                } catch (err) {}\n                                if (closed) {\n                                    iframeFrames.splice(i, 1);\n                                    iframeWindows.splice(i, 1);\n                                }\n                            }\n                        }();\n                        if (frame && frame.contentWindow) try {\n                            iframeWindows.push(frame.contentWindow);\n                            iframeFrames.push(frame);\n                        } catch (err) {}\n                    }(frame);\n                    resolve(frame);\n                }));\n                frame.addEventListener(\"error\", (function(err) {\n                    frame.contentWindow ? resolve(frame) : reject(err);\n                }));\n            }));\n            awaitFrameLoadPromises.set(frame, promise);\n            return promise;\n        }\n        function awaitFrameWindow(frame) {\n            return awaitFrameLoad(frame).then((function(loadedFrame) {\n                if (!loadedFrame.contentWindow) throw new Error(\"Could not find window in iframe\");\n                return loadedFrame.contentWindow;\n            }));\n        }\n        function dom_iframe(options, container) {\n            void 0 === options && (options = {});\n            var style = options.style || {};\n            var frame = function(tag, options, container) {\n                void 0 === tag && (tag = \"div\");\n                void 0 === options && (options = {});\n                tag = tag.toLowerCase();\n                var element = document.createElement(tag);\n                options.style && extend(element.style, options.style);\n                options.class && (element.className = options.class.join(\" \"));\n                options.id && element.setAttribute(\"id\", options.id);\n                if (options.attributes) for (var _i10 = 0, _Object$keys2 = Object.keys(options.attributes); _i10 < _Object$keys2.length; _i10++) {\n                    var key = _Object$keys2[_i10];\n                    element.setAttribute(key, options.attributes[key]);\n                }\n                options.styleSheet && function(el, styleText, doc) {\n                    void 0 === doc && (doc = window.document);\n                    el.styleSheet ? el.styleSheet.cssText = styleText : el.appendChild(doc.createTextNode(styleText));\n                }(element, options.styleSheet);\n                if (options.html) {\n                    if (\"iframe\" === tag) throw new Error(\"Iframe html can not be written unless container provided and iframe in DOM\");\n                    element.innerHTML = options.html;\n                }\n                return element;\n            }(\"iframe\", {\n                attributes: _extends({\n                    allowTransparency: \"true\"\n                }, options.attributes || {}),\n                style: _extends({\n                    backgroundColor: \"transparent\",\n                    border: \"none\"\n                }, style),\n                html: options.html,\n                class: options.class\n            });\n            var isIE = window.navigator.userAgent.match(/MSIE|Edge/i);\n            frame.hasAttribute(\"id\") || frame.setAttribute(\"id\", uniqueID());\n            awaitFrameLoad(frame);\n            container && function(id, doc) {\n                void 0 === doc && (doc = document);\n                var element = getElementSafe(id, doc);\n                if (element) return element;\n                throw new Error(\"Can not find element: \" + stringify(id));\n            }(container).appendChild(frame);\n            (options.url || isIE) && frame.setAttribute(\"src\", options.url || \"about:blank\");\n            return frame;\n        }\n        function addEventListener(obj, event, handler) {\n            obj.addEventListener(event, handler);\n            return {\n                cancel: function() {\n                    obj.removeEventListener(event, handler);\n                }\n            };\n        }\n        function showElement(element) {\n            element.style.setProperty(\"display\", \"\");\n        }\n        function hideElement(element) {\n            element.style.setProperty(\"display\", \"none\", \"important\");\n        }\n        function destroyElement(element) {\n            element && element.parentNode && element.parentNode.removeChild(element);\n        }\n        function isElementClosed(el) {\n            return !(el && el.parentNode && el.ownerDocument && el.ownerDocument.documentElement && el.ownerDocument.documentElement.contains(el));\n        }\n        function onResize(el, handler, _temp) {\n            var _ref2 = void 0 === _temp ? {} : _temp, _ref2$width = _ref2.width, width = void 0 === _ref2$width || _ref2$width, _ref2$height = _ref2.height, height = void 0 === _ref2$height || _ref2$height, _ref2$interval = _ref2.interval, interval = void 0 === _ref2$interval ? 100 : _ref2$interval, _ref2$win = _ref2.win, win = void 0 === _ref2$win ? window : _ref2$win;\n            var currentWidth = el.offsetWidth;\n            var currentHeight = el.offsetHeight;\n            var canceled = !1;\n            handler({\n                width: currentWidth,\n                height: currentHeight\n            });\n            var check = function() {\n                if (!canceled && function(el) {\n                    return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);\n                }(el)) {\n                    var newWidth = el.offsetWidth;\n                    var newHeight = el.offsetHeight;\n                    (width && newWidth !== currentWidth || height && newHeight !== currentHeight) && handler({\n                        width: newWidth,\n                        height: newHeight\n                    });\n                    currentWidth = newWidth;\n                    currentHeight = newHeight;\n                }\n            };\n            var observer;\n            var timeout;\n            win.addEventListener(\"resize\", check);\n            if (void 0 !== win.ResizeObserver) {\n                (observer = new win.ResizeObserver(check)).observe(el);\n                timeout = safeInterval(check, 10 * interval);\n            } else if (void 0 !== win.MutationObserver) {\n                (observer = new win.MutationObserver(check)).observe(el, {\n                    attributes: !0,\n                    childList: !0,\n                    subtree: !0,\n                    characterData: !1\n                });\n                timeout = safeInterval(check, 10 * interval);\n            } else timeout = safeInterval(check, interval);\n            return {\n                cancel: function() {\n                    canceled = !0;\n                    observer.disconnect();\n                    window.removeEventListener(\"resize\", check);\n                    timeout.cancel();\n                }\n            };\n        }\n        function isShadowElement(element) {\n            for (;element.parentNode; ) element = element.parentNode;\n            return \"[object ShadowRoot]\" === element.toString();\n        }\n        var currentScript = \"undefined\" != typeof document ? document.currentScript : null;\n        var getCurrentScript = memoize((function() {\n            if (currentScript) return currentScript;\n            if (currentScript = function() {\n                try {\n                    var stack = function() {\n                        try {\n                            throw new Error(\"_\");\n                        } catch (err) {\n                            return err.stack || \"\";\n                        }\n                    }();\n                    var stackDetails = /.*at [^(]*\\((.*):(.+):(.+)\\)$/gi.exec(stack);\n                    var scriptLocation = stackDetails && stackDetails[1];\n                    if (!scriptLocation) return;\n                    for (var _i22 = 0, _Array$prototype$slic2 = [].slice.call(document.getElementsByTagName(\"script\")).reverse(); _i22 < _Array$prototype$slic2.length; _i22++) {\n                        var script = _Array$prototype$slic2[_i22];\n                        if (script.src && script.src === scriptLocation) return script;\n                    }\n                } catch (err) {}\n            }()) return currentScript;\n            throw new Error(\"Can not determine current script\");\n        }));\n        var currentUID = uniqueID();\n        memoize((function() {\n            var script;\n            try {\n                script = getCurrentScript();\n            } catch (err) {\n                return currentUID;\n            }\n            var uid = script.getAttribute(\"data-uid\");\n            if (uid && \"string\" == typeof uid) return uid;\n            if ((uid = script.getAttribute(\"data-uid-auto\")) && \"string\" == typeof uid) return uid;\n            if (script.src) {\n                var hashedString = function(str) {\n                    var hash = \"\";\n                    for (var i = 0; i < str.length; i++) {\n                        var total = str[i].charCodeAt(0) * i;\n                        str[i + 1] && (total += str[i + 1].charCodeAt(0) * (i - 1));\n                        hash += String.fromCharCode(97 + Math.abs(total) % 26);\n                    }\n                    return hash;\n                }(JSON.stringify({\n                    src: script.src,\n                    dataset: script.dataset\n                }));\n                uid = \"uid_\" + hashedString.slice(hashedString.length - 30);\n            } else uid = uniqueID();\n            script.setAttribute(\"data-uid-auto\", uid);\n            return uid;\n        }));\n        function isPerc(str) {\n            return \"string\" == typeof str && /^[0-9]+%$/.test(str);\n        }\n        function toNum(val) {\n            if (\"number\" == typeof val) return val;\n            var match = val.match(/^([0-9]+)(px|%)$/);\n            if (!match) throw new Error(\"Could not match css value from \" + val);\n            return parseInt(match[1], 10);\n        }\n        function toPx(val) {\n            return toNum(val) + \"px\";\n        }\n        function toCSS(val) {\n            return \"number\" == typeof val ? toPx(val) : isPerc(val) ? val : toPx(val);\n        }\n        function normalizeDimension(dim, max) {\n            if (\"number\" == typeof dim) return dim;\n            if (isPerc(dim)) return parseInt(max * toNum(dim) / 100, 10);\n            if (\"string\" == typeof (str = dim) && /^[0-9]+px$/.test(str)) return toNum(dim);\n            var str;\n            throw new Error(\"Can not normalize dimension: \" + dim);\n        }\n        function global_getGlobal(win) {\n            void 0 === win && (win = window);\n            var globalKey = \"__post_robot_10_0_44__\";\n            return win !== window ? win[globalKey] : win[globalKey] = win[globalKey] || {};\n        }\n        var getObj = function() {\n            return {};\n        };\n        function globalStore(key, defStore) {\n            void 0 === key && (key = \"store\");\n            void 0 === defStore && (defStore = getObj);\n            return util_getOrSet(global_getGlobal(), key, (function() {\n                var store = defStore();\n                return {\n                    has: function(storeKey) {\n                        return store.hasOwnProperty(storeKey);\n                    },\n                    get: function(storeKey, defVal) {\n                        return store.hasOwnProperty(storeKey) ? store[storeKey] : defVal;\n                    },\n                    set: function(storeKey, val) {\n                        store[storeKey] = val;\n                        return val;\n                    },\n                    del: function(storeKey) {\n                        delete store[storeKey];\n                    },\n                    getOrSet: function(storeKey, getter) {\n                        return util_getOrSet(store, storeKey, getter);\n                    },\n                    reset: function() {\n                        store = defStore();\n                    },\n                    keys: function() {\n                        return Object.keys(store);\n                    }\n                };\n            }));\n        }\n        var WildCard = function() {};\n        function getWildcard() {\n            var global = global_getGlobal();\n            global.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new WildCard;\n            return global.WINDOW_WILDCARD;\n        }\n        function windowStore(key, defStore) {\n            void 0 === key && (key = \"store\");\n            void 0 === defStore && (defStore = getObj);\n            return globalStore(\"windowStore\").getOrSet(key, (function() {\n                var winStore = new weakmap_CrossDomainSafeWeakMap;\n                var getStore = function(win) {\n                    return winStore.getOrSet(win, defStore);\n                };\n                return {\n                    has: function(win) {\n                        return getStore(win).hasOwnProperty(key);\n                    },\n                    get: function(win, defVal) {\n                        var store = getStore(win);\n                        return store.hasOwnProperty(key) ? store[key] : defVal;\n                    },\n                    set: function(win, val) {\n                        getStore(win)[key] = val;\n                        return val;\n                    },\n                    del: function(win) {\n                        delete getStore(win)[key];\n                    },\n                    getOrSet: function(win, getter) {\n                        return util_getOrSet(getStore(win), key, getter);\n                    }\n                };\n            }));\n        }\n        function getInstanceID() {\n            return globalStore(\"instance\").getOrSet(\"instanceID\", uniqueID);\n        }\n        function resolveHelloPromise(win, _ref) {\n            var domain = _ref.domain;\n            var helloPromises = windowStore(\"helloPromises\");\n            var existingPromise = helloPromises.get(win);\n            existingPromise && existingPromise.resolve({\n                domain: domain\n            });\n            var newPromise = promise_ZalgoPromise.resolve({\n                domain: domain\n            });\n            helloPromises.set(win, newPromise);\n            return newPromise;\n        }\n        function sayHello(win, _ref4) {\n            return (0, _ref4.send)(win, \"postrobot_hello\", {\n                instanceID: getInstanceID()\n            }, {\n                domain: \"*\",\n                timeout: -1\n            }).then((function(_ref5) {\n                var origin = _ref5.origin, instanceID = _ref5.data.instanceID;\n                resolveHelloPromise(win, {\n                    domain: origin\n                });\n                return {\n                    win: win,\n                    domain: origin,\n                    instanceID: instanceID\n                };\n            }));\n        }\n        function getWindowInstanceID(win, _ref6) {\n            var send = _ref6.send;\n            return windowStore(\"windowInstanceIDPromises\").getOrSet(win, (function() {\n                return sayHello(win, {\n                    send: send\n                }).then((function(_ref7) {\n                    return _ref7.instanceID;\n                }));\n            }));\n        }\n        function awaitWindowHello(win, timeout, name) {\n            void 0 === timeout && (timeout = 5e3);\n            void 0 === name && (name = \"Window\");\n            var promise = function(win) {\n                return windowStore(\"helloPromises\").getOrSet(win, (function() {\n                    return new promise_ZalgoPromise;\n                }));\n            }(win);\n            -1 !== timeout && (promise = promise.timeout(timeout, new Error(name + \" did not load after \" + timeout + \"ms\")));\n            return promise;\n        }\n        function markWindowKnown(win) {\n            windowStore(\"knownWindows\").set(win, !0);\n        }\n        function isSerializedType(item) {\n            return \"object\" == typeof item && null !== item && \"string\" == typeof item.__type__;\n        }\n        function determineType(val) {\n            return void 0 === val ? \"undefined\" : null === val ? \"null\" : Array.isArray(val) ? \"array\" : \"function\" == typeof val ? \"function\" : \"object\" == typeof val ? val instanceof Error ? \"error\" : \"function\" == typeof val.then ? \"promise\" : \"[object RegExp]\" === {}.toString.call(val) ? \"regex\" : \"[object Date]\" === {}.toString.call(val) ? \"date\" : \"object\" : \"string\" == typeof val ? \"string\" : \"number\" == typeof val ? \"number\" : \"boolean\" == typeof val ? \"boolean\" : void 0;\n        }\n        function serializeType(type, val) {\n            return {\n                __type__: type,\n                __val__: val\n            };\n        }\n        var _SERIALIZER;\n        var SERIALIZER = ((_SERIALIZER = {}).function = function() {}, _SERIALIZER.error = function(_ref) {\n            return serializeType(\"error\", {\n                message: _ref.message,\n                stack: _ref.stack,\n                code: _ref.code,\n                data: _ref.data\n            });\n        }, _SERIALIZER.promise = function() {}, _SERIALIZER.regex = function(val) {\n            return serializeType(\"regex\", val.source);\n        }, _SERIALIZER.date = function(val) {\n            return serializeType(\"date\", val.toJSON());\n        }, _SERIALIZER.array = function(val) {\n            return val;\n        }, _SERIALIZER.object = function(val) {\n            return val;\n        }, _SERIALIZER.string = function(val) {\n            return val;\n        }, _SERIALIZER.number = function(val) {\n            return val;\n        }, _SERIALIZER.boolean = function(val) {\n            return val;\n        }, _SERIALIZER.null = function(val) {\n            return val;\n        }, _SERIALIZER[void 0] = function(val) {\n            return serializeType(\"undefined\", val);\n        }, _SERIALIZER);\n        var defaultSerializers = {};\n        var _DESERIALIZER;\n        var DESERIALIZER = ((_DESERIALIZER = {}).function = function() {\n            throw new Error(\"Function serialization is not implemented; nothing to deserialize\");\n        }, _DESERIALIZER.error = function(_ref2) {\n            var stack = _ref2.stack, code = _ref2.code, data = _ref2.data;\n            var error = new Error(_ref2.message);\n            error.code = code;\n            data && (error.data = data);\n            error.stack = stack + \"\\n\\n\" + error.stack;\n            return error;\n        }, _DESERIALIZER.promise = function() {\n            throw new Error(\"Promise serialization is not implemented; nothing to deserialize\");\n        }, _DESERIALIZER.regex = function(val) {\n            return new RegExp(val);\n        }, _DESERIALIZER.date = function(val) {\n            return new Date(val);\n        }, _DESERIALIZER.array = function(val) {\n            return val;\n        }, _DESERIALIZER.object = function(val) {\n            return val;\n        }, _DESERIALIZER.string = function(val) {\n            return val;\n        }, _DESERIALIZER.number = function(val) {\n            return val;\n        }, _DESERIALIZER.boolean = function(val) {\n            return val;\n        }, _DESERIALIZER.null = function(val) {\n            return val;\n        }, _DESERIALIZER[void 0] = function() {}, _DESERIALIZER);\n        var defaultDeserializers = {};\n        function needsBridgeForBrowser() {\n            return !!utils_getUserAgent(window).match(/MSIE|trident|edge\\/12|edge\\/13/i);\n        }\n        function needsBridgeForWin(win) {\n            return !isSameTopWindow(window, win);\n        }\n        function needsBridgeForDomain(domain, win) {\n            if (domain) {\n                if (getDomain() !== getDomainFromUrl(domain)) return !0;\n            } else if (win && !isSameDomain(win)) return !0;\n            return !1;\n        }\n        function needsBridge(_ref) {\n            var win = _ref.win, domain = _ref.domain;\n            return !(!needsBridgeForBrowser() || domain && !needsBridgeForDomain(domain, win) || win && !needsBridgeForWin(win));\n        }\n        function getBridgeName(domain) {\n            return \"__postrobot_bridge___\" + (domain = domain || getDomainFromUrl(domain)).replace(/[^a-zA-Z0-9]+/g, \"_\");\n        }\n        function isBridge() {\n            return Boolean(window.name && window.name === getBridgeName(getDomain()));\n        }\n        var documentBodyReady = new promise_ZalgoPromise((function(resolve) {\n            if (window.document && window.document.body) return resolve(window.document.body);\n            var interval = setInterval((function() {\n                if (window.document && window.document.body) {\n                    clearInterval(interval);\n                    return resolve(window.document.body);\n                }\n            }), 10);\n        }));\n        function registerRemoteWindow(win) {\n            windowStore(\"remoteWindowPromises\").getOrSet(win, (function() {\n                return new promise_ZalgoPromise;\n            }));\n        }\n        function findRemoteWindow(win) {\n            var remoteWinPromise = windowStore(\"remoteWindowPromises\").get(win);\n            if (!remoteWinPromise) throw new Error(\"Remote window promise not found\");\n            return remoteWinPromise;\n        }\n        function registerRemoteSendMessage(win, domain, sendMessage) {\n            findRemoteWindow(win).resolve((function(remoteWin, remoteDomain, message) {\n                if (remoteWin !== win) throw new Error(\"Remote window does not match window\");\n                if (!matchDomain(remoteDomain, domain)) throw new Error(\"Remote domain \" + remoteDomain + \" does not match domain \" + domain);\n                sendMessage.fireAndForget(message);\n            }));\n        }\n        function rejectRemoteSendMessage(win, err) {\n            findRemoteWindow(win).reject(err).catch(src_util_noop);\n        }\n        function linkWindow(_ref3) {\n            var win = _ref3.win, name = _ref3.name, domain = _ref3.domain;\n            var popupWindowsByName = globalStore(\"popupWindowsByName\");\n            var popupWindowsByWin = windowStore(\"popupWindowsByWin\");\n            for (var _i2 = 0, _popupWindowsByName$k2 = popupWindowsByName.keys(); _i2 < _popupWindowsByName$k2.length; _i2++) {\n                var winName = _popupWindowsByName$k2[_i2];\n                var _details = popupWindowsByName.get(winName);\n                _details && !isWindowClosed(_details.win) || popupWindowsByName.del(winName);\n            }\n            if (isWindowClosed(win)) return {\n                win: win,\n                name: name,\n                domain: domain\n            };\n            var details = popupWindowsByWin.getOrSet(win, (function() {\n                return name ? popupWindowsByName.getOrSet(name, (function() {\n                    return {\n                        win: win,\n                        name: name\n                    };\n                })) : {\n                    win: win\n                };\n            }));\n            if (details.win && details.win !== win) throw new Error(\"Different window already linked for window: \" + (name || \"undefined\"));\n            if (name) {\n                details.name = name;\n                popupWindowsByName.set(name, details);\n            }\n            if (domain) {\n                details.domain = domain;\n                registerRemoteWindow(win);\n            }\n            popupWindowsByWin.set(win, details);\n            return details;\n        }\n        function setupBridge(_ref) {\n            var on = _ref.on, send = _ref.send, receiveMessage = _ref.receiveMessage;\n            windowOpen = window.open, window.open = function(url, name, options, last) {\n                var win = windowOpen.call(this, normalizeMockUrl(url), name, options, last);\n                if (!win) return win;\n                linkWindow({\n                    win: win,\n                    name: name,\n                    domain: url ? getDomainFromUrl(url) : null\n                });\n                return win;\n            };\n            var windowOpen;\n            !function(_ref) {\n                var on = _ref.on, send = _ref.send, receiveMessage = _ref.receiveMessage;\n                var popupWindowsByName = globalStore(\"popupWindowsByName\");\n                on(\"postrobot_open_tunnel\", (function(_ref2) {\n                    var source = _ref2.source, origin = _ref2.origin, data = _ref2.data;\n                    var bridgePromise = globalStore(\"bridges\").get(origin);\n                    if (!bridgePromise) throw new Error(\"Can not find bridge promise for domain \" + origin);\n                    return bridgePromise.then((function(bridge) {\n                        if (source !== bridge) throw new Error(\"Message source does not matched registered bridge for domain \" + origin);\n                        if (!data.name) throw new Error(\"Register window expected to be passed window name\");\n                        if (!data.sendMessage) throw new Error(\"Register window expected to be passed sendMessage method\");\n                        if (!popupWindowsByName.has(data.name)) throw new Error(\"Window with name \" + data.name + \" does not exist, or was not opened by this window\");\n                        var getWindowDetails = function() {\n                            return popupWindowsByName.get(data.name);\n                        };\n                        if (!getWindowDetails().domain) throw new Error(\"We do not have a registered domain for window \" + data.name);\n                        if (getWindowDetails().domain !== origin) throw new Error(\"Message origin \" + origin + \" does not matched registered window origin \" + (getWindowDetails().domain || \"unknown\"));\n                        registerRemoteSendMessage(getWindowDetails().win, origin, data.sendMessage);\n                        return {\n                            sendMessage: function(message) {\n                                if (window && !window.closed && getWindowDetails()) {\n                                    var domain = getWindowDetails().domain;\n                                    if (domain) try {\n                                        receiveMessage({\n                                            data: message,\n                                            origin: domain,\n                                            source: getWindowDetails().win\n                                        }, {\n                                            on: on,\n                                            send: send\n                                        });\n                                    } catch (err) {\n                                        promise_ZalgoPromise.reject(err);\n                                    }\n                                }\n                            }\n                        };\n                    }));\n                }));\n            }({\n                on: on,\n                send: send,\n                receiveMessage: receiveMessage\n            });\n            !function(_ref2) {\n                var send = _ref2.send;\n                global_getGlobal(window).openTunnelToParent = function(_ref3) {\n                    var name = _ref3.name, source = _ref3.source, canary = _ref3.canary, sendMessage = _ref3.sendMessage;\n                    var tunnelWindows = globalStore(\"tunnelWindows\");\n                    var parentWindow = utils_getParent(window);\n                    if (!parentWindow) throw new Error(\"No parent window found to open tunnel to\");\n                    var id = function(_ref) {\n                        var name = _ref.name, source = _ref.source, canary = _ref.canary, sendMessage = _ref.sendMessage;\n                        !function() {\n                            var tunnelWindows = globalStore(\"tunnelWindows\");\n                            for (var _i2 = 0, _tunnelWindows$keys2 = tunnelWindows.keys(); _i2 < _tunnelWindows$keys2.length; _i2++) {\n                                var key = _tunnelWindows$keys2[_i2];\n                                isWindowClosed(tunnelWindows[key].source) && tunnelWindows.del(key);\n                            }\n                        }();\n                        var id = uniqueID();\n                        globalStore(\"tunnelWindows\").set(id, {\n                            name: name,\n                            source: source,\n                            canary: canary,\n                            sendMessage: sendMessage\n                        });\n                        return id;\n                    }({\n                        name: name,\n                        source: source,\n                        canary: canary,\n                        sendMessage: sendMessage\n                    });\n                    return send(parentWindow, \"postrobot_open_tunnel\", {\n                        name: name,\n                        sendMessage: function() {\n                            var tunnelWindow = tunnelWindows.get(id);\n                            if (tunnelWindow && tunnelWindow.source && !isWindowClosed(tunnelWindow.source)) {\n                                try {\n                                    tunnelWindow.canary();\n                                } catch (err) {\n                                    return;\n                                }\n                                tunnelWindow.sendMessage.apply(this, arguments);\n                            }\n                        }\n                    }, {\n                        domain: \"*\"\n                    });\n                };\n            }({\n                send: send\n            });\n            !function(_ref) {\n                var on = _ref.on, send = _ref.send, receiveMessage = _ref.receiveMessage;\n                promise_ZalgoPromise.try((function() {\n                    var opener = getOpener(window);\n                    if (opener && needsBridge({\n                        win: opener\n                    })) {\n                        registerRemoteWindow(opener);\n                        return (win = opener, windowStore(\"remoteBridgeAwaiters\").getOrSet(win, (function() {\n                            return promise_ZalgoPromise.try((function() {\n                                var frame = getFrameByName(win, getBridgeName(getDomain()));\n                                if (frame) return isSameDomain(frame) && global_getGlobal(assertSameDomain(frame)) ? frame : new promise_ZalgoPromise((function(resolve) {\n                                    var interval;\n                                    var timeout;\n                                    interval = setInterval((function() {\n                                        if (frame && isSameDomain(frame) && global_getGlobal(assertSameDomain(frame))) {\n                                            clearInterval(interval);\n                                            clearTimeout(timeout);\n                                            return resolve(frame);\n                                        }\n                                    }), 100);\n                                    timeout = setTimeout((function() {\n                                        clearInterval(interval);\n                                        return resolve();\n                                    }), 2e3);\n                                }));\n                            }));\n                        }))).then((function(bridge) {\n                            return bridge ? window.name ? global_getGlobal(assertSameDomain(bridge)).openTunnelToParent({\n                                name: window.name,\n                                source: window,\n                                canary: function() {},\n                                sendMessage: function(message) {\n                                    try {\n                                        window;\n                                    } catch (err) {\n                                        return;\n                                    }\n                                    if (window && !window.closed) try {\n                                        receiveMessage({\n                                            data: message,\n                                            origin: this.origin,\n                                            source: this.source\n                                        }, {\n                                            on: on,\n                                            send: send\n                                        });\n                                    } catch (err) {\n                                        promise_ZalgoPromise.reject(err);\n                                    }\n                                }\n                            }).then((function(_ref2) {\n                                var source = _ref2.source, origin = _ref2.origin, data = _ref2.data;\n                                if (source !== opener) throw new Error(\"Source does not match opener\");\n                                registerRemoteSendMessage(source, origin, data.sendMessage);\n                            })).catch((function(err) {\n                                rejectRemoteSendMessage(opener, err);\n                                throw err;\n                            })) : rejectRemoteSendMessage(opener, new Error(\"Can not register with opener: window does not have a name\")) : rejectRemoteSendMessage(opener, new Error(\"Can not register with opener: no bridge found in opener\"));\n                        }));\n                        var win;\n                    }\n                }));\n            }({\n                on: on,\n                send: send,\n                receiveMessage: receiveMessage\n            });\n        }\n        function cleanupProxyWindows() {\n            var idToProxyWindow = globalStore(\"idToProxyWindow\");\n            for (var _i2 = 0, _idToProxyWindow$keys2 = idToProxyWindow.keys(); _i2 < _idToProxyWindow$keys2.length; _i2++) {\n                var id = _idToProxyWindow$keys2[_i2];\n                idToProxyWindow.get(id).shouldClean() && idToProxyWindow.del(id);\n            }\n        }\n        function getSerializedWindow(winPromise, _ref) {\n            var send = _ref.send, _ref$id = _ref.id, id = void 0 === _ref$id ? uniqueID() : _ref$id;\n            var windowNamePromise = winPromise.then((function(win) {\n                if (isSameDomain(win)) return assertSameDomain(win).name;\n            }));\n            var windowTypePromise = winPromise.then((function(window) {\n                if (isWindowClosed(window)) throw new Error(\"Window is closed, can not determine type\");\n                return getOpener(window) ? WINDOW_TYPE.POPUP : WINDOW_TYPE.IFRAME;\n            }));\n            windowNamePromise.catch(src_util_noop);\n            windowTypePromise.catch(src_util_noop);\n            var getName = function() {\n                return winPromise.then((function(win) {\n                    if (!isWindowClosed(win)) return isSameDomain(win) ? assertSameDomain(win).name : windowNamePromise;\n                }));\n            };\n            return {\n                id: id,\n                getType: function() {\n                    return windowTypePromise;\n                },\n                getInstanceID: memoizePromise((function() {\n                    return winPromise.then((function(win) {\n                        return getWindowInstanceID(win, {\n                            send: send\n                        });\n                    }));\n                })),\n                close: function() {\n                    return winPromise.then(closeWindow);\n                },\n                getName: getName,\n                focus: function() {\n                    return winPromise.then((function(win) {\n                        win.focus();\n                    }));\n                },\n                isClosed: function() {\n                    return winPromise.then((function(win) {\n                        return isWindowClosed(win);\n                    }));\n                },\n                setLocation: function(href, opts) {\n                    void 0 === opts && (opts = {});\n                    return winPromise.then((function(win) {\n                        var domain = window.location.protocol + \"//\" + window.location.host;\n                        var _opts$method = opts.method, method = void 0 === _opts$method ? \"get\" : _opts$method, body = opts.body;\n                        if (0 === href.indexOf(\"/\")) href = \"\" + domain + href; else if (!href.match(/^https?:\\/\\//) && 0 !== href.indexOf(domain)) throw new Error(\"Expected url to be http or https url, or absolute path, got \" + JSON.stringify(href));\n                        if (\"post\" === method) return getName().then((function(name) {\n                            if (!name) throw new Error(\"Can not post to window without target name\");\n                            !function(_ref3) {\n                                var url = _ref3.url, target = _ref3.target, body = _ref3.body, _ref3$method = _ref3.method, method = void 0 === _ref3$method ? \"post\" : _ref3$method;\n                                var form = document.createElement(\"form\");\n                                form.setAttribute(\"target\", target);\n                                form.setAttribute(\"method\", method);\n                                form.setAttribute(\"action\", url);\n                                form.style.display = \"none\";\n                                if (body) for (var _i24 = 0, _Object$keys4 = Object.keys(body); _i24 < _Object$keys4.length; _i24++) {\n                                    var _body$key;\n                                    var key = _Object$keys4[_i24];\n                                    var input = document.createElement(\"input\");\n                                    input.setAttribute(\"name\", key);\n                                    input.setAttribute(\"value\", null == (_body$key = body[key]) ? void 0 : _body$key.toString());\n                                    form.appendChild(input);\n                                }\n                                getBody().appendChild(form);\n                                form.submit();\n                                getBody().removeChild(form);\n                            }({\n                                url: href,\n                                target: name,\n                                method: method,\n                                body: body\n                            });\n                        }));\n                        if (\"get\" !== method) throw new Error(\"Unsupported method: \" + method);\n                        if (isSameDomain(win)) try {\n                            if (win.location && \"function\" == typeof win.location.replace) {\n                                win.location.replace(href);\n                                return;\n                            }\n                        } catch (err) {}\n                        win.location = href;\n                    }));\n                },\n                setName: function(name) {\n                    return winPromise.then((function(win) {\n                        linkWindow({\n                            win: win,\n                            name: name\n                        });\n                        var sameDomain = isSameDomain(win);\n                        var frame = getFrameForWindow(win);\n                        if (!sameDomain) throw new Error(\"Can not set name for cross-domain window: \" + name);\n                        assertSameDomain(win).name = name;\n                        frame && frame.setAttribute(\"name\", name);\n                        windowNamePromise = promise_ZalgoPromise.resolve(name);\n                    }));\n                }\n            };\n        }\n        var window_ProxyWindow = function() {\n            function ProxyWindow(_ref2) {\n                var send = _ref2.send, win = _ref2.win, serializedWindow = _ref2.serializedWindow;\n                this.id = void 0;\n                this.isProxyWindow = !0;\n                this.serializedWindow = void 0;\n                this.actualWindow = void 0;\n                this.actualWindowPromise = void 0;\n                this.send = void 0;\n                this.name = void 0;\n                this.actualWindowPromise = new promise_ZalgoPromise;\n                this.serializedWindow = serializedWindow || getSerializedWindow(this.actualWindowPromise, {\n                    send: send\n                });\n                globalStore(\"idToProxyWindow\").set(this.getID(), this);\n                win && this.setWindow(win, {\n                    send: send\n                });\n            }\n            var _proto = ProxyWindow.prototype;\n            _proto.getID = function() {\n                return this.serializedWindow.id;\n            };\n            _proto.getType = function() {\n                return this.serializedWindow.getType();\n            };\n            _proto.isPopup = function() {\n                return this.getType().then((function(type) {\n                    return type === WINDOW_TYPE.POPUP;\n                }));\n            };\n            _proto.setLocation = function(href, opts) {\n                var _this = this;\n                return this.serializedWindow.setLocation(href, opts).then((function() {\n                    return _this;\n                }));\n            };\n            _proto.getName = function() {\n                return this.serializedWindow.getName();\n            };\n            _proto.setName = function(name) {\n                var _this2 = this;\n                return this.serializedWindow.setName(name).then((function() {\n                    return _this2;\n                }));\n            };\n            _proto.close = function() {\n                var _this3 = this;\n                return this.serializedWindow.close().then((function() {\n                    return _this3;\n                }));\n            };\n            _proto.focus = function() {\n                var _this4 = this;\n                var isPopupPromise = this.isPopup();\n                var getNamePromise = this.getName();\n                var reopenPromise = promise_ZalgoPromise.hash({\n                    isPopup: isPopupPromise,\n                    name: getNamePromise\n                }).then((function(_ref3) {\n                    var name = _ref3.name;\n                    _ref3.isPopup && name && window.open(\"\", name);\n                }));\n                var focusPromise = this.serializedWindow.focus();\n                return promise_ZalgoPromise.all([ reopenPromise, focusPromise ]).then((function() {\n                    return _this4;\n                }));\n            };\n            _proto.isClosed = function() {\n                return this.serializedWindow.isClosed();\n            };\n            _proto.getWindow = function() {\n                return this.actualWindow;\n            };\n            _proto.setWindow = function(win, _ref4) {\n                var send = _ref4.send;\n                this.actualWindow = win;\n                this.actualWindowPromise.resolve(this.actualWindow);\n                this.serializedWindow = getSerializedWindow(this.actualWindowPromise, {\n                    send: send,\n                    id: this.getID()\n                });\n                windowStore(\"winToProxyWindow\").set(win, this);\n            };\n            _proto.awaitWindow = function() {\n                return this.actualWindowPromise;\n            };\n            _proto.matchWindow = function(win, _ref5) {\n                var _this5 = this;\n                var send = _ref5.send;\n                return promise_ZalgoPromise.try((function() {\n                    return _this5.actualWindow ? win === _this5.actualWindow : promise_ZalgoPromise.hash({\n                        proxyInstanceID: _this5.getInstanceID(),\n                        knownWindowInstanceID: getWindowInstanceID(win, {\n                            send: send\n                        })\n                    }).then((function(_ref6) {\n                        var match = _ref6.proxyInstanceID === _ref6.knownWindowInstanceID;\n                        match && _this5.setWindow(win, {\n                            send: send\n                        });\n                        return match;\n                    }));\n                }));\n            };\n            _proto.unwrap = function() {\n                return this.actualWindow || this;\n            };\n            _proto.getInstanceID = function() {\n                return this.serializedWindow.getInstanceID();\n            };\n            _proto.shouldClean = function() {\n                return Boolean(this.actualWindow && isWindowClosed(this.actualWindow));\n            };\n            _proto.serialize = function() {\n                return this.serializedWindow;\n            };\n            ProxyWindow.unwrap = function(win) {\n                return ProxyWindow.isProxyWindow(win) ? win.unwrap() : win;\n            };\n            ProxyWindow.serialize = function(win, _ref7) {\n                var send = _ref7.send;\n                cleanupProxyWindows();\n                return ProxyWindow.toProxyWindow(win, {\n                    send: send\n                }).serialize();\n            };\n            ProxyWindow.deserialize = function(serializedWindow, _ref8) {\n                var send = _ref8.send;\n                cleanupProxyWindows();\n                return globalStore(\"idToProxyWindow\").get(serializedWindow.id) || new ProxyWindow({\n                    serializedWindow: serializedWindow,\n                    send: send\n                });\n            };\n            ProxyWindow.isProxyWindow = function(obj) {\n                return Boolean(obj && !isWindow(obj) && obj.isProxyWindow);\n            };\n            ProxyWindow.toProxyWindow = function(win, _ref9) {\n                var send = _ref9.send;\n                cleanupProxyWindows();\n                if (ProxyWindow.isProxyWindow(win)) return win;\n                var actualWindow = win;\n                return windowStore(\"winToProxyWindow\").get(actualWindow) || new ProxyWindow({\n                    win: actualWindow,\n                    send: send\n                });\n            };\n            return ProxyWindow;\n        }();\n        function addMethod(id, val, name, source, domain) {\n            var methodStore = windowStore(\"methodStore\");\n            var proxyWindowMethods = globalStore(\"proxyWindowMethods\");\n            if (window_ProxyWindow.isProxyWindow(source)) proxyWindowMethods.set(id, {\n                val: val,\n                name: name,\n                domain: domain,\n                source: source\n            }); else {\n                proxyWindowMethods.del(id);\n                methodStore.getOrSet(source, (function() {\n                    return {};\n                }))[id] = {\n                    domain: domain,\n                    name: name,\n                    val: val,\n                    source: source\n                };\n            }\n        }\n        function lookupMethod(source, id) {\n            var methodStore = windowStore(\"methodStore\");\n            var proxyWindowMethods = globalStore(\"proxyWindowMethods\");\n            return methodStore.getOrSet(source, (function() {\n                return {};\n            }))[id] || proxyWindowMethods.get(id);\n        }\n        function function_serializeFunction(destination, domain, val, key, _ref3) {\n            on = (_ref = {\n                on: _ref3.on,\n                send: _ref3.send\n            }).on, send = _ref.send, globalStore(\"builtinListeners\").getOrSet(\"functionCalls\", (function() {\n                return on(\"postrobot_method\", {\n                    domain: \"*\"\n                }, (function(_ref2) {\n                    var source = _ref2.source, origin = _ref2.origin, data = _ref2.data;\n                    var id = data.id, name = data.name;\n                    var meth = lookupMethod(source, id);\n                    if (!meth) throw new Error(\"Could not find method '\" + name + \"' with id: \" + data.id + \" in \" + getDomain(window));\n                    var methodSource = meth.source, domain = meth.domain, val = meth.val;\n                    return promise_ZalgoPromise.try((function() {\n                        if (!matchDomain(domain, origin)) throw new Error(\"Method '\" + data.name + \"' domain \" + JSON.stringify(util_isRegex(meth.domain) ? meth.domain.source : meth.domain) + \" does not match origin \" + origin + \" in \" + getDomain(window));\n                        if (window_ProxyWindow.isProxyWindow(methodSource)) return methodSource.matchWindow(source, {\n                            send: send\n                        }).then((function(match) {\n                            if (!match) throw new Error(\"Method call '\" + data.name + \"' failed - proxy window does not match source in \" + getDomain(window));\n                        }));\n                    })).then((function() {\n                        return val.apply({\n                            source: source,\n                            origin: origin\n                        }, data.args);\n                    }), (function(err) {\n                        return promise_ZalgoPromise.try((function() {\n                            if (val.onError) return val.onError(err);\n                        })).then((function() {\n                            err.stack && (err.stack = \"Remote call to \" + name + \"(\" + function(args) {\n                                void 0 === args && (args = []);\n                                return arrayFrom(args).map((function(arg) {\n                                    return \"string\" == typeof arg ? \"'\" + arg + \"'\" : void 0 === arg ? \"undefined\" : null === arg ? \"null\" : \"boolean\" == typeof arg ? arg.toString() : Array.isArray(arg) ? \"[ ... ]\" : \"object\" == typeof arg ? \"{ ... }\" : \"function\" == typeof arg ? \"() => { ... }\" : \"<\" + typeof arg + \">\";\n                                })).join(\", \");\n                            }(data.args) + \") failed\\n\\n\" + err.stack);\n                            throw err;\n                        }));\n                    })).then((function(result) {\n                        return {\n                            result: result,\n                            id: id,\n                            name: name\n                        };\n                    }));\n                }));\n            }));\n            var _ref, on, send;\n            var id = val.__id__ || uniqueID();\n            destination = window_ProxyWindow.unwrap(destination);\n            var name = val.__name__ || val.name || key;\n            \"string\" == typeof name && \"function\" == typeof name.indexOf && 0 === name.indexOf(\"anonymous::\") && (name = name.replace(\"anonymous::\", key + \"::\"));\n            if (window_ProxyWindow.isProxyWindow(destination)) {\n                addMethod(id, val, name, destination, domain);\n                destination.awaitWindow().then((function(win) {\n                    addMethod(id, val, name, win, domain);\n                }));\n            } else addMethod(id, val, name, destination, domain);\n            return serializeType(\"cross_domain_function\", {\n                id: id,\n                name: name\n            });\n        }\n        function serializeMessage(destination, domain, obj, _ref) {\n            var _serialize;\n            var on = _ref.on, send = _ref.send;\n            return function(obj, serializers) {\n                void 0 === serializers && (serializers = defaultSerializers);\n                var result = JSON.stringify(obj, (function(key) {\n                    var val = this[key];\n                    if (isSerializedType(this)) return val;\n                    var type = determineType(val);\n                    if (!type) return val;\n                    var serializer = serializers[type] || SERIALIZER[type];\n                    return serializer ? serializer(val, key) : val;\n                }));\n                return void 0 === result ? \"undefined\" : result;\n            }(obj, ((_serialize = {}).promise = function(val, key) {\n                return function(destination, domain, val, key, _ref) {\n                    return serializeType(\"cross_domain_zalgo_promise\", {\n                        then: function_serializeFunction(destination, domain, (function(resolve, reject) {\n                            return val.then(resolve, reject);\n                        }), key, {\n                            on: _ref.on,\n                            send: _ref.send\n                        })\n                    });\n                }(destination, domain, val, key, {\n                    on: on,\n                    send: send\n                });\n            }, _serialize.function = function(val, key) {\n                return function_serializeFunction(destination, domain, val, key, {\n                    on: on,\n                    send: send\n                });\n            }, _serialize.object = function(val) {\n                return isWindow(val) || window_ProxyWindow.isProxyWindow(val) ? serializeType(\"cross_domain_window\", window_ProxyWindow.serialize(val, {\n                    send: send\n                })) : val;\n            }, _serialize));\n        }\n        function deserializeMessage(source, origin, message, _ref2) {\n            var _deserialize;\n            var send = _ref2.send;\n            return function(str, deserializers) {\n                void 0 === deserializers && (deserializers = defaultDeserializers);\n                if (\"undefined\" !== str) return JSON.parse(str, (function(key, val) {\n                    if (isSerializedType(this)) return val;\n                    var type;\n                    var value;\n                    if (isSerializedType(val)) {\n                        type = val.__type__;\n                        value = val.__val__;\n                    } else {\n                        type = determineType(val);\n                        value = val;\n                    }\n                    if (!type) return value;\n                    var deserializer = deserializers[type] || DESERIALIZER[type];\n                    return deserializer ? deserializer(value, key) : value;\n                }));\n            }(message, ((_deserialize = {}).cross_domain_zalgo_promise = function(serializedPromise) {\n                return function(source, origin, _ref2) {\n                    return new promise_ZalgoPromise(_ref2.then);\n                }(0, 0, serializedPromise);\n            }, _deserialize.cross_domain_function = function(serializedFunction) {\n                return function(source, origin, _ref4, _ref5) {\n                    var id = _ref4.id, name = _ref4.name;\n                    var send = _ref5.send;\n                    var getDeserializedFunction = function(opts) {\n                        void 0 === opts && (opts = {});\n                        function crossDomainFunctionWrapper() {\n                            var _arguments = arguments;\n                            return window_ProxyWindow.toProxyWindow(source, {\n                                send: send\n                            }).awaitWindow().then((function(win) {\n                                var meth = lookupMethod(win, id);\n                                if (meth && meth.val !== crossDomainFunctionWrapper) return meth.val.apply({\n                                    source: window,\n                                    origin: getDomain()\n                                }, _arguments);\n                                var _args = [].slice.call(_arguments);\n                                return opts.fireAndForget ? send(win, \"postrobot_method\", {\n                                    id: id,\n                                    name: name,\n                                    args: _args\n                                }, {\n                                    domain: origin,\n                                    fireAndForget: !0\n                                }) : send(win, \"postrobot_method\", {\n                                    id: id,\n                                    name: name,\n                                    args: _args\n                                }, {\n                                    domain: origin,\n                                    fireAndForget: !1\n                                }).then((function(res) {\n                                    return res.data.result;\n                                }));\n                            })).catch((function(err) {\n                                throw err;\n                            }));\n                        }\n                        crossDomainFunctionWrapper.__name__ = name;\n                        crossDomainFunctionWrapper.__origin__ = origin;\n                        crossDomainFunctionWrapper.__source__ = source;\n                        crossDomainFunctionWrapper.__id__ = id;\n                        crossDomainFunctionWrapper.origin = origin;\n                        return crossDomainFunctionWrapper;\n                    };\n                    var crossDomainFunctionWrapper = getDeserializedFunction();\n                    crossDomainFunctionWrapper.fireAndForget = getDeserializedFunction({\n                        fireAndForget: !0\n                    });\n                    return crossDomainFunctionWrapper;\n                }(source, origin, serializedFunction, {\n                    send: send\n                });\n            }, _deserialize.cross_domain_window = function(serializedWindow) {\n                return window_ProxyWindow.deserialize(serializedWindow, {\n                    send: send\n                });\n            }, _deserialize));\n        }\n        var SEND_MESSAGE_STRATEGIES = {};\n        SEND_MESSAGE_STRATEGIES.postrobot_post_message = function(win, serializedMessage, domain) {\n            0 === domain.indexOf(\"file:\") && (domain = \"*\");\n            win.postMessage(serializedMessage, domain);\n        };\n        SEND_MESSAGE_STRATEGIES.postrobot_bridge = function(win, serializedMessage, domain) {\n            if (!needsBridgeForBrowser() && !isBridge()) throw new Error(\"Bridge not needed for browser\");\n            if (isSameDomain(win)) throw new Error(\"Post message through bridge disabled between same domain windows\");\n            if (!1 !== isSameTopWindow(window, win)) throw new Error(\"Can only use bridge to communicate between two different windows, not between frames\");\n            !function(win, domain, message) {\n                var messagingChild = isOpener(window, win);\n                var messagingParent = isOpener(win, window);\n                if (!messagingChild && !messagingParent) throw new Error(\"Can only send messages to and from parent and popup windows\");\n                findRemoteWindow(win).then((function(sendMessage) {\n                    return sendMessage(win, domain, message);\n                }));\n            }(win, domain, serializedMessage);\n        };\n        SEND_MESSAGE_STRATEGIES.postrobot_global = function(win, serializedMessage) {\n            if (!utils_getUserAgent(window).match(/MSIE|rv:11|trident|edge\\/12|edge\\/13/i)) throw new Error(\"Global messaging not needed for browser\");\n            if (!isSameDomain(win)) throw new Error(\"Post message through global disabled between different domain windows\");\n            if (!1 !== isSameTopWindow(window, win)) throw new Error(\"Can only use global to communicate between two different windows, not between frames\");\n            var foreignGlobal = global_getGlobal(win);\n            if (!foreignGlobal) throw new Error(\"Can not find postRobot global on foreign window\");\n            foreignGlobal.receiveMessage({\n                source: window,\n                origin: getDomain(),\n                data: serializedMessage\n            });\n        };\n        function send_sendMessage(win, domain, message, _ref2) {\n            var on = _ref2.on, send = _ref2.send;\n            return promise_ZalgoPromise.try((function() {\n                var domainBuffer = windowStore().getOrSet(win, (function() {\n                    return {};\n                }));\n                domainBuffer.buffer = domainBuffer.buffer || [];\n                domainBuffer.buffer.push(message);\n                domainBuffer.flush = domainBuffer.flush || promise_ZalgoPromise.flush().then((function() {\n                    if (isWindowClosed(win)) throw new Error(\"Window is closed\");\n                    var serializedMessage = serializeMessage(win, domain, ((_ref = {}).__post_robot_10_0_44__ = domainBuffer.buffer || [], \n                    _ref), {\n                        on: on,\n                        send: send\n                    });\n                    var _ref;\n                    delete domainBuffer.buffer;\n                    var strategies = Object.keys(SEND_MESSAGE_STRATEGIES);\n                    var errors = [];\n                    for (var _i2 = 0; _i2 < strategies.length; _i2++) {\n                        var strategyName = strategies[_i2];\n                        try {\n                            SEND_MESSAGE_STRATEGIES[strategyName](win, serializedMessage, domain);\n                        } catch (err) {\n                            errors.push(err);\n                        }\n                    }\n                    if (errors.length === strategies.length) throw new Error(\"All post-robot messaging strategies failed:\\n\\n\" + errors.map((function(err, i) {\n                        return i + \". \" + stringifyError(err);\n                    })).join(\"\\n\\n\"));\n                }));\n                return domainBuffer.flush.then((function() {\n                    delete domainBuffer.flush;\n                }));\n            })).then(src_util_noop);\n        }\n        function getResponseListener(hash) {\n            return globalStore(\"responseListeners\").get(hash);\n        }\n        function deleteResponseListener(hash) {\n            globalStore(\"responseListeners\").del(hash);\n        }\n        function isResponseListenerErrored(hash) {\n            return globalStore(\"erroredResponseListeners\").has(hash);\n        }\n        function getRequestListener(_ref) {\n            var name = _ref.name, win = _ref.win, domain = _ref.domain;\n            var requestListeners = windowStore(\"requestListeners\");\n            \"*\" === win && (win = null);\n            \"*\" === domain && (domain = null);\n            if (!name) throw new Error(\"Name required to get request listener\");\n            for (var _i4 = 0, _ref3 = [ win, getWildcard() ]; _i4 < _ref3.length; _i4++) {\n                var winQualifier = _ref3[_i4];\n                if (winQualifier) {\n                    var nameListeners = requestListeners.get(winQualifier);\n                    if (nameListeners) {\n                        var domainListeners = nameListeners[name];\n                        if (domainListeners) {\n                            if (domain && \"string\" == typeof domain) {\n                                if (domainListeners[domain]) return domainListeners[domain];\n                                if (domainListeners.__domain_regex__) for (var _i6 = 0, _domainListeners$__DO2 = domainListeners.__domain_regex__; _i6 < _domainListeners$__DO2.length; _i6++) {\n                                    var _domainListeners$__DO3 = _domainListeners$__DO2[_i6], listener = _domainListeners$__DO3.listener;\n                                    if (matchDomain(_domainListeners$__DO3.regex, domain)) return listener;\n                                }\n                            }\n                            if (domainListeners[\"*\"]) return domainListeners[\"*\"];\n                        }\n                    }\n                }\n            }\n        }\n        function handleRequest(source, origin, message, _ref) {\n            var on = _ref.on, send = _ref.send;\n            var options = getRequestListener({\n                name: message.name,\n                win: source,\n                domain: origin\n            });\n            var logName = \"postrobot_method\" === message.name && message.data && \"string\" == typeof message.data.name ? message.data.name + \"()\" : message.name;\n            function sendResponse(ack, data, error) {\n                return promise_ZalgoPromise.flush().then((function() {\n                    if (!message.fireAndForget && !isWindowClosed(source)) try {\n                        return send_sendMessage(source, origin, {\n                            id: uniqueID(),\n                            origin: getDomain(window),\n                            type: \"postrobot_message_response\",\n                            hash: message.hash,\n                            name: message.name,\n                            ack: ack,\n                            data: data,\n                            error: error\n                        }, {\n                            on: on,\n                            send: send\n                        });\n                    } catch (err) {\n                        throw new Error(\"Send response message failed for \" + logName + \" in \" + getDomain() + \"\\n\\n\" + stringifyError(err));\n                    }\n                }));\n            }\n            return promise_ZalgoPromise.all([ promise_ZalgoPromise.flush().then((function() {\n                if (!message.fireAndForget && !isWindowClosed(source)) try {\n                    return send_sendMessage(source, origin, {\n                        id: uniqueID(),\n                        origin: getDomain(window),\n                        type: \"postrobot_message_ack\",\n                        hash: message.hash,\n                        name: message.name\n                    }, {\n                        on: on,\n                        send: send\n                    });\n                } catch (err) {\n                    throw new Error(\"Send ack message failed for \" + logName + \" in \" + getDomain() + \"\\n\\n\" + stringifyError(err));\n                }\n            })), promise_ZalgoPromise.try((function() {\n                if (!options) throw new Error(\"No handler found for post message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n                if (!matchDomain(options.domain, origin)) throw new Error(\"Request origin \" + origin + \" does not match domain \" + options.domain.toString());\n                return options.handler({\n                    source: source,\n                    origin: origin,\n                    data: message.data\n                });\n            })).then((function(data) {\n                return sendResponse(\"success\", data);\n            }), (function(error) {\n                return sendResponse(\"error\", null, error);\n            })) ]).then(src_util_noop).catch((function(err) {\n                if (options && options.handleError) return options.handleError(err);\n                throw err;\n            }));\n        }\n        function handleAck(source, origin, message) {\n            if (!isResponseListenerErrored(message.hash)) {\n                var options = getResponseListener(message.hash);\n                if (!options) throw new Error(\"No handler found for post message ack for message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n                try {\n                    if (!matchDomain(options.domain, origin)) throw new Error(\"Ack origin \" + origin + \" does not match domain \" + options.domain.toString());\n                    if (source !== options.win) throw new Error(\"Ack source does not match registered window\");\n                } catch (err) {\n                    options.promise.reject(err);\n                }\n                options.ack = !0;\n            }\n        }\n        function handleResponse(source, origin, message) {\n            if (!isResponseListenerErrored(message.hash)) {\n                var options = getResponseListener(message.hash);\n                if (!options) throw new Error(\"No handler found for post message response for message: \" + message.name + \" from \" + origin + \" in \" + window.location.protocol + \"//\" + window.location.host + window.location.pathname);\n                if (!matchDomain(options.domain, origin)) throw new Error(\"Response origin \" + origin + \" does not match domain \" + (pattern = options.domain, \n                Array.isArray(pattern) ? \"(\" + pattern.join(\" | \") + \")\" : isRegex(pattern) ? \"RegExp(\" + pattern.toString() + \")\" : pattern.toString()));\n                var pattern;\n                if (source !== options.win) throw new Error(\"Response source does not match registered window\");\n                deleteResponseListener(message.hash);\n                \"error\" === message.ack ? options.promise.reject(message.error) : \"success\" === message.ack && options.promise.resolve({\n                    source: source,\n                    origin: origin,\n                    data: message.data\n                });\n            }\n        }\n        function receive_receiveMessage(event, _ref2) {\n            var on = _ref2.on, send = _ref2.send;\n            var receivedMessages = globalStore(\"receivedMessages\");\n            try {\n                if (!window || window.closed || !event.source) return;\n            } catch (err) {\n                return;\n            }\n            var source = event.source, origin = event.origin;\n            var messages = function(message, source, origin, _ref) {\n                var on = _ref.on, send = _ref.send;\n                var parsedMessage;\n                try {\n                    parsedMessage = deserializeMessage(source, origin, message, {\n                        on: on,\n                        send: send\n                    });\n                } catch (err) {\n                    return;\n                }\n                if (parsedMessage && \"object\" == typeof parsedMessage && null !== parsedMessage) {\n                    var parseMessages = parsedMessage.__post_robot_10_0_44__;\n                    if (Array.isArray(parseMessages)) return parseMessages;\n                }\n            }(event.data, source, origin, {\n                on: on,\n                send: send\n            });\n            if (messages) {\n                markWindowKnown(source);\n                for (var _i2 = 0; _i2 < messages.length; _i2++) {\n                    var message = messages[_i2];\n                    if (receivedMessages.has(message.id)) return;\n                    receivedMessages.set(message.id, !0);\n                    if (isWindowClosed(source) && !message.fireAndForget) return;\n                    0 === message.origin.indexOf(\"file:\") && (origin = \"file://\");\n                    try {\n                        \"postrobot_message_request\" === message.type ? handleRequest(source, origin, message, {\n                            on: on,\n                            send: send\n                        }) : \"postrobot_message_response\" === message.type ? handleResponse(source, origin, message) : \"postrobot_message_ack\" === message.type && handleAck(source, origin, message);\n                    } catch (err) {\n                        setTimeout((function() {\n                            throw err;\n                        }), 0);\n                    }\n                }\n            }\n        }\n        function on_on(name, options, handler) {\n            if (!name) throw new Error(\"Expected name\");\n            if (\"function\" == typeof (options = options || {})) {\n                handler = options;\n                options = {};\n            }\n            if (!handler) throw new Error(\"Expected handler\");\n            (options = options || {}).name = name;\n            options.handler = handler || options.handler;\n            var win = options.window;\n            var domain = options.domain;\n            var requestListener = function addRequestListener(_ref4, listener) {\n                var name = _ref4.name, win = _ref4.win, domain = _ref4.domain;\n                var requestListeners = windowStore(\"requestListeners\");\n                if (!name || \"string\" != typeof name) throw new Error(\"Name required to add request listener\");\n                if (Array.isArray(win)) {\n                    var listenersCollection = [];\n                    for (var _i8 = 0, _win2 = win; _i8 < _win2.length; _i8++) listenersCollection.push(addRequestListener({\n                        name: name,\n                        domain: domain,\n                        win: _win2[_i8]\n                    }, listener));\n                    return {\n                        cancel: function() {\n                            for (var _i10 = 0; _i10 < listenersCollection.length; _i10++) listenersCollection[_i10].cancel();\n                        }\n                    };\n                }\n                if (Array.isArray(domain)) {\n                    var _listenersCollection = [];\n                    for (var _i12 = 0, _domain2 = domain; _i12 < _domain2.length; _i12++) _listenersCollection.push(addRequestListener({\n                        name: name,\n                        win: win,\n                        domain: _domain2[_i12]\n                    }, listener));\n                    return {\n                        cancel: function() {\n                            for (var _i14 = 0; _i14 < _listenersCollection.length; _i14++) _listenersCollection[_i14].cancel();\n                        }\n                    };\n                }\n                var existingListener = getRequestListener({\n                    name: name,\n                    win: win,\n                    domain: domain\n                });\n                win && \"*\" !== win || (win = getWildcard());\n                domain = domain || \"*\";\n                if (existingListener) throw win && domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString() + \" for \" + (win === getWildcard() ? \"wildcard\" : \"specified\") + \" window\") : win ? new Error(\"Request listener already exists for \" + name + \" for \" + (win === getWildcard() ? \"wildcard\" : \"specified\") + \" window\") : domain ? new Error(\"Request listener already exists for \" + name + \" on domain \" + domain.toString()) : new Error(\"Request listener already exists for \" + name);\n                var nameListeners = requestListeners.getOrSet(win, (function() {\n                    return {};\n                }));\n                var domainListeners = util_getOrSet(nameListeners, name, (function() {\n                    return {};\n                }));\n                var strDomain = domain.toString();\n                var regexListeners;\n                var regexListener;\n                util_isRegex(domain) ? (regexListeners = util_getOrSet(domainListeners, \"__domain_regex__\", (function() {\n                    return [];\n                }))).push(regexListener = {\n                    regex: domain,\n                    listener: listener\n                }) : domainListeners[strDomain] = listener;\n                return {\n                    cancel: function() {\n                        delete domainListeners[strDomain];\n                        if (regexListener) {\n                            regexListeners.splice(regexListeners.indexOf(regexListener, 1));\n                            regexListeners.length || delete domainListeners.__domain_regex__;\n                        }\n                        Object.keys(domainListeners).length || delete nameListeners[name];\n                        win && !Object.keys(nameListeners).length && requestListeners.del(win);\n                    }\n                };\n            }({\n                name: name,\n                win: win,\n                domain: domain\n            }, {\n                handler: options.handler,\n                handleError: options.errorHandler || function(err) {\n                    throw err;\n                },\n                window: win,\n                domain: domain || \"*\",\n                name: name\n            });\n            return {\n                cancel: function() {\n                    requestListener.cancel();\n                }\n            };\n        }\n        var send_send = function send(win, name, data, options) {\n            var domainMatcher = (options = options || {}).domain || \"*\";\n            var responseTimeout = options.timeout || -1;\n            var childTimeout = options.timeout || 5e3;\n            var fireAndForget = options.fireAndForget || !1;\n            return promise_ZalgoPromise.try((function() {\n                !function(name, win, domain) {\n                    if (!name) throw new Error(\"Expected name\");\n                    if (domain && \"string\" != typeof domain && !Array.isArray(domain) && !util_isRegex(domain)) throw new TypeError(\"Can not send \" + name + \". Expected domain \" + JSON.stringify(domain) + \" to be a string, array, or regex\");\n                    if (isWindowClosed(win)) throw new Error(\"Can not send \" + name + \". Target window is closed\");\n                }(name, win, domainMatcher);\n                if (function(parent, child) {\n                    var actualParent = getAncestor(child);\n                    if (actualParent) return actualParent === parent;\n                    if (child === parent) return !1;\n                    if (getTop(child) === child) return !1;\n                    for (var _i15 = 0, _getFrames8 = getFrames(parent); _i15 < _getFrames8.length; _i15++) if (_getFrames8[_i15] === child) return !0;\n                    return !1;\n                }(window, win)) return awaitWindowHello(win, childTimeout);\n            })).then((function(_temp) {\n                return function(win, targetDomain, actualDomain, _ref) {\n                    var send = _ref.send;\n                    return promise_ZalgoPromise.try((function() {\n                        return \"string\" == typeof targetDomain ? targetDomain : promise_ZalgoPromise.try((function() {\n                            return actualDomain || sayHello(win, {\n                                send: send\n                            }).then((function(_ref2) {\n                                return _ref2.domain;\n                            }));\n                        })).then((function(normalizedDomain) {\n                            if (!matchDomain(targetDomain, targetDomain)) throw new Error(\"Domain \" + stringify(targetDomain) + \" does not match \" + stringify(targetDomain));\n                            return normalizedDomain;\n                        }));\n                    }));\n                }(win, domainMatcher, (void 0 === _temp ? {} : _temp).domain, {\n                    send: send\n                });\n            })).then((function(targetDomain) {\n                var domain = targetDomain;\n                var logName = \"postrobot_method\" === name && data && \"string\" == typeof data.name ? data.name + \"()\" : name;\n                var promise = new promise_ZalgoPromise;\n                var hash = name + \"_\" + uniqueID();\n                if (!fireAndForget) {\n                    var responseListener = {\n                        name: name,\n                        win: win,\n                        domain: domain,\n                        promise: promise\n                    };\n                    !function(hash, listener) {\n                        globalStore(\"responseListeners\").set(hash, listener);\n                    }(hash, responseListener);\n                    var reqPromises = windowStore(\"requestPromises\").getOrSet(win, (function() {\n                        return [];\n                    }));\n                    reqPromises.push(promise);\n                    promise.catch((function() {\n                        !function(hash) {\n                            globalStore(\"erroredResponseListeners\").set(hash, !0);\n                        }(hash);\n                        deleteResponseListener(hash);\n                    }));\n                    var totalAckTimeout = function(win) {\n                        return windowStore(\"knownWindows\").get(win, !1);\n                    }(win) ? 1e4 : 2e3;\n                    var totalResTimeout = responseTimeout;\n                    var ackTimeout = totalAckTimeout;\n                    var resTimeout = totalResTimeout;\n                    var interval = safeInterval((function() {\n                        if (isWindowClosed(win)) return promise.reject(new Error(\"Window closed for \" + name + \" before \" + (responseListener.ack ? \"response\" : \"ack\")));\n                        if (responseListener.cancelled) return promise.reject(new Error(\"Response listener was cancelled for \" + name));\n                        ackTimeout = Math.max(ackTimeout - 500, 0);\n                        -1 !== resTimeout && (resTimeout = Math.max(resTimeout - 500, 0));\n                        return responseListener.ack || 0 !== ackTimeout ? 0 === resTimeout ? promise.reject(new Error(\"No response for postMessage \" + logName + \" in \" + getDomain() + \" in \" + totalResTimeout + \"ms\")) : void 0 : promise.reject(new Error(\"No ack for postMessage \" + logName + \" in \" + getDomain() + \" in \" + totalAckTimeout + \"ms\"));\n                    }), 500);\n                    promise.finally((function() {\n                        interval.cancel();\n                        reqPromises.splice(reqPromises.indexOf(promise, 1));\n                    })).catch(src_util_noop);\n                }\n                return send_sendMessage(win, domain, {\n                    id: uniqueID(),\n                    origin: getDomain(window),\n                    type: \"postrobot_message_request\",\n                    hash: hash,\n                    name: name,\n                    data: data,\n                    fireAndForget: fireAndForget\n                }, {\n                    on: on_on,\n                    send: send\n                }).then((function() {\n                    return fireAndForget ? promise.resolve() : promise;\n                }), (function(err) {\n                    throw new Error(\"Send request message failed for \" + logName + \" in \" + getDomain() + \"\\n\\n\" + stringifyError(err));\n                }));\n            }));\n        };\n        function setup_serializeMessage(destination, domain, obj) {\n            return serializeMessage(destination, domain, obj, {\n                on: on_on,\n                send: send_send\n            });\n        }\n        function setup_deserializeMessage(source, origin, message) {\n            return deserializeMessage(source, origin, message, {\n                on: on_on,\n                send: send_send\n            });\n        }\n        function setup_toProxyWindow(win) {\n            return window_ProxyWindow.toProxyWindow(win, {\n                send: send_send\n            });\n        }\n        function cleanUpWindow(win) {\n            for (var _i2 = 0, _requestPromises$get2 = windowStore(\"requestPromises\").get(win, []); _i2 < _requestPromises$get2.length; _i2++) _requestPromises$get2[_i2].reject(new Error(\"Window \" + (isWindowClosed(win) ? \"closed\" : \"cleaned up\") + \" before response\")).catch(src_util_noop);\n        }\n        var src_bridge;\n        src_bridge = {\n            setupBridge: setupBridge,\n            openBridge: function(url, domain) {\n                var bridges = globalStore(\"bridges\");\n                var bridgeFrames = globalStore(\"bridgeFrames\");\n                domain = domain || getDomainFromUrl(url);\n                return bridges.getOrSet(domain, (function() {\n                    return promise_ZalgoPromise.try((function() {\n                        if (getDomain() === domain) throw new Error(\"Can not open bridge on the same domain as current domain: \" + domain);\n                        var name = getBridgeName(domain);\n                        if (getFrameByName(window, name)) throw new Error(\"Frame with name \" + name + \" already exists on page\");\n                        var iframe = function(name, url) {\n                            var iframe = document.createElement(\"iframe\");\n                            iframe.setAttribute(\"name\", name);\n                            iframe.setAttribute(\"id\", name);\n                            iframe.setAttribute(\"style\", \"display: none; margin: 0; padding: 0; border: 0px none; overflow: hidden;\");\n                            iframe.setAttribute(\"frameborder\", \"0\");\n                            iframe.setAttribute(\"border\", \"0\");\n                            iframe.setAttribute(\"scrolling\", \"no\");\n                            iframe.setAttribute(\"allowTransparency\", \"true\");\n                            iframe.setAttribute(\"tabindex\", \"-1\");\n                            iframe.setAttribute(\"hidden\", \"true\");\n                            iframe.setAttribute(\"title\", \"\");\n                            iframe.setAttribute(\"role\", \"presentation\");\n                            iframe.src = url;\n                            return iframe;\n                        }(name, url);\n                        bridgeFrames.set(domain, iframe);\n                        return documentBodyReady.then((function(body) {\n                            body.appendChild(iframe);\n                            var bridge = iframe.contentWindow;\n                            return new promise_ZalgoPromise((function(resolve, reject) {\n                                iframe.addEventListener(\"load\", resolve);\n                                iframe.addEventListener(\"error\", reject);\n                            })).then((function() {\n                                return awaitWindowHello(bridge, 5e3, \"Bridge \" + url);\n                            })).then((function() {\n                                return bridge;\n                            }));\n                        }));\n                    }));\n                }));\n            },\n            linkWindow: linkWindow,\n            linkUrl: function(win, url) {\n                linkWindow({\n                    win: win,\n                    domain: getDomainFromUrl(url)\n                });\n            },\n            isBridge: isBridge,\n            needsBridge: needsBridge,\n            needsBridgeForBrowser: needsBridgeForBrowser,\n            hasBridge: function(url, domain) {\n                return globalStore(\"bridges\").has(domain || getDomainFromUrl(url));\n            },\n            needsBridgeForWin: needsBridgeForWin,\n            needsBridgeForDomain: needsBridgeForDomain,\n            destroyBridges: function() {\n                var bridges = globalStore(\"bridges\");\n                var bridgeFrames = globalStore(\"bridgeFrames\");\n                for (var _i4 = 0, _bridgeFrames$keys2 = bridgeFrames.keys(); _i4 < _bridgeFrames$keys2.length; _i4++) {\n                    var frame = bridgeFrames.get(_bridgeFrames$keys2[_i4]);\n                    frame && frame.parentNode && frame.parentNode.removeChild(frame);\n                }\n                bridgeFrames.reset();\n                bridges.reset();\n            }\n        };\n        function lib_global_getGlobal(win) {\n            void 0 === win && (win = window);\n            if (!isSameDomain(win)) throw new Error(\"Can not get global for window on different domain\");\n            win.__zoid_9_0_78__ || (win.__zoid_9_0_78__ = {});\n            return win.__zoid_9_0_78__;\n        }\n        function getProxyObject(obj) {\n            return {\n                get: function() {\n                    var _this = this;\n                    return promise_ZalgoPromise.try((function() {\n                        if (_this.source && _this.source !== window) throw new Error(\"Can not call get on proxy object from a remote window\");\n                        return obj;\n                    }));\n                }\n            };\n        }\n        var PROP_TYPE = {\n            STRING: \"string\",\n            OBJECT: \"object\",\n            FUNCTION: \"function\",\n            BOOLEAN: \"boolean\",\n            NUMBER: \"number\",\n            ARRAY: \"array\"\n        };\n        var PROP_SERIALIZATION = {\n            JSON: \"json\",\n            DOTIFY: \"dotify\",\n            BASE64: \"base64\"\n        };\n        var CONTEXT = WINDOW_TYPE;\n        var EVENT = {\n            RENDER: \"zoid-render\",\n            RENDERED: \"zoid-rendered\",\n            DISPLAY: \"zoid-display\",\n            ERROR: \"zoid-error\",\n            CLOSE: \"zoid-close\",\n            DESTROY: \"zoid-destroy\",\n            PROPS: \"zoid-props\",\n            RESIZE: \"zoid-resize\",\n            FOCUS: \"zoid-focus\"\n        };\n        function normalizeChildProp(propsDef, props, key, value, helpers) {\n            if (!propsDef.hasOwnProperty(key)) return value;\n            var prop = propsDef[key];\n            return \"function\" == typeof prop.childDecorate ? prop.childDecorate({\n                value: value,\n                uid: helpers.uid,\n                tag: helpers.tag,\n                close: helpers.close,\n                focus: helpers.focus,\n                onError: helpers.onError,\n                onProps: helpers.onProps,\n                resize: helpers.resize,\n                getParent: helpers.getParent,\n                getParentDomain: helpers.getParentDomain,\n                show: helpers.show,\n                hide: helpers.hide,\n                export: helpers.export,\n                getSiblings: helpers.getSiblings\n            }) : value;\n        }\n        function parseChildWindowName(windowName) {\n            return inlineMemoize(parseChildWindowName, (function() {\n                if (!windowName) throw new Error(\"No window name\");\n                var _windowName$split = windowName.split(\"__\"), zoidcomp = _windowName$split[1], name = _windowName$split[2], encodedPayload = _windowName$split[3];\n                if (\"zoid\" !== zoidcomp) throw new Error(\"Window not rendered by zoid - got \" + zoidcomp);\n                if (!name) throw new Error(\"Expected component name\");\n                if (!encodedPayload) throw new Error(\"Expected encoded payload\");\n                try {\n                    return JSON.parse(function(str) {\n                        if (\"function\" == typeof atob) return decodeURIComponent([].map.call(atob(str), (function(c) {\n                            return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\n                        })).join(\"\"));\n                        if (\"undefined\" != typeof Buffer) return Buffer.from(str, \"base64\").toString(\"utf8\");\n                        throw new Error(\"Can not find window.atob or Buffer\");\n                    }(encodedPayload));\n                } catch (err) {\n                    throw new Error(\"Can not decode window name payload: \" + encodedPayload + \": \" + stringifyError(err));\n                }\n            }), [ windowName ]);\n        }\n        function getChildPayload() {\n            try {\n                return parseChildWindowName(window.name);\n            } catch (err) {}\n        }\n        function child_focus() {\n            return promise_ZalgoPromise.try((function() {\n                window.focus();\n            }));\n        }\n        function child_destroy() {\n            return promise_ZalgoPromise.try((function() {\n                window.close();\n            }));\n        }\n        var props_defaultNoop = function() {\n            return src_util_noop;\n        };\n        var props_decorateOnce = function(_ref) {\n            return once(_ref.value);\n        };\n        function eachProp(props, propsDef, handler) {\n            for (var _i2 = 0, _Object$keys2 = Object.keys(props); _i2 < _Object$keys2.length; _i2++) {\n                var key = _Object$keys2[_i2];\n                var propDef = propsDef[key];\n                propDef && handler(key, propDef, props[key]);\n            }\n        }\n        function serializeProps(propsDef, props, method) {\n            var params = {};\n            return promise_ZalgoPromise.all(function(props, propsDef, handler) {\n                var results = [];\n                eachProp(props, propsDef, (function(key, propDef, value) {\n                    var result = function(key, propDef, value) {\n                        return promise_ZalgoPromise.resolve().then((function() {\n                            var _METHOD$GET$METHOD$PO, _METHOD$GET$METHOD$PO2;\n                            if (null != value) {\n                                var getParam = (_METHOD$GET$METHOD$PO = {}, _METHOD$GET$METHOD$PO.get = propDef.queryParam, \n                                _METHOD$GET$METHOD$PO.post = propDef.bodyParam, _METHOD$GET$METHOD$PO)[method];\n                                var getValue = (_METHOD$GET$METHOD$PO2 = {}, _METHOD$GET$METHOD$PO2.get = propDef.queryValue, \n                                _METHOD$GET$METHOD$PO2.post = propDef.bodyValue, _METHOD$GET$METHOD$PO2)[method];\n                                if (getParam) return promise_ZalgoPromise.hash({\n                                    finalParam: promise_ZalgoPromise.try((function() {\n                                        return \"function\" == typeof getParam ? getParam({\n                                            value: value\n                                        }) : \"string\" == typeof getParam ? getParam : key;\n                                    })),\n                                    finalValue: promise_ZalgoPromise.try((function() {\n                                        return \"function\" == typeof getValue && isDefined(value) ? getValue({\n                                            value: value\n                                        }) : value;\n                                    }))\n                                }).then((function(_ref) {\n                                    var finalParam = _ref.finalParam, finalValue = _ref.finalValue;\n                                    var result;\n                                    if (\"boolean\" == typeof finalValue) result = finalValue.toString(); else if (\"string\" == typeof finalValue) result = finalValue.toString(); else if (\"object\" == typeof finalValue && null !== finalValue) {\n                                        if (propDef.serialization === PROP_SERIALIZATION.JSON) result = JSON.stringify(finalValue); else if (propDef.serialization === PROP_SERIALIZATION.BASE64) result = base64encode(JSON.stringify(finalValue)); else if (propDef.serialization === PROP_SERIALIZATION.DOTIFY || !propDef.serialization) {\n                                            result = function dotify(obj, prefix, newobj) {\n                                                void 0 === prefix && (prefix = \"\");\n                                                void 0 === newobj && (newobj = {});\n                                                prefix = prefix ? prefix + \".\" : prefix;\n                                                for (var key in obj) obj.hasOwnProperty(key) && null != obj[key] && \"function\" != typeof obj[key] && (obj[key] && Array.isArray(obj[key]) && obj[key].length && obj[key].every((function(val) {\n                                                    return \"object\" != typeof val;\n                                                })) ? newobj[\"\" + prefix + key + \"[]\"] = obj[key].join(\",\") : obj[key] && \"object\" == typeof obj[key] ? newobj = dotify(obj[key], \"\" + prefix + key, newobj) : newobj[\"\" + prefix + key] = obj[key].toString());\n                                                return newobj;\n                                            }(finalValue, key);\n                                            for (var _i10 = 0, _Object$keys6 = Object.keys(result); _i10 < _Object$keys6.length; _i10++) {\n                                                var dotkey = _Object$keys6[_i10];\n                                                params[dotkey] = result[dotkey];\n                                            }\n                                            return;\n                                        }\n                                    } else \"number\" == typeof finalValue && (result = finalValue.toString());\n                                    params[finalParam] = result;\n                                }));\n                            }\n                        }));\n                    }(key, propDef, value);\n                    results.push(result);\n                }));\n                return results;\n            }(props, propsDef)).then((function() {\n                return params;\n            }));\n        }\n        function parentComponent(_ref) {\n            var uid = _ref.uid, options = _ref.options, _ref$overrides = _ref.overrides, overrides = void 0 === _ref$overrides ? {} : _ref$overrides, _ref$parentWin = _ref.parentWin, parentWin = void 0 === _ref$parentWin ? window : _ref$parentWin;\n            var propsDef = options.propsDef, containerTemplate = options.containerTemplate, prerenderTemplate = options.prerenderTemplate, tag = options.tag, name = options.name, attributes = options.attributes, dimensions = options.dimensions, autoResize = options.autoResize, url = options.url, domainMatch = options.domain, xports = options.exports;\n            var initPromise = new promise_ZalgoPromise;\n            var handledErrors = [];\n            var clean = cleanup();\n            var state = {};\n            var internalState = {\n                visible: !0\n            };\n            var event = overrides.event ? overrides.event : (triggered = {}, handlers = {}, \n            emitter = {\n                on: function(eventName, handler) {\n                    var handlerList = handlers[eventName] = handlers[eventName] || [];\n                    handlerList.push(handler);\n                    var cancelled = !1;\n                    return {\n                        cancel: function() {\n                            if (!cancelled) {\n                                cancelled = !0;\n                                handlerList.splice(handlerList.indexOf(handler), 1);\n                            }\n                        }\n                    };\n                },\n                once: function(eventName, handler) {\n                    var listener = emitter.on(eventName, (function() {\n                        listener.cancel();\n                        handler();\n                    }));\n                    return listener;\n                },\n                trigger: function(eventName) {\n                    for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) args[_key3 - 1] = arguments[_key3];\n                    var handlerList = handlers[eventName];\n                    var promises = [];\n                    if (handlerList) {\n                        var _loop = function(_i2) {\n                            var handler = handlerList[_i2];\n                            promises.push(promise_ZalgoPromise.try((function() {\n                                return handler.apply(void 0, args);\n                            })));\n                        };\n                        for (var _i2 = 0; _i2 < handlerList.length; _i2++) _loop(_i2);\n                    }\n                    return promise_ZalgoPromise.all(promises).then(src_util_noop);\n                },\n                triggerOnce: function(eventName) {\n                    if (triggered[eventName]) return promise_ZalgoPromise.resolve();\n                    triggered[eventName] = !0;\n                    for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) args[_key4 - 1] = arguments[_key4];\n                    return emitter.trigger.apply(emitter, [ eventName ].concat(args));\n                },\n                reset: function() {\n                    handlers = {};\n                }\n            });\n            var triggered, handlers, emitter;\n            var props = overrides.props ? overrides.props : {};\n            var currentProxyWin;\n            var currentProxyContainer;\n            var childComponent;\n            var onErrorOverride = overrides.onError;\n            var getProxyContainerOverride = overrides.getProxyContainer;\n            var showOverride = overrides.show;\n            var hideOverride = overrides.hide;\n            var closeOverride = overrides.close;\n            var renderContainerOverride = overrides.renderContainer;\n            var getProxyWindowOverride = overrides.getProxyWindow;\n            var setProxyWinOverride = overrides.setProxyWin;\n            var openFrameOverride = overrides.openFrame;\n            var openPrerenderFrameOverride = overrides.openPrerenderFrame;\n            var prerenderOverride = overrides.prerender;\n            var openOverride = overrides.open;\n            var openPrerenderOverride = overrides.openPrerender;\n            var watchForUnloadOverride = overrides.watchForUnload;\n            var getInternalStateOverride = overrides.getInternalState;\n            var setInternalStateOverride = overrides.setInternalState;\n            var getDimensions = function() {\n                return \"function\" == typeof dimensions ? dimensions({\n                    props: props\n                }) : dimensions;\n            };\n            var resolveInitPromise = function() {\n                return promise_ZalgoPromise.try((function() {\n                    return overrides.resolveInitPromise ? overrides.resolveInitPromise() : initPromise.resolve();\n                }));\n            };\n            var rejectInitPromise = function(err) {\n                return promise_ZalgoPromise.try((function() {\n                    return overrides.rejectInitPromise ? overrides.rejectInitPromise(err) : initPromise.reject(err);\n                }));\n            };\n            var getPropsForChild = function(domain) {\n                var result = {};\n                for (var _i2 = 0, _Object$keys2 = Object.keys(props); _i2 < _Object$keys2.length; _i2++) {\n                    var key = _Object$keys2[_i2];\n                    var prop = propsDef[key];\n                    prop && !1 === prop.sendToChild || prop && prop.sameDomain && !matchDomain(domain, getDomain(window)) || (result[key] = props[key]);\n                }\n                return promise_ZalgoPromise.hash(result);\n            };\n            var getInternalState = function() {\n                return promise_ZalgoPromise.try((function() {\n                    return getInternalStateOverride ? getInternalStateOverride() : internalState;\n                }));\n            };\n            var setInternalState = function(newInternalState) {\n                return promise_ZalgoPromise.try((function() {\n                    return setInternalStateOverride ? setInternalStateOverride(newInternalState) : internalState = _extends({}, internalState, newInternalState);\n                }));\n            };\n            var getProxyWindow = function() {\n                return getProxyWindowOverride ? getProxyWindowOverride() : promise_ZalgoPromise.try((function() {\n                    var windowProp = props.window;\n                    if (windowProp) {\n                        var _proxyWin = setup_toProxyWindow(windowProp);\n                        clean.register((function() {\n                            return windowProp.close();\n                        }));\n                        return _proxyWin;\n                    }\n                    return new window_ProxyWindow({\n                        send: send_send\n                    });\n                }));\n            };\n            var getProxyContainer = function(container) {\n                return getProxyContainerOverride ? getProxyContainerOverride(container) : promise_ZalgoPromise.try((function() {\n                    return elementReady(container);\n                })).then((function(containerElement) {\n                    isShadowElement(containerElement) && (containerElement = function insertShadowSlot(element) {\n                        var shadowHost = function(element) {\n                            var shadowRoot = function(element) {\n                                for (;element.parentNode; ) element = element.parentNode;\n                                if (isShadowElement(element)) return element;\n                            }(element);\n                            if (shadowRoot && shadowRoot.host) return shadowRoot.host;\n                        }(element);\n                        if (!shadowHost) throw new Error(\"Element is not in shadow dom\");\n                        var slotName = \"shadow-slot-\" + uniqueID();\n                        var slot = document.createElement(\"slot\");\n                        slot.setAttribute(\"name\", slotName);\n                        element.appendChild(slot);\n                        var slotProvider = document.createElement(\"div\");\n                        slotProvider.setAttribute(\"slot\", slotName);\n                        shadowHost.appendChild(slotProvider);\n                        return isShadowElement(shadowHost) ? insertShadowSlot(slotProvider) : slotProvider;\n                    }(containerElement));\n                    return getProxyObject(containerElement);\n                }));\n            };\n            var setProxyWin = function(proxyWin) {\n                return setProxyWinOverride ? setProxyWinOverride(proxyWin) : promise_ZalgoPromise.try((function() {\n                    currentProxyWin = proxyWin;\n                }));\n            };\n            var show = function() {\n                return showOverride ? showOverride() : promise_ZalgoPromise.hash({\n                    setState: setInternalState({\n                        visible: !0\n                    }),\n                    showElement: currentProxyContainer ? currentProxyContainer.get().then(showElement) : null\n                }).then(src_util_noop);\n            };\n            var hide = function() {\n                return hideOverride ? hideOverride() : promise_ZalgoPromise.hash({\n                    setState: setInternalState({\n                        visible: !1\n                    }),\n                    showElement: currentProxyContainer ? currentProxyContainer.get().then(hideElement) : null\n                }).then(src_util_noop);\n            };\n            var getUrl = function() {\n                return \"function\" == typeof url ? url({\n                    props: props\n                }) : url;\n            };\n            var getAttributes = function() {\n                return \"function\" == typeof attributes ? attributes({\n                    props: props\n                }) : attributes;\n            };\n            var getChildDomain = function() {\n                return domainMatch && \"string\" == typeof domainMatch ? domainMatch : getDomainFromUrl(getUrl());\n            };\n            var getDomainMatcher = function() {\n                return domainMatch && util_isRegex(domainMatch) ? domainMatch : getChildDomain();\n            };\n            var openFrame = function(context, _ref2) {\n                var windowName = _ref2.windowName;\n                return openFrameOverride ? openFrameOverride(context, {\n                    windowName: windowName\n                }) : promise_ZalgoPromise.try((function() {\n                    if (context === CONTEXT.IFRAME) return getProxyObject(dom_iframe({\n                        attributes: _extends({\n                            name: windowName,\n                            title: name\n                        }, getAttributes().iframe)\n                    }));\n                }));\n            };\n            var openPrerenderFrame = function(context) {\n                return openPrerenderFrameOverride ? openPrerenderFrameOverride(context) : promise_ZalgoPromise.try((function() {\n                    if (context === CONTEXT.IFRAME) return getProxyObject(dom_iframe({\n                        attributes: _extends({\n                            name: \"__zoid_prerender_frame__\" + name + \"_\" + uniqueID() + \"__\",\n                            title: \"prerender__\" + name\n                        }, getAttributes().iframe)\n                    }));\n                }));\n            };\n            var openPrerender = function(context, proxyWin, proxyPrerenderFrame) {\n                return openPrerenderOverride ? openPrerenderOverride(context, proxyWin, proxyPrerenderFrame) : promise_ZalgoPromise.try((function() {\n                    if (context === CONTEXT.IFRAME) {\n                        if (!proxyPrerenderFrame) throw new Error(\"Expected proxy frame to be passed\");\n                        return proxyPrerenderFrame.get().then((function(prerenderFrame) {\n                            clean.register((function() {\n                                return destroyElement(prerenderFrame);\n                            }));\n                            return awaitFrameWindow(prerenderFrame).then((function(prerenderFrameWindow) {\n                                return assertSameDomain(prerenderFrameWindow);\n                            })).then((function(win) {\n                                return setup_toProxyWindow(win);\n                            }));\n                        }));\n                    }\n                    if (context === CONTEXT.POPUP) return proxyWin;\n                    throw new Error(\"No render context available for \" + context);\n                }));\n            };\n            var focus = function() {\n                return promise_ZalgoPromise.try((function() {\n                    if (currentProxyWin) return promise_ZalgoPromise.all([ event.trigger(EVENT.FOCUS), currentProxyWin.focus() ]).then(src_util_noop);\n                }));\n            };\n            var getWindowRef = function(target, domain, context) {\n                if (domain === getDomain(window)) {\n                    var global = lib_global_getGlobal(window);\n                    global.windows = global.windows || {};\n                    global.windows[uid] = window;\n                    clean.register((function() {\n                        delete global.windows[uid];\n                    }));\n                    return {\n                        type: \"global\",\n                        uid: uid\n                    };\n                }\n                return context === CONTEXT.POPUP ? {\n                    type: \"opener\"\n                } : {\n                    type: \"parent\",\n                    distance: getDistanceFromTop(window)\n                };\n            };\n            var initChild = function(childExports) {\n                return promise_ZalgoPromise.try((function() {\n                    childComponent = childExports;\n                    resolveInitPromise();\n                    clean.register((function() {\n                        return childExports.close.fireAndForget().catch(src_util_noop);\n                    }));\n                }));\n            };\n            var resize = function(_ref3) {\n                var width = _ref3.width, height = _ref3.height;\n                return promise_ZalgoPromise.try((function() {\n                    event.trigger(EVENT.RESIZE, {\n                        width: width,\n                        height: height\n                    });\n                }));\n            };\n            var destroy = function(err) {\n                return promise_ZalgoPromise.try((function() {\n                    return event.trigger(EVENT.DESTROY);\n                })).catch(src_util_noop).then((function() {\n                    return clean.all(err);\n                })).then((function() {\n                    initPromise.asyncReject(err || new Error(\"Component destroyed\"));\n                }));\n            };\n            var close = memoize((function(err) {\n                return promise_ZalgoPromise.try((function() {\n                    if (closeOverride) {\n                        if (isWindowClosed(closeOverride.__source__)) return;\n                        return closeOverride();\n                    }\n                    return promise_ZalgoPromise.try((function() {\n                        return event.trigger(EVENT.CLOSE);\n                    })).then((function() {\n                        return destroy(err || new Error(\"Component closed\"));\n                    }));\n                }));\n            }));\n            var open = function(context, _ref4) {\n                var proxyWin = _ref4.proxyWin, proxyFrame = _ref4.proxyFrame, windowName = _ref4.windowName;\n                return openOverride ? openOverride(context, {\n                    proxyWin: proxyWin,\n                    proxyFrame: proxyFrame,\n                    windowName: windowName\n                }) : promise_ZalgoPromise.try((function() {\n                    if (context === CONTEXT.IFRAME) {\n                        if (!proxyFrame) throw new Error(\"Expected proxy frame to be passed\");\n                        return proxyFrame.get().then((function(frame) {\n                            return awaitFrameWindow(frame).then((function(win) {\n                                clean.register((function() {\n                                    return destroyElement(frame);\n                                }));\n                                clean.register((function() {\n                                    return cleanUpWindow(win);\n                                }));\n                                return win;\n                            }));\n                        }));\n                    }\n                    if (context === CONTEXT.POPUP) {\n                        var _getDimensions = getDimensions(), _getDimensions$width = _getDimensions.width, width = void 0 === _getDimensions$width ? \"300px\" : _getDimensions$width, _getDimensions$height = _getDimensions.height, height = void 0 === _getDimensions$height ? \"150px\" : _getDimensions$height;\n                        width = normalizeDimension(width, window.outerWidth);\n                        height = normalizeDimension(height, window.outerWidth);\n                        var win = function(url, options) {\n                            var width = (options = options || {}).width, height = options.height;\n                            var top = 0;\n                            var left = 0;\n                            width && (window.outerWidth ? left = Math.round((window.outerWidth - width) / 2) + window.screenX : window.screen.width && (left = Math.round((window.screen.width - width) / 2)));\n                            height && (window.outerHeight ? top = Math.round((window.outerHeight - height) / 2) + window.screenY : window.screen.height && (top = Math.round((window.screen.height - height) / 2)));\n                            width && height && (options = _extends({\n                                top: top,\n                                left: left,\n                                width: width,\n                                height: height,\n                                status: 1,\n                                toolbar: 0,\n                                menubar: 0,\n                                resizable: 1,\n                                scrollbars: 1\n                            }, options));\n                            var name = options.name || \"\";\n                            delete options.name;\n                            var params = Object.keys(options).map((function(key) {\n                                if (null != options[key]) return key + \"=\" + stringify(options[key]);\n                            })).filter(Boolean).join(\",\");\n                            var win;\n                            try {\n                                win = window.open(\"\", name, params);\n                            } catch (err) {\n                                throw new dom_PopupOpenError(\"Can not open popup window - \" + (err.stack || err.message));\n                            }\n                            if (isWindowClosed(win)) {\n                                var err;\n                                throw new dom_PopupOpenError(\"Can not open popup window - blocked\");\n                            }\n                            window.addEventListener(\"unload\", (function() {\n                                return win.close();\n                            }));\n                            return win;\n                        }(0, _extends({\n                            name: windowName,\n                            width: width,\n                            height: height\n                        }, getAttributes().popup));\n                        clean.register((function() {\n                            return closeWindow(win);\n                        }));\n                        clean.register((function() {\n                            return cleanUpWindow(win);\n                        }));\n                        return win;\n                    }\n                    throw new Error(\"No render context available for \" + context);\n                })).then((function(win) {\n                    proxyWin.setWindow(win, {\n                        send: send_send\n                    });\n                    return proxyWin.setName(windowName).then((function() {\n                        return proxyWin;\n                    }));\n                }));\n            };\n            var watchForUnload = function() {\n                return promise_ZalgoPromise.try((function() {\n                    var unloadWindowListener = addEventListener(window, \"unload\", once((function() {\n                        destroy(new Error(\"Window navigated away\"));\n                    })));\n                    var closeParentWindowListener = onCloseWindow(parentWin, destroy, 3e3);\n                    clean.register(closeParentWindowListener.cancel);\n                    clean.register(unloadWindowListener.cancel);\n                    if (watchForUnloadOverride) return watchForUnloadOverride();\n                }));\n            };\n            var checkWindowClose = function(proxyWin) {\n                var closed = !1;\n                return proxyWin.isClosed().then((function(isClosed) {\n                    if (isClosed) {\n                        closed = !0;\n                        return close(new Error(\"Detected component window close\"));\n                    }\n                    return promise_ZalgoPromise.delay(200).then((function() {\n                        return proxyWin.isClosed();\n                    })).then((function(secondIsClosed) {\n                        if (secondIsClosed) {\n                            closed = !0;\n                            return close(new Error(\"Detected component window close\"));\n                        }\n                    }));\n                })).then((function() {\n                    return closed;\n                }));\n            };\n            var onError = function(err) {\n                return onErrorOverride ? onErrorOverride(err) : promise_ZalgoPromise.try((function() {\n                    if (-1 === handledErrors.indexOf(err)) {\n                        handledErrors.push(err);\n                        initPromise.asyncReject(err);\n                        return event.trigger(EVENT.ERROR, err);\n                    }\n                }));\n            };\n            var exportsPromise = new promise_ZalgoPromise;\n            var xport = function(actualExports) {\n                return promise_ZalgoPromise.try((function() {\n                    exportsPromise.resolve(actualExports);\n                }));\n            };\n            initChild.onError = onError;\n            var renderTemplate = function(renderer, _ref7) {\n                return renderer({\n                    uid: uid,\n                    container: _ref7.container,\n                    context: _ref7.context,\n                    doc: _ref7.doc,\n                    frame: _ref7.frame,\n                    prerenderFrame: _ref7.prerenderFrame,\n                    focus: focus,\n                    close: close,\n                    state: state,\n                    props: props,\n                    tag: tag,\n                    dimensions: getDimensions(),\n                    event: event\n                });\n            };\n            var prerender = function(proxyPrerenderWin, _ref8) {\n                var context = _ref8.context;\n                return prerenderOverride ? prerenderOverride(proxyPrerenderWin, {\n                    context: context\n                }) : promise_ZalgoPromise.try((function() {\n                    if (prerenderTemplate) {\n                        var prerenderWindow = proxyPrerenderWin.getWindow();\n                        if (prerenderWindow && isSameDomain(prerenderWindow) && function(win) {\n                            try {\n                                if (!win.location.href) return !0;\n                                if (\"about:blank\" === win.location.href) return !0;\n                            } catch (err) {}\n                            return !1;\n                        }(prerenderWindow)) {\n                            var doc = (prerenderWindow = assertSameDomain(prerenderWindow)).document;\n                            var el = renderTemplate(prerenderTemplate, {\n                                context: context,\n                                doc: doc\n                            });\n                            if (el) {\n                                if (el.ownerDocument !== doc) throw new Error(\"Expected prerender template to have been created with document from child window\");\n                                !function(win, el) {\n                                    var tag = el.tagName.toLowerCase();\n                                    if (\"html\" !== tag) throw new Error(\"Expected element to be html, got \" + tag);\n                                    var documentElement = win.document.documentElement;\n                                    for (var _i6 = 0, _arrayFrom2 = arrayFrom(documentElement.children); _i6 < _arrayFrom2.length; _i6++) documentElement.removeChild(_arrayFrom2[_i6]);\n                                    for (var _i8 = 0, _arrayFrom4 = arrayFrom(el.children); _i8 < _arrayFrom4.length; _i8++) documentElement.appendChild(_arrayFrom4[_i8]);\n                                }(prerenderWindow, el);\n                                var _autoResize$width = autoResize.width, width = void 0 !== _autoResize$width && _autoResize$width, _autoResize$height = autoResize.height, height = void 0 !== _autoResize$height && _autoResize$height, _autoResize$element = autoResize.element, element = void 0 === _autoResize$element ? \"body\" : _autoResize$element;\n                                if ((element = getElementSafe(element, doc)) && (width || height)) {\n                                    var prerenderResizeListener = onResize(element, (function(_ref9) {\n                                        resize({\n                                            width: width ? _ref9.width : void 0,\n                                            height: height ? _ref9.height : void 0\n                                        });\n                                    }), {\n                                        width: width,\n                                        height: height,\n                                        win: prerenderWindow\n                                    });\n                                    event.on(EVENT.RENDERED, prerenderResizeListener.cancel);\n                                }\n                            }\n                        }\n                    }\n                }));\n            };\n            var renderContainer = function(proxyContainer, _ref10) {\n                var proxyFrame = _ref10.proxyFrame, proxyPrerenderFrame = _ref10.proxyPrerenderFrame, context = _ref10.context, rerender = _ref10.rerender;\n                return renderContainerOverride ? renderContainerOverride(proxyContainer, {\n                    proxyFrame: proxyFrame,\n                    proxyPrerenderFrame: proxyPrerenderFrame,\n                    context: context,\n                    rerender: rerender\n                }) : promise_ZalgoPromise.hash({\n                    container: proxyContainer.get(),\n                    frame: proxyFrame ? proxyFrame.get() : null,\n                    prerenderFrame: proxyPrerenderFrame ? proxyPrerenderFrame.get() : null,\n                    internalState: getInternalState()\n                }).then((function(_ref11) {\n                    var container = _ref11.container, visible = _ref11.internalState.visible;\n                    var innerContainer = renderTemplate(containerTemplate, {\n                        context: context,\n                        container: container,\n                        frame: _ref11.frame,\n                        prerenderFrame: _ref11.prerenderFrame,\n                        doc: document\n                    });\n                    if (innerContainer) {\n                        visible || hideElement(innerContainer);\n                        appendChild(container, innerContainer);\n                        var containerWatcher = function(element, handler) {\n                            handler = once(handler);\n                            var cancelled = !1;\n                            var mutationObservers = [];\n                            var interval;\n                            var sacrificialFrame;\n                            var sacrificialFrameWin;\n                            var cancel = function() {\n                                cancelled = !0;\n                                for (var _i18 = 0; _i18 < mutationObservers.length; _i18++) mutationObservers[_i18].disconnect();\n                                interval && interval.cancel();\n                                sacrificialFrameWin && sacrificialFrameWin.removeEventListener(\"unload\", elementClosed);\n                                sacrificialFrame && destroyElement(sacrificialFrame);\n                            };\n                            var elementClosed = function() {\n                                if (!cancelled) {\n                                    handler();\n                                    cancel();\n                                }\n                            };\n                            if (isElementClosed(element)) {\n                                elementClosed();\n                                return {\n                                    cancel: cancel\n                                };\n                            }\n                            if (window.MutationObserver) {\n                                var mutationElement = element.parentElement;\n                                for (;mutationElement; ) {\n                                    var mutationObserver = new window.MutationObserver((function() {\n                                        isElementClosed(element) && elementClosed();\n                                    }));\n                                    mutationObserver.observe(mutationElement, {\n                                        childList: !0\n                                    });\n                                    mutationObservers.push(mutationObserver);\n                                    mutationElement = mutationElement.parentElement;\n                                }\n                            }\n                            (sacrificialFrame = document.createElement(\"iframe\")).setAttribute(\"name\", \"__detect_close_\" + uniqueID() + \"__\");\n                            sacrificialFrame.style.display = \"none\";\n                            awaitFrameWindow(sacrificialFrame).then((function(frameWin) {\n                                (sacrificialFrameWin = assertSameDomain(frameWin)).addEventListener(\"unload\", elementClosed);\n                            }));\n                            element.appendChild(sacrificialFrame);\n                            interval = safeInterval((function() {\n                                isElementClosed(element) && elementClosed();\n                            }), 1e3);\n                            return {\n                                cancel: cancel\n                            };\n                        }(innerContainer, (function() {\n                            var removeError = new Error(\"Detected container element removed from DOM\");\n                            return promise_ZalgoPromise.delay(1).then((function() {\n                                if (!isElementClosed(innerContainer)) {\n                                    clean.all(removeError);\n                                    return rerender().then(resolveInitPromise, rejectInitPromise);\n                                }\n                                close(removeError);\n                            }));\n                        }));\n                        clean.register((function() {\n                            return containerWatcher.cancel();\n                        }));\n                        clean.register((function() {\n                            return destroyElement(innerContainer);\n                        }));\n                        return currentProxyContainer = getProxyObject(innerContainer);\n                    }\n                }));\n            };\n            var getHelpers = function() {\n                return {\n                    state: state,\n                    event: event,\n                    close: close,\n                    focus: focus,\n                    resize: resize,\n                    onError: onError,\n                    updateProps: updateProps,\n                    show: show,\n                    hide: hide\n                };\n            };\n            var setProps = function(newProps, isUpdate) {\n                void 0 === isUpdate && (isUpdate = !1);\n                var helpers = getHelpers();\n                !function(propsDef, props, inputProps, helpers, isUpdate) {\n                    void 0 === isUpdate && (isUpdate = !1);\n                    extend(props, inputProps = inputProps || {});\n                    var propNames = isUpdate ? [] : [].concat(Object.keys(propsDef));\n                    for (var _i2 = 0, _Object$keys2 = Object.keys(inputProps); _i2 < _Object$keys2.length; _i2++) {\n                        var key = _Object$keys2[_i2];\n                        -1 === propNames.indexOf(key) && propNames.push(key);\n                    }\n                    var aliases = [];\n                    var state = helpers.state, close = helpers.close, focus = helpers.focus, event = helpers.event, onError = helpers.onError;\n                    for (var _i4 = 0; _i4 < propNames.length; _i4++) {\n                        var _key = propNames[_i4];\n                        var propDef = propsDef[_key];\n                        var value = inputProps[_key];\n                        if (propDef) {\n                            var alias = propDef.alias;\n                            if (alias) {\n                                !isDefined(value) && isDefined(inputProps[alias]) && (value = inputProps[alias]);\n                                aliases.push(alias);\n                            }\n                            propDef.value && (value = propDef.value({\n                                props: props,\n                                state: state,\n                                close: close,\n                                focus: focus,\n                                event: event,\n                                onError: onError\n                            }));\n                            !isDefined(value) && propDef.default && (value = propDef.default({\n                                props: props,\n                                state: state,\n                                close: close,\n                                focus: focus,\n                                event: event,\n                                onError: onError\n                            }));\n                            if (isDefined(value) && (\"array\" === propDef.type ? !Array.isArray(value) : typeof value !== propDef.type)) throw new TypeError(\"Prop is not of type \" + propDef.type + \": \" + _key);\n                            props[_key] = value;\n                        }\n                    }\n                    for (var _i6 = 0; _i6 < aliases.length; _i6++) delete props[aliases[_i6]];\n                    eachProp(props, propsDef, (function(key, propDef, value) {\n                        if (propDef && isDefined(value) && propDef.decorate) {\n                            var decoratedValue = propDef.decorate({\n                                value: value,\n                                props: props,\n                                state: state,\n                                close: close,\n                                focus: focus,\n                                event: event,\n                                onError: onError\n                            });\n                            props[key] = decoratedValue;\n                        }\n                    }));\n                    for (var _i8 = 0, _Object$keys4 = Object.keys(propsDef); _i8 < _Object$keys4.length; _i8++) {\n                        var _key2 = _Object$keys4[_i8];\n                        if (!1 !== propsDef[_key2].required && !isDefined(props[_key2])) throw new Error('Expected prop \"' + _key2 + '\" to be defined');\n                    }\n                }(propsDef, props, newProps, helpers, isUpdate);\n            };\n            var updateProps = function(newProps) {\n                setProps(newProps, !0);\n                return initPromise.then((function() {\n                    var child = childComponent;\n                    var proxyWin = currentProxyWin;\n                    if (child && proxyWin) return getPropsForChild(getDomainMatcher()).then((function(childProps) {\n                        return child.updateProps(childProps).catch((function(err) {\n                            return checkWindowClose(proxyWin).then((function(closed) {\n                                if (!closed) throw err;\n                            }));\n                        }));\n                    }));\n                }));\n            };\n            return {\n                init: function() {\n                    !function() {\n                        event.on(EVENT.RENDER, (function() {\n                            return props.onRender();\n                        }));\n                        event.on(EVENT.DISPLAY, (function() {\n                            return props.onDisplay();\n                        }));\n                        event.on(EVENT.RENDERED, (function() {\n                            return props.onRendered();\n                        }));\n                        event.on(EVENT.CLOSE, (function() {\n                            return props.onClose();\n                        }));\n                        event.on(EVENT.DESTROY, (function() {\n                            return props.onDestroy();\n                        }));\n                        event.on(EVENT.RESIZE, (function() {\n                            return props.onResize();\n                        }));\n                        event.on(EVENT.FOCUS, (function() {\n                            return props.onFocus();\n                        }));\n                        event.on(EVENT.PROPS, (function(newProps) {\n                            return props.onProps(newProps);\n                        }));\n                        event.on(EVENT.ERROR, (function(err) {\n                            return props && props.onError ? props.onError(err) : rejectInitPromise(err).then((function() {\n                                setTimeout((function() {\n                                    throw err;\n                                }), 1);\n                            }));\n                        }));\n                        clean.register(event.reset);\n                    }();\n                },\n                render: function(_ref13) {\n                    var target = _ref13.target, container = _ref13.container, context = _ref13.context, rerender = _ref13.rerender;\n                    return promise_ZalgoPromise.try((function() {\n                        var domain = getDomainMatcher();\n                        var childDomain = getChildDomain();\n                        !function(target, domain, container) {\n                            if (target !== window) {\n                                if (!isSameTopWindow(window, target)) throw new Error(\"Can only renderTo an adjacent frame\");\n                                var origin = getDomain();\n                                if (!matchDomain(domain, origin) && !isSameDomain(target)) throw new Error(\"Can not render remotely to \" + domain.toString() + \" - can only render to \" + origin);\n                                if (container && \"string\" != typeof container) throw new Error(\"Container passed to renderTo must be a string selector, got \" + typeof container + \" }\");\n                            }\n                        }(target, domain, container);\n                        var delegatePromise = promise_ZalgoPromise.try((function() {\n                            if (target !== window) return function(context, target) {\n                                var delegateProps = {};\n                                for (var _i4 = 0, _Object$keys4 = Object.keys(props); _i4 < _Object$keys4.length; _i4++) {\n                                    var propName = _Object$keys4[_i4];\n                                    var propDef = propsDef[propName];\n                                    propDef && propDef.allowDelegate && (delegateProps[propName] = props[propName]);\n                                }\n                                var childOverridesPromise = send_send(target, \"zoid_delegate_\" + name, {\n                                    uid: uid,\n                                    overrides: {\n                                        props: delegateProps,\n                                        event: event,\n                                        close: close,\n                                        onError: onError,\n                                        getInternalState: getInternalState,\n                                        setInternalState: setInternalState,\n                                        resolveInitPromise: resolveInitPromise,\n                                        rejectInitPromise: rejectInitPromise\n                                    }\n                                }).then((function(_ref12) {\n                                    var parentComp = _ref12.data.parent;\n                                    clean.register((function(err) {\n                                        if (!isWindowClosed(target)) return parentComp.destroy(err);\n                                    }));\n                                    return parentComp.getDelegateOverrides();\n                                })).catch((function(err) {\n                                    throw new Error(\"Unable to delegate rendering. Possibly the component is not loaded in the target window.\\n\\n\" + stringifyError(err));\n                                }));\n                                getProxyContainerOverride = function() {\n                                    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];\n                                    return childOverridesPromise.then((function(childOverrides) {\n                                        return childOverrides.getProxyContainer.apply(childOverrides, args);\n                                    }));\n                                };\n                                renderContainerOverride = function() {\n                                    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) args[_key2] = arguments[_key2];\n                                    return childOverridesPromise.then((function(childOverrides) {\n                                        return childOverrides.renderContainer.apply(childOverrides, args);\n                                    }));\n                                };\n                                showOverride = function() {\n                                    for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) args[_key3] = arguments[_key3];\n                                    return childOverridesPromise.then((function(childOverrides) {\n                                        return childOverrides.show.apply(childOverrides, args);\n                                    }));\n                                };\n                                hideOverride = function() {\n                                    for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) args[_key4] = arguments[_key4];\n                                    return childOverridesPromise.then((function(childOverrides) {\n                                        return childOverrides.hide.apply(childOverrides, args);\n                                    }));\n                                };\n                                watchForUnloadOverride = function() {\n                                    for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) args[_key5] = arguments[_key5];\n                                    return childOverridesPromise.then((function(childOverrides) {\n                                        return childOverrides.watchForUnload.apply(childOverrides, args);\n                                    }));\n                                };\n                                if (context === CONTEXT.IFRAME) {\n                                    getProxyWindowOverride = function() {\n                                        for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) args[_key6] = arguments[_key6];\n                                        return childOverridesPromise.then((function(childOverrides) {\n                                            return childOverrides.getProxyWindow.apply(childOverrides, args);\n                                        }));\n                                    };\n                                    openFrameOverride = function() {\n                                        for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) args[_key7] = arguments[_key7];\n                                        return childOverridesPromise.then((function(childOverrides) {\n                                            return childOverrides.openFrame.apply(childOverrides, args);\n                                        }));\n                                    };\n                                    openPrerenderFrameOverride = function() {\n                                        for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) args[_key8] = arguments[_key8];\n                                        return childOverridesPromise.then((function(childOverrides) {\n                                            return childOverrides.openPrerenderFrame.apply(childOverrides, args);\n                                        }));\n                                    };\n                                    prerenderOverride = function() {\n                                        for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) args[_key9] = arguments[_key9];\n                                        return childOverridesPromise.then((function(childOverrides) {\n                                            return childOverrides.prerender.apply(childOverrides, args);\n                                        }));\n                                    };\n                                    openOverride = function() {\n                                        for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) args[_key10] = arguments[_key10];\n                                        return childOverridesPromise.then((function(childOverrides) {\n                                            return childOverrides.open.apply(childOverrides, args);\n                                        }));\n                                    };\n                                    openPrerenderOverride = function() {\n                                        for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) args[_key11] = arguments[_key11];\n                                        return childOverridesPromise.then((function(childOverrides) {\n                                            return childOverrides.openPrerender.apply(childOverrides, args);\n                                        }));\n                                    };\n                                } else context === CONTEXT.POPUP && (setProxyWinOverride = function() {\n                                    for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) args[_key12] = arguments[_key12];\n                                    return childOverridesPromise.then((function(childOverrides) {\n                                        return childOverrides.setProxyWin.apply(childOverrides, args);\n                                    }));\n                                });\n                                return childOverridesPromise;\n                            }(context, target);\n                        }));\n                        var windowProp = props.window;\n                        var watchForUnloadPromise = watchForUnload();\n                        var buildUrlPromise = serializeProps(propsDef, props, \"get\").then((function(query) {\n                            return function(url, options) {\n                                var query = options.query || {};\n                                var hash = options.hash || {};\n                                var originalUrl;\n                                var originalHash;\n                                var _url$split = url.split(\"#\");\n                                originalHash = _url$split[1];\n                                var _originalUrl$split = (originalUrl = _url$split[0]).split(\"?\");\n                                originalUrl = _originalUrl$split[0];\n                                var queryString = extendQuery(_originalUrl$split[1], query);\n                                var hashString = extendQuery(originalHash, hash);\n                                queryString && (originalUrl = originalUrl + \"?\" + queryString);\n                                hashString && (originalUrl = originalUrl + \"#\" + hashString);\n                                return originalUrl;\n                            }(normalizeMockUrl(getUrl()), {\n                                query: query\n                            });\n                        }));\n                        var buildBodyPromise = serializeProps(propsDef, props, \"post\");\n                        var onRenderPromise = event.trigger(EVENT.RENDER);\n                        var getProxyContainerPromise = getProxyContainer(container);\n                        var getProxyWindowPromise = getProxyWindow();\n                        var buildWindowNamePromise = getProxyWindowPromise.then((function(proxyWin) {\n                            return function(_temp) {\n                                var _ref5 = void 0 === _temp ? {} : _temp, proxyWin = _ref5.proxyWin, childDomain = _ref5.childDomain, domain = _ref5.domain, context = (void 0 === _ref5.target && window, \n                                _ref5.context);\n                                return function(proxyWin, childDomain, domain) {\n                                    return getPropsForChild(domain).then((function(childProps) {\n                                        var value = setup_serializeMessage(proxyWin, domain, childProps);\n                                        var propRef = childDomain === getDomain() ? {\n                                            type: \"uid\",\n                                            uid: uid\n                                        } : {\n                                            type: \"raw\",\n                                            value: value\n                                        };\n                                        if (\"uid\" === propRef.type) {\n                                            var global = lib_global_getGlobal(window);\n                                            global.props = global.props || {};\n                                            global.props[uid] = value;\n                                            clean.register((function() {\n                                                delete global.props[uid];\n                                            }));\n                                        }\n                                        return propRef;\n                                    }));\n                                }(proxyWin, childDomain, domain).then((function(propsRef) {\n                                    return {\n                                        uid: uid,\n                                        context: context,\n                                        tag: tag,\n                                        version: \"9_0_78\",\n                                        childDomain: childDomain,\n                                        parentDomain: getDomain(window),\n                                        parent: getWindowRef(0, childDomain, context),\n                                        props: propsRef,\n                                        exports: setup_serializeMessage(proxyWin, domain, (win = proxyWin, {\n                                            init: initChild,\n                                            close: close,\n                                            checkClose: function() {\n                                                return checkWindowClose(win);\n                                            },\n                                            resize: resize,\n                                            onError: onError,\n                                            show: show,\n                                            hide: hide,\n                                            export: xport\n                                        }))\n                                    };\n                                    var win;\n                                }));\n                            }({\n                                proxyWin: (_ref6 = {\n                                    proxyWin: proxyWin,\n                                    childDomain: childDomain,\n                                    domain: domain,\n                                    target: target,\n                                    context: context\n                                }).proxyWin,\n                                childDomain: _ref6.childDomain,\n                                domain: _ref6.domain,\n                                target: _ref6.target,\n                                context: _ref6.context\n                            }).then((function(childPayload) {\n                                return \"__zoid__\" + name + \"__\" + base64encode(JSON.stringify(childPayload)) + \"__\";\n                            }));\n                            var _ref6;\n                        }));\n                        var openFramePromise = buildWindowNamePromise.then((function(windowName) {\n                            return openFrame(context, {\n                                windowName: windowName\n                            });\n                        }));\n                        var openPrerenderFramePromise = openPrerenderFrame(context);\n                        var renderContainerPromise = promise_ZalgoPromise.hash({\n                            proxyContainer: getProxyContainerPromise,\n                            proxyFrame: openFramePromise,\n                            proxyPrerenderFrame: openPrerenderFramePromise\n                        }).then((function(_ref14) {\n                            return renderContainer(_ref14.proxyContainer, {\n                                context: context,\n                                proxyFrame: _ref14.proxyFrame,\n                                proxyPrerenderFrame: _ref14.proxyPrerenderFrame,\n                                rerender: rerender\n                            });\n                        })).then((function(proxyContainer) {\n                            return proxyContainer;\n                        }));\n                        var openPromise = promise_ZalgoPromise.hash({\n                            windowName: buildWindowNamePromise,\n                            proxyFrame: openFramePromise,\n                            proxyWin: getProxyWindowPromise\n                        }).then((function(_ref15) {\n                            var proxyWin = _ref15.proxyWin;\n                            return windowProp ? proxyWin : open(context, {\n                                windowName: _ref15.windowName,\n                                proxyWin: proxyWin,\n                                proxyFrame: _ref15.proxyFrame\n                            });\n                        }));\n                        var openPrerenderPromise = promise_ZalgoPromise.hash({\n                            proxyWin: openPromise,\n                            proxyPrerenderFrame: openPrerenderFramePromise\n                        }).then((function(_ref16) {\n                            return openPrerender(context, _ref16.proxyWin, _ref16.proxyPrerenderFrame);\n                        }));\n                        var setStatePromise = openPromise.then((function(proxyWin) {\n                            currentProxyWin = proxyWin;\n                            return setProxyWin(proxyWin);\n                        }));\n                        var prerenderPromise = promise_ZalgoPromise.hash({\n                            proxyPrerenderWin: openPrerenderPromise,\n                            state: setStatePromise\n                        }).then((function(_ref17) {\n                            return prerender(_ref17.proxyPrerenderWin, {\n                                context: context\n                            });\n                        }));\n                        var setWindowNamePromise = promise_ZalgoPromise.hash({\n                            proxyWin: openPromise,\n                            windowName: buildWindowNamePromise\n                        }).then((function(_ref18) {\n                            if (windowProp) return _ref18.proxyWin.setName(_ref18.windowName);\n                        }));\n                        var getMethodPromise = promise_ZalgoPromise.hash({\n                            body: buildBodyPromise\n                        }).then((function(_ref19) {\n                            return options.method ? options.method : Object.keys(_ref19.body).length ? \"post\" : \"get\";\n                        }));\n                        var loadUrlPromise = promise_ZalgoPromise.hash({\n                            proxyWin: openPromise,\n                            windowUrl: buildUrlPromise,\n                            body: buildBodyPromise,\n                            method: getMethodPromise,\n                            windowName: setWindowNamePromise,\n                            prerender: prerenderPromise\n                        }).then((function(_ref20) {\n                            return _ref20.proxyWin.setLocation(_ref20.windowUrl, {\n                                method: _ref20.method,\n                                body: _ref20.body\n                            });\n                        }));\n                        var watchForClosePromise = openPromise.then((function(proxyWin) {\n                            !function watchForClose(proxyWin, context) {\n                                var cancelled = !1;\n                                clean.register((function() {\n                                    cancelled = !0;\n                                }));\n                                return promise_ZalgoPromise.delay(2e3).then((function() {\n                                    return proxyWin.isClosed();\n                                })).then((function(isClosed) {\n                                    if (!cancelled) return isClosed ? close(new Error(\"Detected \" + context + \" close\")) : watchForClose(proxyWin, context);\n                                }));\n                            }(proxyWin, context);\n                        }));\n                        var onDisplayPromise = promise_ZalgoPromise.hash({\n                            container: renderContainerPromise,\n                            prerender: prerenderPromise\n                        }).then((function() {\n                            return event.trigger(EVENT.DISPLAY);\n                        }));\n                        var openBridgePromise = openPromise.then((function(proxyWin) {\n                            return function(proxyWin, domain, context) {\n                                return promise_ZalgoPromise.try((function() {\n                                    return proxyWin.awaitWindow();\n                                })).then((function(win) {\n                                    if (src_bridge && src_bridge.needsBridge({\n                                        win: win,\n                                        domain: domain\n                                    }) && !src_bridge.hasBridge(domain, domain)) {\n                                        var bridgeUrl = \"function\" == typeof options.bridgeUrl ? options.bridgeUrl({\n                                            props: props\n                                        }) : options.bridgeUrl;\n                                        if (!bridgeUrl) throw new Error(\"Bridge needed to render \" + context);\n                                        var bridgeDomain = getDomainFromUrl(bridgeUrl);\n                                        src_bridge.linkUrl(win, domain);\n                                        return src_bridge.openBridge(normalizeMockUrl(bridgeUrl), bridgeDomain);\n                                    }\n                                }));\n                            }(proxyWin, childDomain, context);\n                        }));\n                        var runTimeoutPromise = loadUrlPromise.then((function() {\n                            return promise_ZalgoPromise.try((function() {\n                                var timeout = props.timeout;\n                                if (timeout) return initPromise.timeout(timeout, new Error(\"Loading component timed out after \" + timeout + \" milliseconds\"));\n                            }));\n                        }));\n                        var onRenderedPromise = initPromise.then((function() {\n                            return event.trigger(EVENT.RENDERED);\n                        }));\n                        return promise_ZalgoPromise.hash({\n                            initPromise: initPromise,\n                            buildUrlPromise: buildUrlPromise,\n                            onRenderPromise: onRenderPromise,\n                            getProxyContainerPromise: getProxyContainerPromise,\n                            openFramePromise: openFramePromise,\n                            openPrerenderFramePromise: openPrerenderFramePromise,\n                            renderContainerPromise: renderContainerPromise,\n                            openPromise: openPromise,\n                            openPrerenderPromise: openPrerenderPromise,\n                            setStatePromise: setStatePromise,\n                            prerenderPromise: prerenderPromise,\n                            loadUrlPromise: loadUrlPromise,\n                            buildWindowNamePromise: buildWindowNamePromise,\n                            setWindowNamePromise: setWindowNamePromise,\n                            watchForClosePromise: watchForClosePromise,\n                            onDisplayPromise: onDisplayPromise,\n                            openBridgePromise: openBridgePromise,\n                            runTimeoutPromise: runTimeoutPromise,\n                            onRenderedPromise: onRenderedPromise,\n                            delegatePromise: delegatePromise,\n                            watchForUnloadPromise: watchForUnloadPromise\n                        });\n                    })).catch((function(err) {\n                        return promise_ZalgoPromise.all([ onError(err), destroy(err) ]).then((function() {\n                            throw err;\n                        }), (function() {\n                            throw err;\n                        }));\n                    })).then(src_util_noop);\n                },\n                destroy: destroy,\n                getProps: function() {\n                    return props;\n                },\n                setProps: setProps,\n                export: xport,\n                getHelpers: getHelpers,\n                getDelegateOverrides: function() {\n                    return promise_ZalgoPromise.try((function() {\n                        return {\n                            getProxyContainer: getProxyContainer,\n                            show: show,\n                            hide: hide,\n                            renderContainer: renderContainer,\n                            getProxyWindow: getProxyWindow,\n                            watchForUnload: watchForUnload,\n                            openFrame: openFrame,\n                            openPrerenderFrame: openPrerenderFrame,\n                            prerender: prerender,\n                            open: open,\n                            openPrerender: openPrerender,\n                            setProxyWin: setProxyWin\n                        };\n                    }));\n                },\n                getExports: function() {\n                    return xports({\n                        getExports: function() {\n                            return exportsPromise;\n                        }\n                    });\n                }\n            };\n        }\n        function defaultContainerTemplate(_ref) {\n            var uid = _ref.uid, frame = _ref.frame, prerenderFrame = _ref.prerenderFrame, doc = _ref.doc, props = _ref.props, event = _ref.event, dimensions = _ref.dimensions;\n            var width = dimensions.width, height = dimensions.height;\n            if (frame && prerenderFrame) {\n                var div = doc.createElement(\"div\");\n                div.setAttribute(\"id\", uid);\n                var style = doc.createElement(\"style\");\n                props.cspNonce && style.setAttribute(\"nonce\", props.cspNonce);\n                style.appendChild(doc.createTextNode(\"\\n            #\" + uid + \" {\\n                display: inline-block;\\n                position: relative;\\n                width: \" + width + \";\\n                height: \" + height + \";\\n            }\\n\\n            #\" + uid + \" > iframe {\\n                display: inline-block;\\n                position: absolute;\\n                width: 100%;\\n                height: 100%;\\n                top: 0;\\n                left: 0;\\n                transition: opacity .2s ease-in-out;\\n            }\\n\\n            #\" + uid + \" > iframe.zoid-invisible {\\n                opacity: 0;\\n            }\\n\\n            #\" + uid + \" > iframe.zoid-visible {\\n                opacity: 1;\\n        }\\n        \"));\n                div.appendChild(frame);\n                div.appendChild(prerenderFrame);\n                div.appendChild(style);\n                prerenderFrame.classList.add(\"zoid-visible\");\n                frame.classList.add(\"zoid-invisible\");\n                event.on(EVENT.RENDERED, (function() {\n                    prerenderFrame.classList.remove(\"zoid-visible\");\n                    prerenderFrame.classList.add(\"zoid-invisible\");\n                    frame.classList.remove(\"zoid-invisible\");\n                    frame.classList.add(\"zoid-visible\");\n                    setTimeout((function() {\n                        destroyElement(prerenderFrame);\n                    }), 1);\n                }));\n                event.on(EVENT.RESIZE, (function(_ref2) {\n                    var newWidth = _ref2.width, newHeight = _ref2.height;\n                    \"number\" == typeof newWidth && (div.style.width = toCSS(newWidth));\n                    \"number\" == typeof newHeight && (div.style.height = toCSS(newHeight));\n                }));\n                return div;\n            }\n        }\n        function defaultPrerenderTemplate(_ref) {\n            var doc = _ref.doc, props = _ref.props;\n            var html = doc.createElement(\"html\");\n            var body = doc.createElement(\"body\");\n            var style = doc.createElement(\"style\");\n            var spinner = doc.createElement(\"div\");\n            spinner.classList.add(\"spinner\");\n            props.cspNonce && style.setAttribute(\"nonce\", props.cspNonce);\n            html.appendChild(body);\n            body.appendChild(spinner);\n            body.appendChild(style);\n            style.appendChild(doc.createTextNode(\"\\n            html, body {\\n                width: 100%;\\n                height: 100%;\\n            }\\n\\n            .spinner {\\n                position: fixed;\\n                max-height: 60vmin;\\n                max-width: 60vmin;\\n                height: 40px;\\n                width: 40px;\\n                top: 50%;\\n                left: 50%;\\n                box-sizing: border-box;\\n                border: 3px solid rgba(0, 0, 0, .2);\\n                border-top-color: rgba(33, 128, 192, 0.8);\\n                border-radius: 100%;\\n                animation: rotation .7s infinite linear;\\n            }\\n\\n            @keyframes rotation {\\n                from {\\n                    transform: translateX(-50%) translateY(-50%) rotate(0deg);\\n                }\\n                to {\\n                    transform: translateX(-50%) translateY(-50%) rotate(359deg);\\n                }\\n            }\\n        \"));\n            return html;\n        }\n        var cleanInstances = cleanup();\n        var cleanZoid = cleanup();\n        function component(opts) {\n            var options = function(options) {\n                var tag = options.tag, url = options.url, domain = options.domain, bridgeUrl = options.bridgeUrl, _options$props = options.props, props = void 0 === _options$props ? {} : _options$props, _options$dimensions = options.dimensions, dimensions = void 0 === _options$dimensions ? {} : _options$dimensions, _options$autoResize = options.autoResize, autoResize = void 0 === _options$autoResize ? {} : _options$autoResize, _options$allowedParen = options.allowedParentDomains, allowedParentDomains = void 0 === _options$allowedParen ? \"*\" : _options$allowedParen, _options$attributes = options.attributes, attributes = void 0 === _options$attributes ? {} : _options$attributes, _options$defaultConte = options.defaultContext, defaultContext = void 0 === _options$defaultConte ? CONTEXT.IFRAME : _options$defaultConte, _options$containerTem = options.containerTemplate, containerTemplate = void 0 === _options$containerTem ? defaultContainerTemplate : _options$containerTem, _options$prerenderTem = options.prerenderTemplate, prerenderTemplate = void 0 === _options$prerenderTem ? defaultPrerenderTemplate : _options$prerenderTem, validate = options.validate, _options$eligible = options.eligible, eligible = void 0 === _options$eligible ? function() {\n                    return {\n                        eligible: !0\n                    };\n                } : _options$eligible, _options$logger = options.logger, logger = void 0 === _options$logger ? {\n                    info: src_util_noop\n                } : _options$logger, _options$exports = options.exports, xportsDefinition = void 0 === _options$exports ? src_util_noop : _options$exports, method = options.method, _options$children = options.children, children = void 0 === _options$children ? function() {\n                    return {};\n                } : _options$children;\n                var name = tag.replace(/-/g, \"_\");\n                var propsDef = _extends({}, {\n                    window: {\n                        type: PROP_TYPE.OBJECT,\n                        sendToChild: !1,\n                        required: !1,\n                        allowDelegate: !0,\n                        validate: function(_ref2) {\n                            var value = _ref2.value;\n                            if (!isWindow(value) && !window_ProxyWindow.isProxyWindow(value)) throw new Error(\"Expected Window or ProxyWindow\");\n                            if (isWindow(value)) {\n                                if (isWindowClosed(value)) throw new Error(\"Window is closed\");\n                                if (!isSameDomain(value)) throw new Error(\"Window is not same domain\");\n                            }\n                        },\n                        decorate: function(_ref3) {\n                            return setup_toProxyWindow(_ref3.value);\n                        }\n                    },\n                    timeout: {\n                        type: PROP_TYPE.NUMBER,\n                        required: !1,\n                        sendToChild: !1\n                    },\n                    cspNonce: {\n                        type: PROP_TYPE.STRING,\n                        required: !1\n                    },\n                    onDisplay: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        allowDelegate: !0,\n                        default: props_defaultNoop,\n                        decorate: props_decorateOnce\n                    },\n                    onRendered: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        default: props_defaultNoop,\n                        decorate: props_decorateOnce\n                    },\n                    onRender: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        default: props_defaultNoop,\n                        decorate: props_decorateOnce\n                    },\n                    onClose: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        allowDelegate: !0,\n                        default: props_defaultNoop,\n                        decorate: props_decorateOnce\n                    },\n                    onDestroy: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        allowDelegate: !0,\n                        default: props_defaultNoop,\n                        decorate: props_decorateOnce\n                    },\n                    onResize: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        allowDelegate: !0,\n                        default: props_defaultNoop\n                    },\n                    onFocus: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        allowDelegate: !0,\n                        default: props_defaultNoop\n                    },\n                    close: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref4) {\n                            return _ref4.close;\n                        }\n                    },\n                    focus: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref5) {\n                            return _ref5.focus;\n                        }\n                    },\n                    resize: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref6) {\n                            return _ref6.resize;\n                        }\n                    },\n                    uid: {\n                        type: PROP_TYPE.STRING,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref7) {\n                            return _ref7.uid;\n                        }\n                    },\n                    tag: {\n                        type: PROP_TYPE.STRING,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref8) {\n                            return _ref8.tag;\n                        }\n                    },\n                    getParent: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref9) {\n                            return _ref9.getParent;\n                        }\n                    },\n                    getParentDomain: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref10) {\n                            return _ref10.getParentDomain;\n                        }\n                    },\n                    show: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref11) {\n                            return _ref11.show;\n                        }\n                    },\n                    hide: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref12) {\n                            return _ref12.hide;\n                        }\n                    },\n                    export: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref13) {\n                            return _ref13.export;\n                        }\n                    },\n                    onError: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref14) {\n                            return _ref14.onError;\n                        }\n                    },\n                    onProps: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref15) {\n                            return _ref15.onProps;\n                        }\n                    },\n                    getSiblings: {\n                        type: PROP_TYPE.FUNCTION,\n                        required: !1,\n                        sendToChild: !1,\n                        childDecorate: function(_ref16) {\n                            return _ref16.getSiblings;\n                        }\n                    }\n                }, props);\n                if (!containerTemplate) throw new Error(\"Container template required\");\n                return {\n                    name: name,\n                    tag: tag,\n                    url: url,\n                    domain: domain,\n                    bridgeUrl: bridgeUrl,\n                    method: method,\n                    propsDef: propsDef,\n                    dimensions: dimensions,\n                    autoResize: autoResize,\n                    allowedParentDomains: allowedParentDomains,\n                    attributes: attributes,\n                    defaultContext: defaultContext,\n                    containerTemplate: containerTemplate,\n                    prerenderTemplate: prerenderTemplate,\n                    validate: validate,\n                    logger: logger,\n                    eligible: eligible,\n                    children: children,\n                    exports: \"function\" == typeof xportsDefinition ? xportsDefinition : function(_ref) {\n                        var getExports = _ref.getExports;\n                        var result = {};\n                        var _loop = function(_i2, _Object$keys2) {\n                            var key = _Object$keys2[_i2];\n                            var type = xportsDefinition[key].type;\n                            var valuePromise = getExports().then((function(res) {\n                                return res[key];\n                            }));\n                            result[key] = type === PROP_TYPE.FUNCTION ? function() {\n                                for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];\n                                return valuePromise.then((function(value) {\n                                    return value.apply(void 0, args);\n                                }));\n                            } : valuePromise;\n                        };\n                        for (var _i2 = 0, _Object$keys2 = Object.keys(xportsDefinition); _i2 < _Object$keys2.length; _i2++) _loop(_i2, _Object$keys2);\n                        return result;\n                    }\n                };\n            }(opts);\n            var name = options.name, tag = options.tag, defaultContext = options.defaultContext, eligible = options.eligible, children = options.children;\n            var global = lib_global_getGlobal();\n            var instances = [];\n            var isChild = function() {\n                var payload = getChildPayload();\n                return Boolean(payload && payload.tag === tag && payload.childDomain === getDomain());\n            };\n            var registerChild = memoize((function() {\n                if (isChild()) {\n                    if (window.xprops) {\n                        delete global.components[tag];\n                        throw new Error(\"Can not register \" + name + \" as child - child already registered\");\n                    }\n                    var child = function(options) {\n                        var tag = options.tag, propsDef = options.propsDef, autoResize = options.autoResize, allowedParentDomains = options.allowedParentDomains;\n                        var onPropHandlers = [];\n                        var childPayload = getChildPayload();\n                        var props;\n                        var exportsPromise = new promise_ZalgoPromise;\n                        if (!childPayload) throw new Error(\"No child payload found\");\n                        if (\"9_0_78\" !== childPayload.version) throw new Error(\"Parent window has zoid version \" + childPayload.version + \", child window has version 9_0_78\");\n                        var uid = childPayload.uid, parentDomain = childPayload.parentDomain, parentExports = childPayload.exports, context = childPayload.context, propsRef = childPayload.props;\n                        var parentComponentWindow = function(ref) {\n                            var type = ref.type;\n                            if (\"opener\" === type) return assertExists(\"opener\", getOpener(window));\n                            if (\"parent\" === type && \"number\" == typeof ref.distance) return assertExists(\"parent\", function(win, n) {\n                                void 0 === n && (n = 1);\n                                return function(win, n) {\n                                    void 0 === n && (n = 1);\n                                    var parent = win;\n                                    for (var i = 0; i < n; i++) {\n                                        if (!parent) return;\n                                        parent = utils_getParent(parent);\n                                    }\n                                    return parent;\n                                }(win, getDistanceFromTop(win) - n);\n                            }(window, ref.distance));\n                            if (\"global\" === type && ref.uid && \"string\" == typeof ref.uid) {\n                                var uid = ref.uid;\n                                var ancestor = getAncestor(window);\n                                if (!ancestor) throw new Error(\"Can not find ancestor window\");\n                                for (var _i2 = 0, _getAllFramesInWindow2 = getAllFramesInWindow(ancestor); _i2 < _getAllFramesInWindow2.length; _i2++) {\n                                    var frame = _getAllFramesInWindow2[_i2];\n                                    if (isSameDomain(frame)) {\n                                        var global = lib_global_getGlobal(frame);\n                                        if (global && global.windows && global.windows[uid]) return global.windows[uid];\n                                    }\n                                }\n                            }\n                            throw new Error(\"Unable to find \" + type + \" parent component window\");\n                        }(childPayload.parent);\n                        var parent = setup_deserializeMessage(parentComponentWindow, parentDomain, parentExports);\n                        var show = parent.show, hide = parent.hide, close = parent.close;\n                        var getParent = function() {\n                            return parentComponentWindow;\n                        };\n                        var getParentDomain = function() {\n                            return parentDomain;\n                        };\n                        var onProps = function(handler) {\n                            onPropHandlers.push(handler);\n                        };\n                        var onError = function(err) {\n                            return promise_ZalgoPromise.try((function() {\n                                if (parent && parent.onError) return parent.onError(err);\n                                throw err;\n                            }));\n                        };\n                        var resize = function(_ref) {\n                            return parent.resize.fireAndForget({\n                                width: _ref.width,\n                                height: _ref.height\n                            });\n                        };\n                        var xport = function(xports) {\n                            exportsPromise.resolve(xports);\n                            return parent.export(xports);\n                        };\n                        var getSiblings = function(_temp) {\n                            var anyParent = (void 0 === _temp ? {} : _temp).anyParent;\n                            var result = [];\n                            var currentParent = props.parent;\n                            void 0 === anyParent && (anyParent = !currentParent);\n                            if (!anyParent && !currentParent) throw new Error(\"No parent found for \" + tag + \" child\");\n                            for (var _i4 = 0, _getAllFramesInWindow4 = getAllFramesInWindow(window); _i4 < _getAllFramesInWindow4.length; _i4++) {\n                                var win = _getAllFramesInWindow4[_i4];\n                                if (isSameDomain(win)) {\n                                    var xprops = assertSameDomain(win).xprops;\n                                    if (xprops && getParent() === xprops.getParent()) {\n                                        var winParent = xprops.parent;\n                                        (anyParent || !currentParent || winParent && winParent.uid === currentParent.uid) && result.push({\n                                            props: xprops,\n                                            exports: lib_global_getGlobal(win).exports\n                                        });\n                                    }\n                                }\n                            }\n                            return result;\n                        };\n                        var setProps = function(newProps, origin, isUpdate) {\n                            void 0 === isUpdate && (isUpdate = !1);\n                            var normalizedProps = function(parentComponentWindow, propsDef, props, origin, helpers, isUpdate) {\n                                void 0 === isUpdate && (isUpdate = !1);\n                                var result = {};\n                                for (var _i2 = 0, _Object$keys2 = Object.keys(props); _i2 < _Object$keys2.length; _i2++) {\n                                    var key = _Object$keys2[_i2];\n                                    var prop = propsDef[key];\n                                    if (!prop || !prop.sameDomain || origin === getDomain(window) && isSameDomain(parentComponentWindow)) {\n                                        var value = normalizeChildProp(propsDef, 0, key, props[key], helpers);\n                                        result[key] = value;\n                                        prop && prop.alias && !result[prop.alias] && (result[prop.alias] = value);\n                                    }\n                                }\n                                if (!isUpdate) for (var _i4 = 0, _Object$keys4 = Object.keys(propsDef); _i4 < _Object$keys4.length; _i4++) {\n                                    var _key = _Object$keys4[_i4];\n                                    props.hasOwnProperty(_key) || (result[_key] = normalizeChildProp(propsDef, 0, _key, void 0, helpers));\n                                }\n                                return result;\n                            }(parentComponentWindow, propsDef, newProps, origin, {\n                                tag: tag,\n                                show: show,\n                                hide: hide,\n                                close: close,\n                                focus: child_focus,\n                                onError: onError,\n                                resize: resize,\n                                getSiblings: getSiblings,\n                                onProps: onProps,\n                                getParent: getParent,\n                                getParentDomain: getParentDomain,\n                                uid: uid,\n                                export: xport\n                            }, isUpdate);\n                            props ? extend(props, normalizedProps) : props = normalizedProps;\n                            for (var _i6 = 0; _i6 < onPropHandlers.length; _i6++) (0, onPropHandlers[_i6])(props);\n                        };\n                        var updateProps = function(newProps) {\n                            return promise_ZalgoPromise.try((function() {\n                                return setProps(newProps, parentDomain, !0);\n                            }));\n                        };\n                        return {\n                            init: function() {\n                                return promise_ZalgoPromise.try((function() {\n                                    lib_global_getGlobal().exports = options.exports({\n                                        getExports: function() {\n                                            return exportsPromise;\n                                        }\n                                    });\n                                    !function(allowedParentDomains, domain) {\n                                        if (!matchDomain(allowedParentDomains, domain)) throw new Error(\"Can not be rendered by domain: \" + domain);\n                                    }(allowedParentDomains, parentDomain);\n                                    markWindowKnown(parentComponentWindow);\n                                    !function() {\n                                        window.addEventListener(\"beforeunload\", (function() {\n                                            parent.checkClose.fireAndForget();\n                                        }));\n                                        window.addEventListener(\"unload\", (function() {\n                                            parent.checkClose.fireAndForget();\n                                        }));\n                                        onCloseWindow(parentComponentWindow, (function() {\n                                            child_destroy();\n                                        }));\n                                    }();\n                                    return parent.init({\n                                        updateProps: updateProps,\n                                        close: child_destroy\n                                    });\n                                })).then((function() {\n                                    return (_autoResize$width = autoResize.width, width = void 0 !== _autoResize$width && _autoResize$width, \n                                    _autoResize$height = autoResize.height, height = void 0 !== _autoResize$height && _autoResize$height, \n                                    _autoResize$element = autoResize.element, elementReady(void 0 === _autoResize$element ? \"body\" : _autoResize$element).catch(src_util_noop).then((function(element) {\n                                        return {\n                                            width: width,\n                                            height: height,\n                                            element: element\n                                        };\n                                    }))).then((function(_ref3) {\n                                        var width = _ref3.width, height = _ref3.height, element = _ref3.element;\n                                        element && (width || height) && context !== CONTEXT.POPUP && onResize(element, (function(_ref4) {\n                                            resize({\n                                                width: width ? _ref4.width : void 0,\n                                                height: height ? _ref4.height : void 0\n                                            });\n                                        }), {\n                                            width: width,\n                                            height: height\n                                        });\n                                    }));\n                                    var _autoResize$width, width, _autoResize$height, height, _autoResize$element;\n                                })).catch((function(err) {\n                                    onError(err);\n                                }));\n                            },\n                            getProps: function() {\n                                if (props) return props;\n                                setProps(function(parentComponentWindow, domain, propRef) {\n                                    var props;\n                                    if (\"raw\" === propRef.type) props = propRef.value; else if (\"uid\" === propRef.type) {\n                                        if (!isSameDomain(parentComponentWindow)) throw new Error(\"Parent component window is on a different domain - expected \" + getDomain() + \" - can not retrieve props\");\n                                        var global = lib_global_getGlobal(parentComponentWindow);\n                                        props = assertExists(\"props\", global && global.props[propRef.uid]);\n                                    }\n                                    if (!props) throw new Error(\"Could not find props\");\n                                    return setup_deserializeMessage(parentComponentWindow, domain, props);\n                                }(parentComponentWindow, parentDomain, propsRef), parentDomain);\n                                return props;\n                            }\n                        };\n                    }(options);\n                    child.init();\n                    return child;\n                }\n            }));\n            registerChild();\n            !function() {\n                var allowDelegateListener = on_on(\"zoid_allow_delegate_\" + name, (function() {\n                    return !0;\n                }));\n                var delegateListener = on_on(\"zoid_delegate_\" + name, (function(_ref2) {\n                    var _ref2$data = _ref2.data;\n                    return {\n                        parent: parentComponent({\n                            uid: _ref2$data.uid,\n                            options: options,\n                            overrides: _ref2$data.overrides,\n                            parentWin: _ref2.source\n                        })\n                    };\n                }));\n                cleanZoid.register(allowDelegateListener.cancel);\n                cleanZoid.register(delegateListener.cancel);\n            }();\n            global.components = global.components || {};\n            if (global.components[tag]) throw new Error(\"Can not register multiple components with the same tag: \" + tag);\n            global.components[tag] = !0;\n            return {\n                init: function init(inputProps) {\n                    var instance;\n                    var uid = \"zoid-\" + tag + \"-\" + uniqueID();\n                    var props = inputProps || {};\n                    var _eligible = eligible({\n                        props: props\n                    }), eligibility = _eligible.eligible, reason = _eligible.reason;\n                    var onDestroy = props.onDestroy;\n                    props.onDestroy = function() {\n                        instance && eligibility && instances.splice(instances.indexOf(instance), 1);\n                        if (onDestroy) return onDestroy.apply(void 0, arguments);\n                    };\n                    var parent = parentComponent({\n                        uid: uid,\n                        options: options\n                    });\n                    parent.init();\n                    eligibility ? parent.setProps(props) : props.onDestroy && props.onDestroy();\n                    cleanInstances.register((function(err) {\n                        return parent.destroy(err || new Error(\"zoid destroyed all components\"));\n                    }));\n                    var clone = function(_temp) {\n                        var _ref4$decorate = (void 0 === _temp ? {} : _temp).decorate;\n                        return init((void 0 === _ref4$decorate ? identity : _ref4$decorate)(props));\n                    };\n                    var _render = function(target, container, context) {\n                        return promise_ZalgoPromise.try((function() {\n                            if (!eligibility) {\n                                var err = new Error(reason || name + \" component is not eligible\");\n                                return parent.destroy(err).then((function() {\n                                    throw err;\n                                }));\n                            }\n                            if (!isWindow(target)) throw new Error(\"Must pass window to renderTo\");\n                            return function(props, context) {\n                                return promise_ZalgoPromise.try((function() {\n                                    if (props.window) return setup_toProxyWindow(props.window).getType();\n                                    if (context) {\n                                        if (context !== CONTEXT.IFRAME && context !== CONTEXT.POPUP) throw new Error(\"Unrecognized context: \" + context);\n                                        return context;\n                                    }\n                                    return defaultContext;\n                                }));\n                            }(props, context);\n                        })).then((function(finalContext) {\n                            container = function(context, container) {\n                                if (container) {\n                                    if (\"string\" != typeof container && !isElement(container)) throw new TypeError(\"Expected string or element selector to be passed\");\n                                    return container;\n                                }\n                                if (context === CONTEXT.POPUP) return \"body\";\n                                throw new Error(\"Expected element to be passed to render iframe\");\n                            }(finalContext, container);\n                            if (target !== window && \"string\" != typeof container) throw new Error(\"Must pass string element when rendering to another window\");\n                            return parent.render({\n                                target: target,\n                                container: container,\n                                context: finalContext,\n                                rerender: function() {\n                                    var newInstance = clone();\n                                    extend(instance, newInstance);\n                                    return newInstance.renderTo(target, container, context);\n                                }\n                            });\n                        })).catch((function(err) {\n                            return parent.destroy(err).then((function() {\n                                throw err;\n                            }));\n                        }));\n                    };\n                    instance = _extends({}, parent.getExports(), parent.getHelpers(), function() {\n                        var childComponents = children();\n                        var result = {};\n                        var _loop2 = function(_i4, _Object$keys4) {\n                            var childName = _Object$keys4[_i4];\n                            var Child = childComponents[childName];\n                            result[childName] = function(childInputProps) {\n                                var parentProps = parent.getProps();\n                                var childProps = _extends({}, childInputProps, {\n                                    parent: {\n                                        uid: uid,\n                                        props: parentProps,\n                                        export: parent.export\n                                    }\n                                });\n                                return Child(childProps);\n                            };\n                        };\n                        for (var _i4 = 0, _Object$keys4 = Object.keys(childComponents); _i4 < _Object$keys4.length; _i4++) _loop2(_i4, _Object$keys4);\n                        return result;\n                    }(), {\n                        isEligible: function() {\n                            return eligibility;\n                        },\n                        clone: clone,\n                        render: function(container, context) {\n                            return _render(window, container, context);\n                        },\n                        renderTo: function(target, container, context) {\n                            return _render(target, container, context);\n                        }\n                    });\n                    eligibility && instances.push(instance);\n                    return instance;\n                },\n                instances: instances,\n                driver: function(driverName, dep) {\n                    throw new Error(\"Driver support not enabled\");\n                },\n                isChild: isChild,\n                canRenderTo: function(win) {\n                    return send_send(win, \"zoid_allow_delegate_\" + name).then((function(_ref3) {\n                        return _ref3.data;\n                    })).catch((function() {\n                        return !1;\n                    }));\n                },\n                registerChild: registerChild\n            };\n        }\n        var component_create = function(options) {\n            !function() {\n                if (!global_getGlobal().initialized) {\n                    global_getGlobal().initialized = !0;\n                    on = (_ref3 = {\n                        on: on_on,\n                        send: send_send\n                    }).on, send = _ref3.send, (global = global_getGlobal()).receiveMessage = global.receiveMessage || function(message) {\n                        return receive_receiveMessage(message, {\n                            on: on,\n                            send: send\n                        });\n                    };\n                    !function(_ref5) {\n                        var on = _ref5.on, send = _ref5.send;\n                        globalStore().getOrSet(\"postMessageListener\", (function() {\n                            return addEventListener(window, \"message\", (function(event) {\n                                !function(event, _ref4) {\n                                    var on = _ref4.on, send = _ref4.send;\n                                    promise_ZalgoPromise.try((function() {\n                                        var source = event.source || event.sourceElement;\n                                        var origin = event.origin || event.originalEvent && event.originalEvent.origin;\n                                        var data = event.data;\n                                        \"null\" === origin && (origin = \"file://\");\n                                        if (source) {\n                                            if (!origin) throw new Error(\"Post message did not have origin domain\");\n                                            receive_receiveMessage({\n                                                source: source,\n                                                origin: origin,\n                                                data: data\n                                            }, {\n                                                on: on,\n                                                send: send\n                                            });\n                                        }\n                                    }));\n                                }(event, {\n                                    on: on,\n                                    send: send\n                                });\n                            }));\n                        }));\n                    }({\n                        on: on_on,\n                        send: send_send\n                    });\n                    setupBridge({\n                        on: on_on,\n                        send: send_send,\n                        receiveMessage: receive_receiveMessage\n                    });\n                    !function(_ref8) {\n                        var on = _ref8.on, send = _ref8.send;\n                        globalStore(\"builtinListeners\").getOrSet(\"helloListener\", (function() {\n                            var listener = on(\"postrobot_hello\", {\n                                domain: \"*\"\n                            }, (function(_ref3) {\n                                resolveHelloPromise(_ref3.source, {\n                                    domain: _ref3.origin\n                                });\n                                return {\n                                    instanceID: getInstanceID()\n                                };\n                            }));\n                            var parent = getAncestor();\n                            parent && sayHello(parent, {\n                                send: send\n                            }).catch((function(err) {}));\n                            return listener;\n                        }));\n                    }({\n                        on: on_on,\n                        send: send_send\n                    });\n                }\n                var _ref3, on, send, global;\n            }();\n            var comp = component(options);\n            var init = function(props) {\n                return comp.init(props);\n            };\n            init.driver = function(name, dep) {\n                return comp.driver(name, dep);\n            };\n            init.isChild = function() {\n                return comp.isChild();\n            };\n            init.canRenderTo = function(win) {\n                return comp.canRenderTo(win);\n            };\n            init.instances = comp.instances;\n            var child = comp.registerChild();\n            child && (window.xprops = init.xprops = child.getProps());\n            return init;\n        };\n        function destroyComponents(err) {\n            src_bridge && src_bridge.destroyBridges();\n            var destroyPromise = cleanInstances.all(err);\n            cleanInstances = cleanup();\n            return destroyPromise;\n        }\n        var destroyAll = destroyComponents;\n        function component_destroy(err) {\n            destroyAll();\n            delete window.__zoid_9_0_78__;\n            !function() {\n                !function() {\n                    var responseListeners = globalStore(\"responseListeners\");\n                    for (var _i2 = 0, _responseListeners$ke2 = responseListeners.keys(); _i2 < _responseListeners$ke2.length; _i2++) {\n                        var hash = _responseListeners$ke2[_i2];\n                        var listener = responseListeners.get(hash);\n                        listener && (listener.cancelled = !0);\n                        responseListeners.del(hash);\n                    }\n                }();\n                (listener = globalStore().get(\"postMessageListener\")) && listener.cancel();\n                var listener;\n                delete window.__post_robot_10_0_44__;\n            }();\n            return cleanZoid.all(err);\n        }\n    } ]);\n}));","/* @flow */\n/* eslint import/no-commonjs: 0 */\n\n// eslint-disable-next-line no-process-env\nif (process && process.env && process.env.ZOID_FRAME_ONLY) {\n    // $FlowFixMe\n    module.exports = require('./dist/zoid.frame');\n    // $FlowFixMe\n    module.exports.default = module.exports;\n} else {\n    // $FlowFixMe\n    module.exports = require('./dist/zoid');\n    // $FlowFixMe\n    module.exports.default = module.exports;\n}\n","var map = {\n\t\"./badge_proofpoints-dark.de.html\": [\n\t\t578,\n\t\t959\n\t],\n\t\"./badge_proofpoints-dark.en.html\": [\n\t\t56,\n\t\t56\n\t],\n\t\"./badge_proofpoints-dark.es.html\": [\n\t\t819,\n\t\t819\n\t],\n\t\"./badge_proofpoints-dark.fr.html\": [\n\t\t691,\n\t\t691\n\t],\n\t\"./badge_proofpoints-dark.nl.html\": [\n\t\t373,\n\t\t373\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 51;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./badge_proofpoints-light.de.html\": [\n\t\t612,\n\t\t612\n\t],\n\t\"./badge_proofpoints-light.en.html\": [\n\t\t392,\n\t\t392\n\t],\n\t\"./badge_proofpoints-light.es.html\": [\n\t\t283,\n\t\t283\n\t],\n\t\"./badge_proofpoints-light.fr.html\": [\n\t\t923,\n\t\t923\n\t],\n\t\"./badge_proofpoints-light.nl.html\": [\n\t\t389,\n\t\t389\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 629;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./badge_tick-dark.de.html\": [\n\t\t560,\n\t\t560\n\t],\n\t\"./badge_tick-dark.en.html\": [\n\t\t580,\n\t\t580\n\t],\n\t\"./badge_tick-dark.es.html\": [\n\t\t991,\n\t\t991\n\t],\n\t\"./badge_tick-dark.fr.html\": [\n\t\t159,\n\t\t159\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 845;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./badge_tick-light.de.html\": [\n\t\t248,\n\t\t248\n\t],\n\t\"./badge_tick-light.en.html\": [\n\t\t652,\n\t\t652\n\t],\n\t\"./badge_tick-light.es.html\": [\n\t\t999,\n\t\t999\n\t],\n\t\"./badge_tick-light.fr.html\": [\n\t\t263,\n\t\t263\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 895;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./banner-dark.de.html\": [\n\t\t71,\n\t\t71\n\t],\n\t\"./banner-dark.en.html\": [\n\t\t879,\n\t\t879\n\t],\n\t\"./banner-dark.es.html\": [\n\t\t44,\n\t\t44\n\t],\n\t\"./banner-dark.fr.html\": [\n\t\t684,\n\t\t684\n\t],\n\t\"./banner-dark.nl.html\": [\n\t\t38,\n\t\t38\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 554;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./banner-light.de.html\": [\n\t\t165,\n\t\t165\n\t],\n\t\"./banner-light.en.html\": [\n\t\t473,\n\t\t473\n\t],\n\t\"./banner-light.es.html\": [\n\t\t78,\n\t\t78\n\t],\n\t\"./banner-light.fr.html\": [\n\t\t898,\n\t\t898\n\t],\n\t\"./banner-light.nl.html\": [\n\t\t368,\n\t\t368\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 322;\nmodule.exports = webpackAsyncContext;","// 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\t// no module.id needed\n\t\t// no module.loaded needed\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// 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","// 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 \"\" + chunkId + \".mjs\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// 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};","function get (options) {\n  if (!options.id) {\n    console.log('Provenance: no identifier found in page')\n    return Promise.reject(new Error('Missing identifier'))\n  }\n  const apiOrigin = options.apiOrigin || 'https://api.provenance.org'\n\n  let url = `${apiOrigin}/v1/${options.endpoint}`\n\n  if (options.id) {\n    url += `/${encodeURIComponent(options.id)}`\n  }\n  if (options.type) {\n    url += `?type=${options.type}`\n  }\n\n  return fetch(url, {\n    method: 'get',\n    headers: {\n      ...(options.accessToken && { 'X-API-KEY': options.accessToken }),\n      ...(options.shopifyShopId && { 'X-SHOPIFY-SHOP-ID': options.shopifyShopId })\n    }\n  })\n}\n\n/**\n * API call that serves two purposes:\n * 1. verify that the accessToken is valid, and do appropriate server-side checks to see if\n *    the Trust Badge should be rendered;\n * 2. returns the Proof Point icons that are currently only used in a few variants;\n * 3. returns the Trust Badge variant name that should be rendered.\n * @returns Promise\n */\nexport function provenanceContent ({ accessToken, apiOrigin, identifier, shopifyShopId }) {\n  return get({\n    accessToken,\n    apiOrigin,\n    endpoint: 'offers',\n    id: identifier.identifier,\n    shopifyShopId,\n    type: identifier.type\n  })\n}\n","// Push custom events to Universal Analytics using the Measurement Protocol\nexport function track (eventData) {\n  fetch('https://www.google-analytics.com/collect', {\n    method: 'POST',\n    body: body(eventData),\n    headers: {\n      'Content-type': 'application/x-www-form-urlencoded'\n    }\n  }).then(function (response) {\n    if (!response.ok) {\n      throw response\n    }\n  }).catch(function (error) {\n    console.warn(error)\n  })\n}\n// See: https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide#event\nfunction body (eventData) {\n  const universalAnalyticsId = (window.provenance && window.provenance.universalAnalyticsId) || 'UA-59977860-1'\n\n  const data = {\n    v: 1,\n    tid: universalAnalyticsId,\n    cid: window.crypto.randomUUID(),\n    t: 'event',\n    ec: eventData.eventCategory,\n    ea: eventData.eventAction,\n    el: eventData.eventLabel,\n    aip: 1,\n    npa: 1\n  }\n\n  return Object.entries(data)\n    .map((entry) => {\n      return `${entry[0]}=${encodeURIComponent(entry[1])}`\n    })\n    .join('&')\n}\n","import { track as gtmTrack } from './adapters/google_tag_manager.js'\nimport { track as segmentTrack } from './adapters/segment.js'\nimport { track as uaTrack } from './adapters/universal_analytics.js'\n\n// Track analytics. Default to sending to both Provenance and client analytics\nexport function track (eventData, roles = ['provenance', 'client']) {\n  if (window.provenance && window.provenance.disableAnalytics) {\n    console.debug('Provenance: Analytics tracking call ignored')\n    return\n  }\n\n  roles.forEach((role) => {\n    switch (role) {\n      case 'client': gtmTrack(eventData.ga); break\n      case 'provenance': uaTrack(eventData.ga); break\n    }\n  })\n  if (eventData.segment) {\n    segmentTrack(eventData.segment)\n  }\n}\n\nexport function listenForImpressions (container, detectedCallback) {\n  const observer = createObserver(detectedCallback)\n\n  observer.observe(container)\n}\n\nfunction createObserver (detectedCallback) {\n  const options = {\n    threshold: 0.5\n  }\n\n  return new IntersectionObserver((entries, observer) => {\n    entries.forEach(entry => {\n      if (entry.isIntersecting) {\n        if (!observer) {\n          console.log('Observer is undefined or null')\n        } else {\n          observer.disconnect()\n        }\n        detectedCallback()\n      }\n    })\n  }, options)\n}\n","// Push custom events to GTM data layer\nexport function track (eventData) {\n  // catch errors for employees who have GTM blocked\n  try {\n    window.dataLayer = window.dataLayer || []\n    window.dataLayer.push(eventData)\n  } catch (error) {\n    console.error('Provenance: ', error.message)\n  }\n}\n","// Push custom events to Segment using the HTTP API\nexport function track (eventData) {\n  if (!eventData.object || !eventData.action) return console.error('Provenance: could not log Segment event: missing object or action.')\n\n  fetch('https://api.segment.io/v1/track', {\n    method: 'POST',\n    headers: {\n      Authorization: (window.provenance && window.provenance.segmentAuth) || 'Basic NlNNbUhYdUFIOGt1YkhHeDVIeHhPdHdPOTRiYlAyaWI6', // this is the platform write key encoded in base64\n      'Content-Type': 'application/json'\n    },\n    body: JSON.stringify({\n      event: `provenance:${eventData.object}_${eventData.action}`,\n      properties: eventData,\n      timestamp: new Date().toISOString(),\n      type: 'track',\n      userId: 'provenance-sdk'\n    })\n  })\n}\n","import { listenForImpressions, track } from '../analytics.js'\n\nconst supportedLanguages = ['de', 'en', 'es', 'fr', 'nl']\n\nexport async function ProvenanceTrustBadge (containerElement, offersResponse) {\n  const { proofPoints, trustBadge: { variant: name, backgroundColor: bg }, bundle: { autoRenderBundle } } = await offersResponse.json()\n\n  const variant = containerElement.getAttribute('variant') || name\n  const style = await getStyle(variant)\n  const html = await getHTML(variant)\n\n  // Create shadow root with 'open' mode\n  const shadow = containerElement.attachShadow({ mode: 'open' })\n\n  // Create style element\n  const styleElement = document.createElement('style')\n  styleElement.textContent = style.default\n  // Prevent leaking of inherited styles from the page\n  styleElement.prepend(`\n    :host {\n      all: initial !important;\n    }\n  `)\n\n  // Create container for the badge content\n  const badgeContainer = document.createElement('div')\n  badgeContainer.classList.add('provenance-trust-badge-container')\n  badgeContainer.innerHTML = html.default\n  badgeContainer.style.display = 'inline'\n\n  // Apply background color if specified\n  if (bg) {\n    const bgStyles = document.createElement('style')\n    bgStyles.textContent = `\n      .provenance-trust-badge-container a {\n        background: ${bg} !important;\n      }\n      .provenance-trust-badge-container #prov-icons > * {\n        box-shadow: 0 0 0 2px ${bg} !important;\n      }\n    `\n    shadow.appendChild(bgStyles)\n  }\n\n  // Append elements to shadow root\n  shadow.appendChild(styleElement)\n  shadow.appendChild(badgeContainer)\n\n  // Set accessibility attributes\n  shadow.querySelector('a').setAttribute('aria-label', 'Go to verified product transparency information')\n\n  if (/banner|proofpoints|v2/.test(variant)) {\n    addProofPoints(shadow, proofPoints)\n  }\n\n  containerElement.addEventListener('click', handleClick)\n  setupAnalytics(containerElement, variant)\n\n  return autoRenderBundle\n}\n\nfunction handleClick () {\n  const frame = document.querySelector('provenance-bundle iframe')\n  frame && frame.focus()\n}\n\nexport function setupAnalytics (element, variant = 'v1') {\n  const eventAction = `proofofimpact_${variant}`\n  const eventLabel = window.location.hostname\n\n  listenForImpressions(element, () => {\n    track({\n      ga: {\n        event: 'provenance:impression_badge_trust',\n        eventCategory: 'provenance:impression_badge_trust',\n        eventAction,\n        eventLabel\n      },\n      segment: {\n        object: 'trustBadge',\n        action: 'impression',\n        url: eventLabel,\n        badge_type: eventAction\n      }\n    })\n  })\n\n  element.addEventListener('click', () => {\n    track({\n      ga: {\n        event: 'provenance:click_badge_trust',\n        eventCategory: 'provenance:click_badge_trust',\n        eventAction,\n        eventLabel\n      },\n      segment: {\n        object: 'trustBadge',\n        action: 'clicked',\n        url: eventLabel,\n        badgeType: eventAction\n      }\n    })\n  })\n}\n\nfunction getStyle (variant) {\n  switch (variant) {\n    case 'light':\n      return ''\n    case 'v2':\n      return import('./v2.css')\n    case 'tick_dark':\n      return import('./badge_tick-dark.css')\n    case 'tick':\n      return import('./badge_tick-light.css')\n    case 'proofpoints_dark':\n      return import('./badge_proofpoints-dark.css')\n    case 'proofpoints':\n      return import('./badge_proofpoints-light.css')\n    case 'banner_dark':\n      return import('./banner-dark.css')\n    case 'banner':\n      return import('./banner-light.css')\n    default:\n      return import('./v1.css')\n  }\n}\n\nfunction getHTML (variant) {\n  // Get the preferred language of the user from the browser. The .slice(0, 2)\n  // call is needed because, on the server side, we support ISO 639-1\n  // two-letter codes, but `navigator.language` returns subtags as well, such\n  // as \"en_US\" or \"en_GB\" (these are known as IETF BCP 47 language tags).\n  let lang = navigator.language.slice(0, 2)\n\n  if (!supportedLanguages.includes(lang)) {\n    lang = 'en'\n  }\n\n  // For Skandinavisk, get the page language instead\n  if (location.hostname === 'www.skandinavisk.com') {\n    lang = document.documentElement.getAttribute('lang')\n  }\n\n  switch (variant) {\n    case 'light':\n      return import('./light.html')\n    case 'v2':\n      return import('./v2.html')\n    case 'tick_dark':\n      return import(`./badge_tick-dark.${lang}.html`)\n    case 'tick':\n      return import(`./badge_tick-light.${lang}.html`)\n    case 'proofpoints_dark':\n      return import(`./badge_proofpoints-dark.${lang}.html`)\n    case 'proofpoints':\n      return import(`./badge_proofpoints-light.${lang}.html`)\n    case 'banner_dark':\n      return import(`./banner-dark.${lang}.html`)\n    case 'banner':\n      return import(`./banner-light.${lang}.html`)\n    default:\n      return import('./v1.html')\n  }\n}\n\nfunction addProofPoints (el, proofPoints) {\n  const icons = el.getElementById('prov-icons')\n\n  if (proofPoints.length > 3) {\n    // Insert first two icons\n    icons.insertAdjacentHTML('afterbegin', proofPoints[1].iconHTML)\n    icons.insertAdjacentHTML('afterbegin', proofPoints[0].iconHTML)\n\n    // Insert counter of hidden PPs\n    const div = document.createElement('div')\n    div.innerText = `+${proofPoints.length - 2}`\n    icons.insertAdjacentElement('beforeend', div)\n  } else {\n    // Insert all icons\n    proofPoints.reverse().forEach(pp => {\n      icons.insertAdjacentHTML('afterbegin', pp.iconHTML)\n    })\n  }\n}\n","import zoid from 'zoid'\n\nclass FrameFactory {\n  constructor () {\n    this.frameComponents = {}\n  }\n\n  hashCode (s) {\n    return Math.abs(s.split('').reduce(function (a, b) { a = ((a << 5) - a) + b.charCodeAt(0); return a & a }, 0))\n  }\n\n  getFrame (variant = 'embed', url = null, autoRender = false) {\n    const provenanceUrl = (window.provenance && window.provenance.rootUrl) || 'https://www.provenance.org'\n    url = url || `${provenanceUrl}/x`\n\n    const key = `${variant}-${this.hashCode(url)}`\n\n    console.debug('SDK:FrameFactory', variant, url, key)\n\n    if (this.frameComponents[key]) {\n      return this.frameComponents[key]\n    }\n\n    let height = '100%'\n    let autoResizeHeight = true\n    const width = '100%'\n\n    switch (variant) {\n      case 'small':\n        height = '524px'\n        break\n      case 'story':\n        break\n      case 'full':\n        autoResizeHeight = false\n        break\n    }\n\n    const component = zoid.create({\n      tag: `provenance-experience-${key}`,\n      url,\n      dimensions: {\n        height,\n        width\n      },\n      attributes: {\n        iframe: {\n          csp: this.csp(provenanceUrl),\n          sandbox: 'allow-scripts allow-same-origin allow-popups allow-forms allow-popups-to-escape-sandbox'\n        }\n      },\n      autoResize: {\n        height: autoResizeHeight,\n        width: false\n      },\n      props: {\n        url: {\n          type: 'string',\n          required: true\n        },\n        version: {\n          type: 'string',\n          required: false\n        },\n        openModal: {\n          type: 'function',\n          required: false\n        }\n      },\n      autoRender,\n      prerenderTemplate: function containerTemplate ({ doc }) {\n        // Returning null makes sure the default zoid loading spinner\n        // doesn't display.\n        return null\n      },\n      // The slightly odd setup for exports is necessary so that we wait until the component is finishing rendering\n      // See https://github.com/krakenjs/zoid/blob/master/docs/api/xprops.md#xpropsexport--string--any---promisevoid\n      exports: ({ getExports }) => {\n        return {\n          onParentEvent: (event) => getExports().then(exports => exports.onParentEvent(event))\n        }\n      }\n    })\n\n    this.frameComponents[key] = {\n      component,\n      class: `ProvenanceModal--${variant}Variant`\n    }\n    return this.frameComponents[key]\n  }\n\n  csp (provenanceUrl) {\n    let connectSrc = `'self' https: ${provenanceUrl} https://upload.filestackapi.com https://appsignal-endpoint.net`\n    let frameAncestorsHttp = ''\n\n    if (provenanceUrl === 'https://www.provenance.org') {\n      provenanceUrl = 'https://assets.provenance.org'\n    } else if (provenanceUrl === 'https://staging.provenance.org') {\n      provenanceUrl = 'https://assets-staging.provenance.org'\n    } else {\n      connectSrc += ' http://provenance.test http://provenance.test:3000 http://localhost:8545 http://localhost:5001 https://ipfs.infura.io:5001 https://ipfs-cluster.provenance.org https://goerli.infura.io https://mainnet.infura.io wss://localhost:3035 https://localhost:3035'\n      frameAncestorsHttp = 'http:'\n    }\n\n    let csp = ''\n    csp += \"base-uri 'none';\"\n    csp += \"frame-src 'self' https:;\"\n    csp += `frame-ancestors 'self' https: ${frameAncestorsHttp};`\n    csp += `font-src 'self' ${provenanceUrl};`\n    csp += `img-src 'self' https: data: ${provenanceUrl};`\n    csp += `manifest-src 'self' ${provenanceUrl};`\n    csp += `media-src 'self' https: ${provenanceUrl};`\n    csp += \"object-src 'none';\"\n    csp += \"child-src 'none';\"\n    csp += \"worker-src 'none';\"\n    csp += `connect-src ${connectSrc}`\n\n    return csp\n  }\n}\n\nexport const frameFactory = new FrameFactory()\n","function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function t(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if(\"string\"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===n&&e.constructor&&(n=e.constructor.name);if(\"Map\"===n||\"Set\"===n)return Array.from(e);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,t)}(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,n=new Array(t);o<t;o++)n[o]=e[o];return n}var n,i,a,r,s,l=(n=[\"a[href]\",\"area[href]\",'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\"select:not([disabled]):not([aria-hidden])\",\"textarea:not([disabled]):not([aria-hidden])\",\"button:not([disabled]):not([aria-hidden])\",\"iframe\",\"object\",\"embed\",\"[contenteditable]\",'[tabindex]:not([tabindex^=\"-\"])'],i=function(){function o(e){var n=e.targetModal,i=e.triggers,a=void 0===i?[]:i,r=e.onShow,s=void 0===r?function(){}:r,l=e.onClose,c=void 0===l?function(){}:l,d=e.openTrigger,u=void 0===d?\"data-micromodal-trigger\":d,f=e.closeTrigger,h=void 0===f?\"data-micromodal-close\":f,v=e.openClass,g=void 0===v?\"is-open\":v,m=e.disableScroll,b=void 0!==m&&m,y=e.disableFocus,p=void 0!==y&&y,w=e.awaitCloseAnimation,E=void 0!==w&&w,k=e.awaitOpenAnimation,M=void 0!==k&&k,A=e.debugMode,C=void 0!==A&&A;!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,o),this.modal=document.getElementById(n),this.config={debugMode:C,disableScroll:b,openTrigger:u,closeTrigger:h,openClass:g,onShow:s,onClose:c,awaitCloseAnimation:E,awaitOpenAnimation:M,disableFocus:p},a.length>0&&this.registerTriggers.apply(this,t(a)),this.onClick=this.onClick.bind(this),this.onKeydown=this.onKeydown.bind(this)}var i,a,r;return i=o,(a=[{key:\"registerTriggers\",value:function(){for(var e=this,t=arguments.length,o=new Array(t),n=0;n<t;n++)o[n]=arguments[n];o.filter(Boolean).forEach((function(t){t.addEventListener(\"click\",(function(t){return e.showModal(t)}))}))}},{key:\"showModal\",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(this.activeElement=document.activeElement,this.modal.setAttribute(\"aria-hidden\",\"false\"),this.modal.classList.add(this.config.openClass),this.scrollBehaviour(\"disable\"),this.addEventListeners(),this.config.awaitOpenAnimation){var o=function t(){e.modal.removeEventListener(\"animationend\",t,!1),e.setFocusToFirstNode()};this.modal.addEventListener(\"animationend\",o,!1)}else this.setFocusToFirstNode();this.config.onShow(this.modal,this.activeElement,t)}},{key:\"closeModal\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=this.modal;if(this.modal.setAttribute(\"aria-hidden\",\"true\"),this.removeEventListeners(),this.scrollBehaviour(\"enable\"),this.activeElement&&this.activeElement.focus&&this.activeElement.focus(),this.config.onClose(this.modal,this.activeElement,e),this.config.awaitCloseAnimation){var o=this.config.openClass;this.modal.addEventListener(\"animationend\",(function e(){t.classList.remove(o),t.removeEventListener(\"animationend\",e,!1)}),!1)}else t.classList.remove(this.config.openClass)}},{key:\"closeModalById\",value:function(e){this.modal=document.getElementById(e),this.modal&&this.closeModal()}},{key:\"scrollBehaviour\",value:function(e){if(this.config.disableScroll){var t=document.querySelector(\"body\");switch(e){case\"enable\":Object.assign(t.style,{overflow:\"\"});break;case\"disable\":Object.assign(t.style,{overflow:\"hidden\"})}}}},{key:\"addEventListeners\",value:function(){this.modal.addEventListener(\"touchstart\",this.onClick),this.modal.addEventListener(\"click\",this.onClick),document.addEventListener(\"keydown\",this.onKeydown)}},{key:\"removeEventListeners\",value:function(){this.modal.removeEventListener(\"touchstart\",this.onClick),this.modal.removeEventListener(\"click\",this.onClick),document.removeEventListener(\"keydown\",this.onKeydown)}},{key:\"onClick\",value:function(e){(e.target.hasAttribute(this.config.closeTrigger)||e.target.parentNode.hasAttribute(this.config.closeTrigger))&&(e.preventDefault(),e.stopPropagation(),this.closeModal(e))}},{key:\"onKeydown\",value:function(e){27===e.keyCode&&this.closeModal(e),9===e.keyCode&&this.retainFocus(e)}},{key:\"getFocusableNodes\",value:function(){var e=this.modal.querySelectorAll(n);return Array.apply(void 0,t(e))}},{key:\"setFocusToFirstNode\",value:function(){var e=this;if(!this.config.disableFocus){var t=this.getFocusableNodes();if(0!==t.length){var o=t.filter((function(t){return!t.hasAttribute(e.config.closeTrigger)}));o.length>0&&o[0].focus(),0===o.length&&t[0].focus()}}}},{key:\"retainFocus\",value:function(e){var t=this.getFocusableNodes();if(0!==t.length)if(t=t.filter((function(e){return null!==e.offsetParent})),this.modal.contains(document.activeElement)){var o=t.indexOf(document.activeElement);e.shiftKey&&0===o&&(t[t.length-1].focus(),e.preventDefault()),!e.shiftKey&&t.length>0&&o===t.length-1&&(t[0].focus(),e.preventDefault())}else t[0].focus()}}])&&e(i.prototype,a),r&&e(i,r),o}(),a=null,r=function(e){if(!document.getElementById(e))return console.warn(\"MicroModal: ❗Seems like you have missed %c'\".concat(e,\"'\"),\"background-color: #f8f9fa;color: #50596c;font-weight: bold;\",\"ID somewhere in your code. Refer example below to resolve it.\"),console.warn(\"%cExample:\",\"background-color: #f8f9fa;color: #50596c;font-weight: bold;\",'<div class=\"modal\" id=\"'.concat(e,'\"></div>')),!1},s=function(e,t){if(function(e){e.length<=0&&(console.warn(\"MicroModal: ❗Please specify at least one %c'micromodal-trigger'\",\"background-color: #f8f9fa;color: #50596c;font-weight: bold;\",\"data attribute.\"),console.warn(\"%cExample:\",\"background-color: #f8f9fa;color: #50596c;font-weight: bold;\",'<a href=\"#\" data-micromodal-trigger=\"my-modal\"></a>'))}(e),!t)return!0;for(var o in t)r(o);return!0},{init:function(e){var o=Object.assign({},{openTrigger:\"data-micromodal-trigger\"},e),n=t(document.querySelectorAll(\"[\".concat(o.openTrigger,\"]\"))),r=function(e,t){var o=[];return e.forEach((function(e){var n=e.attributes[t].value;void 0===o[n]&&(o[n]=[]),o[n].push(e)})),o}(n,o.openTrigger);if(!0!==o.debugMode||!1!==s(n,r))for(var l in r){var c=r[l];o.targetModal=l,o.triggers=t(c),a=new i(o)}},show:function(e,t){var o=t||{};o.targetModal=e,!0===o.debugMode&&!1===r(e)||(a&&a.removeEventListeners(),(a=new i(o)).showModal())},close:function(e){e?a.closeModalById(e):a.closeModal()}});\"undefined\"!=typeof window&&(window.MicroModal=l);export default l;\n","import { listenForImpressions, track } from './analytics.js'\n\nexport function onChildEvent (event, container, onParentEvent) {\n  switch (event.name) {\n    case 'setup_impression_tracking':\n      listenForImpressions(container, () => {\n        onParentEvent({ name: 'impression_detected' })\n      })\n      break\n    case 'analytics_event':\n      // Analytics events coming from inside the Zoid frame are tracked inside the frame\n      // Hence there is no need to track these events using provenanceTrack() as well as clientTrack()\n      track(event.data.details, ['client'])\n      break\n    default:\n      console.warn('[SDK] Unrecognised event:', event)\n  }\n}\n","import MicroModal from 'micromodal'\n\nimport { frameFactory } from './frame-factory.js'\nimport { onChildEvent } from './events.js'\n\nexport default class Modal {\n  open ({ url, behavior, variant }) {\n    this.behavior = behavior\n    variant = variant || (url.includes('/x') ? 'full' : 'small')\n    this.frame = frameFactory.getFrame(variant, url)\n    this.modal = this.buildModalElement(behavior)\n    document.body.appendChild(this.modal)\n    this.renderModalContent(url)\n    this.showModal()\n  }\n\n  buildModalElement () {\n    const template = document.createElement('template')\n    template.innerHTML = `\n      <div id=\"provenance-modal\" class=\"ProvenanceModal SDK ${this.frame.class} ${this.behavior ? `ProvenanceModal--${this.behavior}Behavior` : ''}\" aria-hidden=\"true\">\n        <div class=\"ProvenanceModal-backdrop\" tabindex=\"-1\" data-micromodal-close>\n          <div class=\"ProvenanceModal-dialog\" role=\"dialog\" aria-modal=\"true\">\n            <button class=\"ProvenanceModal-closeBtn\" aria-label=\"Close modal\" data-micromodal-close>\n              <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n                <g fill=\"none\" fillrule=\"evenodd\">\n                  <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"0.5\"></circle>\n                  <g strokelinecap=\"round\" strokelinejoin=\"round\" strokewidth=\"2\">\n                    <path d=\"M8 16l8-8M8 8l8 8\"></path>\n                  </g>\n                </g>\n              </svg>\n            </button>\n            <!-- TODO: Fix modal css fetch from provenance app and re-enable-->\n            <!-- <div role=\"tooltip\" class=\"ProvenanceModal-tooltip ProvenanceModal-closeBtnTooltip\" aria-hidden=\"true\">Close modal</div>-->\n            <div class=\"ProvenanceModal-content\"></div>\n          </div>\n        </div>\n      </div>\n    `\n    return template.content.firstElementChild.cloneNode(true)\n  }\n\n  // Use Zoid to render the content of the modal\n  renderModalContent (url) {\n    const container = this.modal.querySelector('.ProvenanceModal-content')\n    const options = {\n      modal: true,\n      url,\n      version: VERSION,\n      onChildEvent: (event = {}) => { onChildEvent(event, container, this.component.onParentEvent) },\n      closeModal: () => { this.onClose() }\n    }\n\n    this.component = this.frame.component(options)\n    this.content = this.component.render(container).catch((error) => {\n      console.log(error)\n    })\n  }\n\n  showModal () {\n    MicroModal.show('provenance-modal', {\n      disableScroll: true,\n      onShow: modal => {\n        if (this.behavior === 'drawer') {\n          this.openDrawer(modal)\n        }\n\n        // Switch focus to the modal for accessibility\n        document.querySelector('[data-micromodal-close]').focus()\n      },\n      onClose: modal => {\n        if (this.behavior === 'drawer') {\n          this.closeDrawer(modal, e => {\n            this.modal.remove()\n          })\n        } else {\n          this.modal.remove()\n        }\n      }\n    })\n  }\n\n  openDrawer (modal) {\n    modal.dataset.state = 'drawer-open'\n  }\n\n  closeDrawer (modal, callback) {\n    modal.dataset.state = 'drawer-closed'\n    modal.addEventListener('transitionend', callback)\n  }\n}\n","import { encodeBundleContentsId, findBundleContentsId } from './structured-data.js'\nimport { frameFactory } from './frame-factory.js'\nimport Modal from './modal.js'\nimport { onChildEvent } from './events.js'\n\nclass Bundle {\n  constructor (options = {}) {\n    this.setupOptions(options)\n    if (!this.validateOptions(options)) return\n    this.addLocaleToEmbedURL(options)\n    this.initializeBundle(options)\n  }\n\n  setupOptions (options) {\n    options.type = 'bundle'\n    this.container = options.container || document.querySelector('provenance-bundle')\n  }\n\n  validateOptions (options) {\n    if (!this.container) { return console.error('Provenance: Bundle container not found.') }\n    if (!options.url) { return console.error('Provenance: Bundle url not found.') }\n    return true\n  }\n\n  addLocaleToEmbedURL (options) {\n    // Get the preferred language of the user from the browser\n    let language = navigator.language.slice(0, 2)\n\n    // For Mybacs, get the page language instead\n    if (location.hostname === 'mybacs.com') {\n      language = document.documentElement.getAttribute('lang')\n    }\n\n    // Parse the original URL\n    const url = new URL(options.url)\n\n    // Get the path segments as an array\n    const pathSegments = url.pathname.split('/')\n\n    // Don't do anything if there are two chars in the first path segment.\n    // It's an assumption, but likely it means that the language has already been set.\n    if (pathSegments.length > 1 && pathSegments[1].length === 2) return\n\n    // Append the locale to the URL, assuming it's not already there\n    url.pathname = `${language}${url.pathname}`\n\n    options.url = url.toString()\n  }\n\n  initializeBundle (options) {\n    this.hasRendered = false\n    if (this.isDataDrivenEmbed(options)) {\n      this.createFromBundleContentsId(options).catch(console.log)\n    } else {\n      this.createFromUrl(options)\n      if (options.identifier) this.setIdentifierAttribute(options.identifier)\n    }\n  }\n\n  isDataDrivenEmbed ({ url, schema }) {\n    if (schema) return true\n    const urlComponents = new URL(url).pathname.split('/')\n\n    return !/product|user|example/.test(urlComponents)\n  }\n\n  async createFromBundleContentsId (options) {\n    const id = await findBundleContentsId(options.schema)\n    if (!id) return console.error(`Provenance: Could not find identifier from ${options.schema} structured data`)\n\n    options.url += '/' + encodeBundleContentsId(id.schema, id.identifier)\n    this.createFromUrl(options)\n    this.setIdentifierAttribute(id.identifier)\n  }\n\n  createFromUrl (options) {\n    if (this.isShopifyUrl(options.url)) addVariantListener()\n\n    console.debug('Provenance: createFromUrl', this.container, options)\n    this.renderZoidComponent(this.container, options)\n  }\n\n  isShopifyUrl (url) {\n    return url.includes('shop=')\n  }\n\n  renderZoidComponent (container, options) {\n    this.initializeComponent(container, options)\n    let observer\n    if (!options.autoRenderBundle) {\n      observer = this.createIntersectionObserver(container)\n      observer.observe(container)\n    } else {\n      this.embed = this.component.render(container).catch(console.error)\n      this.hasRendered = true\n    }\n    this.handleBadgeClick(container, observer, options.autoRenderBundle)\n  }\n\n  initializeComponent (container, options) {\n    const bundleOptions = {\n      url: options.url,\n      version: VERSION,\n      onChildEvent: event => onChildEvent(event, container, this.component.onParentEvent),\n      openModal: modalOptions => this.openModal(modalOptions)\n    }\n\n    const frame = frameFactory.getFrame('embed', options.url, options.autoRenderBundle)\n    this.component = frame.component(bundleOptions)\n  }\n\n  createIntersectionObserver (container) {\n    this.hasRendered = false\n\n    return new IntersectionObserver((entries, observer) => {\n      entries.forEach(entry => {\n        if (entry.isIntersecting && document.body.contains(container)) {\n          this.renderComponent(container, observer)\n        }\n      })\n    })\n  }\n\n  handleBadgeClick (container, observer, autoRenderBundle = false) {\n    const badge = document.querySelector('provenance-trust-badge')\n    if (badge) {\n      badge.addEventListener('click', async e => {\n        e.preventDefault()\n\n        if (autoRenderBundle === false) {\n          await this.renderComponent(container, observer)\n        }\n\n        container.scrollIntoView({ block: 'center', behavior: 'smooth' })\n      })\n    }\n  }\n\n  // Call only this function whenever you need to render the zoid component.\n  // It ensures that the component is rendered once avoiding race conditions.\n  async renderComponent (container, observer) {\n    if (this.isBeingRendered || this.hasRendered) return\n\n    this.isBeingRendered = true\n\n    try {\n      await this.component.render(container)\n      this.hasRendered = true\n      observer?.unobserve(container)\n    } catch (error) {\n      console.error(error)\n    } finally {\n      this.isBeingRendered = false\n    }\n  }\n\n  openModal (options) {\n    this.modal = new Modal({ frameFactory })\n    this.modal.open(options)\n  }\n\n  setIdentifierAttribute (value) {\n    this.container.setAttribute('identifier', value)\n  }\n}\n\n/**\n * A function that, given a valid product identifier, displays the\n * Proof Point bundle relevant to the product.\n *\n * @param {string} id - A valid product identifier - usually a SKU or GTIN.\n */\nexport function setProductID (id) {\n  if (!id) return console.error(`Provenance: invalid product ID: ${id}.`)\n  console.debug('Provenance: setProductID called with arg:', id)\n\n  hideAllBundles()\n  manageBundleForId(id)\n}\n\nfunction hideAllBundles () {\n  document.querySelectorAll('provenance-bundle').forEach(elem => {\n    elem.hidden = true\n    elem.id = ''\n  })\n}\n\nfunction manageBundleForId (id) {\n  // Remove the trust badge ID from existing bundles if they have it\n  resetTrustBadgeId()\n\n  const bundle = document.querySelector(`provenance-bundle[identifier=\"${id}\"]`)\n\n  // Either display the existing bundle or initialize a new one\n  if (bundle) {\n    console.debug('Provenance: bundle already exists:', bundle)\n    displayExistingBundle(bundle, 'provenance-trust-badge')\n  } else {\n    initializeNewBundle('provenance-trust-badge', id)\n  }\n}\n\nfunction resetTrustBadgeId () {\n  // Check for an existing bundle with the trust badge ID\n  const existingTrustBadgeBundle = document.querySelector('provenance-bundle#provenance-trust-badge')\n\n  // If found, clear the ID so it can be reassigned\n  if (existingTrustBadgeBundle) {\n    existingTrustBadgeBundle.id = ''\n  }\n}\n\nfunction displayExistingBundle (bundle, idForNewBundle) {\n  bundle.hidden = false\n  bundle.id = idForNewBundle\n}\n\nfunction initializeNewBundle (idForNewBundle, id) {\n  const container = document.createElement('provenance-bundle')\n  container.id = idForNewBundle\n  const newURL = buildBundleURL(id)\n  appendNewBundle(container)\n  const options = { url: newURL, container, identifier: id, autoRenderBundle: true }\n  console.debug('Provenance: initializing new bundle:', options)\n  ProvenanceBundle(options)\n}\n\nfunction buildBundleURL (id) {\n  const url = document.querySelector('provenance-bundle').getAttribute('url')\n  return `${url}/${encodeBundleContentsId('product', id)}`\n}\n\nfunction appendNewBundle (container) {\n  document.querySelector('provenance-bundle:last-of-type')\n    .insertAdjacentElement('afterend', container)\n}\n\nfunction observeUrlForVariantChanges (variants) {\n  let lastUrl = location.href\n  new MutationObserver(() => {\n    const url = location.href\n    if (url !== lastUrl) {\n      lastUrl = url\n      const urlVariantId = new URLSearchParams(location.search).get('variant')\n      if (urlVariantId) {\n        const newSku = variants.find(v => v.id.toString() === urlVariantId).sku\n        setProductID(newSku)\n      }\n    }\n  }).observe(document, { subtree: true, childList: true })\n}\n\nexport function listenForVariantChangeEvent () {\n  document.addEventListener('provenanceVariantChange', (event) => {\n    setProductID(event.detail.identifier)\n  })\n}\n\nexport function addVariantListener () {\n  if (shopifyVariants()) {\n    listenForShopifyVariantChange()\n  } else {\n    listenForVariantChangeEvent()\n  }\n}\n\nfunction shopifyVariants () { return window.ShopifyAnalytics?.meta?.product?.variants }\n\nfunction listenForShopifyVariantChange () {\n  const variants = shopifyVariants()\n  if (variants) {\n    document.addEventListener('DOMContentLoaded', () => {\n      observeUrlForVariantChanges(variants)\n    })\n  }\n}\n\n/**\n * An initializer function that displays a Proof Point Bundle.\n *\n * Only a `url` is required to construct a Bundle.\n *\n * If no `container` is specified, the Bundle will be loaded\n * into the first `<provenance-bundle>` tag found in the DOM.\n *\n * @param {{\n *  url: string,\n *  schema?: 'Product' | 'Brand',\n *  container?: Element,\n *  autoRenderBundle: Boolean\n * }} options - An object containing initialization options.\n */\nexport function ProvenanceBundle (options) {\n  /* eslint-disable-next-line no-new */\n  new Bundle(options)\n}\n","import { addVariantListener } from './bundle.js'\n\nconst BRAND_SCHEMA_SELECTOR = '[itemtype$=\"://schema.org/Brand\"]'\nconst PRODUCT_SCHEMA_SELECTOR = '[itemtype$=\"://schema.org/Product\"]'\n\nconst BRAND_IDENTIFIERS = ['identifier']\nconst PRODUCT_IDENTIFIERS = ['sku', 'gtin', 'gtin12', 'gtin13', 'gtin14', 'gtin8', 'mpn', 'productID']\n\nconst MAX_RETRIES = 15\nconst INITIAL_DELAY_TIME = 350\n\nconst ERROR_MESSAGES = {\n  MICRODATA_JSON_PARSE_ERROR: 'Provenance components will not be shown due to malformed JSON. Microdata should be in correct JSON format, you may validate it here: https://validator.schema.org/'\n}\n\nconst initializationErrors = new Set()\n\nfunction reportErrors () {\n  initializationErrors.forEach((error) => console.error(error))\n  initializationErrors.clear()\n}\n\nexport async function findBundleContentsId (schemaType, maxRetries = MAX_RETRIES, initialDelayTime = INITIAL_DELAY_TIME) {\n  addVariantListener()\n  return withRetries(() => bundleContentsId(schemaType), maxRetries, initialDelayTime)()\n}\n\nexport async function findProductIdentifier () {\n  const productIdentifierPromise = await withRetries(productIdentifier)()\n  return productIdentifierPromise\n}\n\n// Modified from: https://stackoverflow.com/a/55270741/1582976\nconst withRetries = (fn, maxRetries = MAX_RETRIES, delayTime = INITIAL_DELAY_TIME) => async (...args) => {\n  let retryCount = 0\n\n  while (retryCount <= maxRetries) {\n    const result = await fn(...args)\n\n    if (result) return result\n\n    await new Promise((resolve) => setTimeout(resolve, delayTime))\n    retryCount++\n  }\n\n  reportErrors()\n\n  return null\n}\n\nfunction bundleContentsId (schemaType) {\n  switch (schemaType) {\n    case 'Brand':\n      return brandIdentifier()\n    case 'Product':\n      return productIdentifier()\n    default:\n      return productIdentifier() || brandIdentifier()\n  }\n}\n\nexport function encodeBundleContentsId (schema, id) {\n  return `${schema}/${encodeURIComponent(id)}`\n}\n\nfunction brandIdentifier () {\n  return getIdentifierFromHtml(BRAND_SCHEMA_SELECTOR, BRAND_IDENTIFIERS, 'user') || brandIdFromJsonLd()\n}\n\nexport function productIdentifier () {\n  return getIdentifierFromHtml(PRODUCT_SCHEMA_SELECTOR, PRODUCT_IDENTIFIERS, 'product') ||\n  productIdFromJsonLd() || productIdFromShopifyMetadata()\n}\n\nfunction getIdentifierFromHtml (selector, identifiers, schemaType) {\n  // First, try to find the exact match for the schema type\n  const el = document.querySelector(selector)\n  let id = findIdFromSchema(el, identifiers)\n  if (id) return { ...id, schema: schemaType }\n\n  // If no exact match, try a more flexible search across the document\n  id = findIdFromSchema(document, identifiers)\n  return id ? { ...id, schema: schemaType } : null\n}\n\nfunction findIdFromSchema (schema, fields) {\n  if (!schema) return null\n  for (const field of fields) {\n    const el = schema.querySelector(`[itemprop~=${field}]`)\n    if (el) return { identifier: el.textContent || el.content, type: field }\n  }\n  return null\n}\n\nfunction productIdFromShopifyMetadata () {\n  const variants = window.ShopifyAnalytics?.meta?.product?.variants\n  if (!variants) return null\n\n  const urlVariantId = new URLSearchParams(location.search).get('variant')\n  const sku = urlVariantId\n    ? variants.find((v) => v.id.toString() === urlVariantId)?.sku\n    : variants[0]?.sku\n\n  return sku ? { schema: 'product', identifier: sku, type: 'sku' } : null\n}\n\nfunction brandIdFromJsonLd () {\n  for (const obj of jsonLdObjects()) {\n    if (obj['@type'] === 'Brand') {\n      const key = BRAND_IDENTIFIERS.find((key) => obj[key])\n      if (key) return { schema: 'user', identifier: obj[key], type: key }\n    }\n  }\n  return null\n}\n\nfunction productIdFromJsonLd () {\n  for (let obj of jsonLdObjects()) {\n    if (Array.isArray(obj) && obj.length === 1) {\n      obj = obj[0]\n    }\n    // Handle arrays with multiple objects\n    if (Array.isArray(obj) && obj.length > 1) {\n      const product = obj.find(item => item['@type'] === 'Product')\n      if (product) {\n        const key = PRODUCT_IDENTIFIERS.find((key) => product[key])\n        if (key) return { schema: 'product', identifier: product[key], type: key }\n      } else {\n        const productGroup = obj.find(item => item['@type'] === 'ProductGroup')\n        if (productGroup) {\n          const product = productGroup.hasVariant\n          if (product && product[0]) {\n            const key = PRODUCT_IDENTIFIERS.find((key) => product[0][key])\n            if (key) return { schema: 'product', identifier: product[0][key], type: key }\n          }\n        }\n      }\n    }\n    if (Array.isArray(obj['@graph'])) {\n      const product = obj['@graph'].find((o) => o['@type'] === 'Product')\n      if (product) {\n        const key = PRODUCT_IDENTIFIERS.find((key) => product[key])\n        if (key) return { schema: 'product', identifier: product[key], type: key }\n      }\n    }\n    if (obj['@type'] === 'ProductGroup') {\n      const product = obj.hasVariant\n      if (product && product[0]) {\n        const key = PRODUCT_IDENTIFIERS.find((key) => product[0][key])\n        if (key) return { schema: 'product', identifier: product[0][key], type: key }\n      }\n    }\n    if (obj['@type'] === 'Product') {\n      const key = PRODUCT_IDENTIFIERS.find((key) => obj[key])\n      if (key) return { schema: 'product', identifier: obj[key], type: key }\n    }\n  }\n  return null\n}\n\n/**\n * Checks for one or more `<script type=\"application/ld+json\">` in the page.\n * @returns {Array} of parsed JSON-LD objects\n */\nexport function jsonLdObjects () {\n  return Array.from(document.querySelectorAll('[type=\"application/ld+json\"]')).flatMap((script) => {\n    try {\n      return [JSON.parse(script.textContent)]\n    } catch (e) {\n      initializationErrors.add(ERROR_MESSAGES.MICRODATA_JSON_PARSE_ERROR + '. Details: ' + e.message)\n      return []\n    }\n  })\n}\n","import { frameFactory } from './frame-factory.js'\nimport Modal from './modal.js'\nimport { onChildEvent } from './events.js'\nimport { encodeBundleContentsId, findBundleContentsId } from './structured-data.js'\n\nexport default class Experience {\n  constructor (options = {}) {\n    this.container = options.container || document.querySelector('provenance-experience')\n\n    if (!this.container) {\n      console.error('Provenance: Experience container not found.')\n      return\n    }\n\n    if (options.schema) {\n      this.createFromSchema(options)\n      return\n    }\n\n    if (options.url) {\n      this.renderZoidComponent(this.container, options.url)\n      return\n    }\n\n    // Only attempt to render via passport lookup if we haven't already rendered\n    const origin = options.origin || 'https://www.provenance.org'\n    this.findPassportId(options).then(passportId => {\n      const url = this.constructModalUrl(origin, passportId, options.countryCode)\n      this.renderZoidComponent(this.container, url)\n    })\n  }\n\n  async createFromSchema (options) {\n    const id = await findBundleContentsId(options.schema)\n    if (!id) return console.error(`Provenance: Could not find identifier from ${options.schema} microdata`)\n\n    options.url += '/' + encodeBundleContentsId(id.schema, id.identifier)\n\n    this.renderZoidComponent(this.container, options.url)\n  }\n\n  renderZoidComponent (container, url) {\n    const options = {\n      url,\n      version: VERSION,\n      onChildEvent: (event = {}) => { onChildEvent(event, container, this.component.onParentEvent) },\n      openModal: (options = {}) => { this.openModal(options) }\n    }\n    const frame = frameFactory.getFrame('embed', url)\n    this.component = frame.component(options)\n    this.embed = this.component.render(container).catch((error) => {\n      console.error(error)\n    })\n  }\n\n  openModal (options) {\n    this.modal = new Modal()\n    this.modal.open(options)\n  }\n\n  async findPassportId (options) {\n    if (options.passportId) {\n      return options.passportId\n    }\n\n    const apiOrigin = options.apiOrigin || 'https://api.provenance.org'\n    let url = `${apiOrigin}/v1/products`\n    if (options.gtin) {\n      url += `?gtin=${options.gtin}`\n    } else if (options.batch) {\n      url += `?batch=${options.batch}`\n    }\n    const response = await fetch(url, {\n      headers: {\n        'X-API-KEY': options.accessToken\n      }\n    })\n    const data = await response.json()\n    return data.id\n  }\n\n  constructModalUrl (origin, passportId, countryCode) {\n    let url = `${origin}/products/${passportId}/modal`\n\n    if (countryCode) {\n      url += `?country_code=${countryCode}`\n    }\n\n    return url\n  }\n}\n\n/**\n * An initializer function that displays an Experience.\n *\n * @param {{\n *   url: string,\n *   accessToken: string,\n *   batch?: string,\n *   container?: Element,\n *   countryCode?: string,\n *   gtin?: string,\n *   passportId?: string,\n *   schema?: 'Product' | 'Brand',\n * }} options - An object containing initialization options - see README.\n */\nexport function ProvenanceExperience (options) {\n  /* eslint-disable-next-line no-new */\n  new Experience(options)\n}\n","import * as api from './api.js'\nimport { ProvenanceTrustBadge } from './trust-badge/index.js'\nimport { ProvenanceExperience } from './experience.js'\nimport { ProvenanceBundle, setProductID } from './bundle.js'\nimport modalCSS from './modal.min.css'\nimport { findBundleContentsId } from './structured-data.js'\n\n/**\n * A function that does all necessary checks and populates Provenance HTML tags with Provenance content.\n * Experiences are rendered first, then Trust Badges and Bundles.\n * @returns {boolean} true if all content was successfully rendered; otherwise it will raise an error.\n */\nexport async function mountAll () {\n  document.querySelectorAll('provenance-experience').forEach(initializeExperience)\n\n  // Initial state\n  const trustBadge = document.querySelector('provenance-trust-badge')\n  const bundle = document.querySelector('provenance-bundle')\n  if (!bundle) { return false }\n\n  // Handle trust badges based on attribute presence\n  if (trustBadge) {\n    if (trustBadge.hasAttribute('shopify-shop-id')) {\n      await handleTrustBadgeWithShopifyId(trustBadge, bundle)\n      await handleBundle(bundle)\n    } else if (trustBadge.hasAttribute('access-token')) {\n      const identifier = await handleBundle(bundle)\n      if (!identifier) { return false }\n      await handleTrustBadgeWithAccessToken(trustBadge, identifier, bundle)\n    }\n  } else if (bundle) {\n    // Only log trust badge not found error on product bundles\n    document.querySelectorAll('provenance-bundle').forEach(initializeBundle)\n    logError('Trust Badge not found.')\n  } else {\n    return false\n  }\n  return true\n}\n\nexport async function handleTrustBadgeWithShopifyId (trustBadge, bundle) {\n  const apiOrigin = trustBadge.getAttribute('api-origin')\n  const shopifyShopId = trustBadge.getAttribute('shopify-shop-id')\n  const identifier = {\n    identifier: trustBadge.getAttribute('product-identifier'),\n    type: 'sku'\n  }\n\n  const offersResponse = await api.provenanceContent({ apiOrigin, shopifyShopId, identifier })\n  if (offersResponse?.ok) {\n    const autoRenderBundle = await ProvenanceTrustBadge(trustBadge, offersResponse)\n    initializeBundle(bundle, autoRenderBundle)\n    return true\n  } else {\n    const errorData = await offersResponse.json()\n    logError(`Error: ${errorData.error.code} - ${errorData.error.message}`)\n    return false\n  }\n}\n\nexport async function handleTrustBadgeWithAccessToken (trustBadge, identifier, bundle) {\n  const accessToken = trustBadge.getAttribute('access-token')\n  const apiOrigin = trustBadge.getAttribute('api-origin')\n\n  const offersResponse = await api.provenanceContent({ accessToken, apiOrigin, identifier })\n  if (offersResponse?.ok) {\n    const autoRenderBundle = await ProvenanceTrustBadge(trustBadge, offersResponse)\n    initializeBundle(bundle, autoRenderBundle)\n    return true\n  } else {\n    const errorData = await offersResponse.json()\n    logError(`Error: ${errorData.error.code} - ${errorData.error.message}`)\n    return false\n  }\n}\n\nexport async function handleBundle (bundle) {\n  let identifier = null\n  const bundleUrl = bundle.getAttribute('url')\n  if (bundle && bundleUrl) {\n    if (bundleTypeInUrl(bundleUrl)) {\n      return true\n    } else {\n      identifier = await findBundleContentsId()\n      return identifier\n    }\n  }\n  return false\n}\n\nfunction bundleTypeInUrl (bundleUrl) {\n  bundleUrl.includes('/user') || bundleUrl.includes('/example') || bundleUrl.includes('/product')\n}\n\nfunction initializeExperience (el) {\n  const accessToken = el.getAttribute('access-token')\n  const apiOrigin = el.getAttribute('api-origin')\n  const batch = el.getAttribute('batch')\n  const countryCode = el.getAttribute('country-code')\n  const gtin = el.getAttribute('gtin')\n  const origin = el.getAttribute('origin')\n  const passportId = el.getAttribute('passport-id')\n  const schema = el.getAttribute('schema')\n  const url = el.getAttribute('url')\n\n  ProvenanceExperience({\n    accessToken,\n    apiOrigin,\n    batch,\n    container: el,\n    countryCode,\n    gtin,\n    origin,\n    passportId,\n    schema,\n    url\n  })\n}\n\nfunction initializeBundle (el, autoRenderBundle) {\n  const schema = el.getAttribute('schema')\n  const url = el.getAttribute('url')\n\n  ProvenanceBundle({\n    container: el,\n    schema,\n    url,\n    autoRenderBundle\n  })\n}\n\nfunction logError (msg) { console.warn('Provenance:', msg) }\n\n// CSS from app needs to be injected in the parent page for modals to display\ndocument.head.insertAdjacentHTML('beforeend', `<style>${modalCSS}</style>`)\n\nmountAll()\n\nexport { ProvenanceExperience, ProvenanceBundle, setProductID }\n"],"names":["installedChunks","installChunk","cachedSetTimeout","cachedClearTimeout","process","module","exports","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","setTimeout","e","call","this","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","length","concat","drainQueue","timeout","len","run","marker","runClearTimeout","Item","array","noop","nextTick","args","Array","arguments","i","push","prototype","apply","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","name","binding","cwd","chdir","dir","umask","self","modules","installedModules","moduleId","l","m","c","d","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","default","object","property","hasOwnProperty","p","s","_setPrototypeOf","setPrototypeOf","__proto__","_inheritsLoose","subClass","superClass","constructor","_extends","assign","target","source","utils_isPromise","item","Promise","window","Window","_toString","toString","then","err","dom_PopupOpenError","component_create","component_destroy","destroyComponents","destroyAll","PROP_TYPE","PROP_SERIALIZATION","CONTEXT","EVENT","flushPromise","dispatchedErrors","possiblyUnhandledPromiseHandlers","activeCount","flushActive","promise","resolve","startActive","endActive","promise_ZalgoPromise","ZalgoPromise","handler","_this","resolved","rejected","errorHandled","error","handlers","dispatching","stack","_result","_error","isAsync","res","reject","_proto","result","dispatch","_this2","_err","indexOf","j","asyncReject","chain","firstPromise","secondPromise","_handlers$i","onSuccess","onError","_result2","promiseResult","catch","finally","onFinally","try","time","_this3","toPromise","TypeError","all","promises","count","results","slice","prom","hash","awaitPromises","_loop","map","items","method","onPossiblyUnhandledException","cancel","splice","context","delay","_delay","isPromise","flush","isRegex","WINDOW_TYPE","IFRAME","POPUP","IE_WIN_ACCESS_ERROR","isAboutProtocol","win","location","protocol","utils_getParent","parent","getOpener","opener","canReadFromWindow","getActualDomain","host","getDomain","domain","mockDomain","isSameDomain","desc","getOwnPropertyDescriptor","assertSameDomain","isAncestorParent","child","childParent","getFrames","frames","frame","_i","_frame","getAllChildFrames","_i3","_getFrames2","_i5","_getAllChildFrames2","getTop","top","_i7","_getAllChildFrames4","getAllFramesInWindow","iframeWindows","iframeFrames","isWindowClosed","allowMock","closed","message","mockclosed","iframeIndex","collection","contentWindow","parentNode","doc","ownerDocument","documentElement","contains","getAncestor","anyMatch","collection1","collection2","_i17","item1","_i19","getDistanceFromTop","distance","isSameTopWindow","win1","win2","top1","top2","allFrames1","allFrames2","opener1","opener2","matchDomain","pattern","origin","isArray","Boolean","match","JSON","stringify","some","subpattern","getDomainFromUrl","url","split","join","onCloseWindow","callback","maxtime","check","isWindow","obj","__cross_domain_utils_window_check__","getFrameForWindow","frameElement","_i21","_document$querySelect2","document","querySelectorAll","closeWindow","parentElement","removeChild","close","util_safeIndexOf","objectIDs","weakmap_CrossDomainSafeWeakMap","CrossDomainSafeWeakMap","weakmap","keys","values","Math","random","WeakMap","freeze","testWeakMap","testKey","set","_cleanupClosedWindows","delete","isSafeToReadWrite","entry","writable","index","has","getOrSet","_getPrototypeOf","getPrototypeOf","construct_construct","Parent","Class","Reflect","construct","sham","Proxy","Date","_isNativeReflectConstruct","a","instance","Function","wrapNativeSuper_wrapNativeSuper","_cache","Map","fn","Wrapper","configurable","getFunctionName","__name__","displayName","setFunctionName","base64encode","str","btoa","encodeURIComponent","replace","p1","String","fromCharCode","parseInt","Buffer","from","uniqueID","chars","charAt","floor","toISOString","toLowerCase","serializeArgs","subkey","val","uid","getEmptyObject","memoizeGlobalIndex","memoizeGlobalIndexValidFrom","memoize","options","simpleCache","thisCache","_options$thisNamespac","thisNamespace","cacheTime","memoizeIndex","memoizedFunction","_len","_key","cache","cacheKey","cacheResult","now","reset","memoizePromise","memoizedPromiseFunction","_arguments","_len2","_key2","inlineMemoize","logic","__inline_memoize_cache__","src_util_noop","called","stringifyError","level","newErr","extend","identity","safeInterval","loop","arrayFrom","isDefined","util_isRegex","util_getOrSet","cleanup","cleanErr","tasks","cleaned","cleaner","register","task","shift","assertExists","thing","clear","util_ExtendableError","_Error","ExtendableError","_this6","captureStackTrace","ReferenceError","getBody","body","isDocumentReady","readyState","isDocumentInteractive","urlEncode","parseQuery","queryString","params","_i2","_queryString$split2","pair","decodeURIComponent","extendQuery","originalQuery","props","filter","isElement","element","Element","nodeType","style","getElementSafe","id","querySelector","elementReady","el","interval","setInterval","clearInterval","awaitFrameLoadPromises","_ExtendableError","PopupOpenError","awaitFrameLoad","_promise","addEventListener","awaitFrameWindow","loadedFrame","dom_iframe","container","tag","styleText","createElement","class","className","setAttribute","attributes","_i10","_Object$keys2","styleSheet","cssText","appendChild","createTextNode","html","innerHTML","allowTransparency","backgroundColor","border","isIE","navigator","userAgent","hasAttribute","event","removeEventListener","showElement","setProperty","hideElement","destroyElement","isElementClosed","onResize","_temp","_ref2","_ref2$width","width","_ref2$height","height","_ref2$interval","_ref2$win","currentWidth","offsetWidth","currentHeight","offsetHeight","canceled","observer","getClientRects","newWidth","newHeight","ResizeObserver","observe","MutationObserver","childList","subtree","characterData","disconnect","isShadowElement","currentScript","getCurrentScript","stackDetails","exec","scriptLocation","_i22","_Array$prototype$slic2","getElementsByTagName","reverse","script","src","currentUID","toPx","toCSS","test","global_getGlobal","globalKey","getAttribute","hashedString","total","charCodeAt","abs","dataset","getObj","globalStore","defStore","store","storeKey","defVal","del","_SERIALIZER","WildCard","getWildcard","global","WINDOW_WILDCARD","windowStore","winStore","getStore","getInstanceID","resolveHelloPromise","_ref","helloPromises","existingPromise","newPromise","sayHello","_ref4","send","instanceID","_ref5","data","getWindowInstanceID","_ref6","_ref7","markWindowKnown","isSerializedType","__type__","determineType","serializeType","type","__val__","_DESERIALIZER","SERIALIZER","function","code","regex","date","toJSON","string","number","boolean","null","defaultSerializers","DESERIALIZER","RegExp","defaultDeserializers","cleanupProxyWindows","idToProxyWindow","_idToProxyWindow$keys2","shouldClean","getSerializedWindow","winPromise","_ref$id","windowNamePromise","windowTypePromise","getName","getType","focus","isClosed","setLocation","href","opts","_opts$method","_ref3","_ref3$method","form","display","_i24","_Object$keys4","_body$key","input","submit","setName","sameDomain","window_ProxyWindow","ProxyWindow","serializedWindow","isProxyWindow","actualWindow","actualWindowPromise","getID","setWindow","isPopup","_this4","isPopupPromise","getNamePromise","reopenPromise","open","focusPromise","getWindow","awaitWindow","matchWindow","_this5","proxyInstanceID","knownWindowInstanceID","unwrap","serialize","toProxyWindow","deserialize","_ref8","_ref9","addMethod","methodStore","proxyWindowMethods","lookupMethod","function_serializeFunction","destination","meth","methodSource","arg","__id__","serializeMessage","_serialize","serializers","serializer","deserializeMessage","_deserialize","deserializers","parse","deserializer","cross_domain_zalgo_promise","serializedPromise","cross_domain_function","serializedFunction","getDeserializedFunction","crossDomainFunctionWrapper","_args","fireAndForget","__origin__","__source__","cross_domain_window","SEND_MESSAGE_STRATEGIES","send_sendMessage","domainBuffer","buffer","serializedMessage","__post_robot_10_0_44__","strategies","errors","strategyName","getResponseListener","deleteResponseListener","isResponseListenerErrored","getRequestListener","requestListeners","_i4","winQualifier","nameListeners","domainListeners","__domain_regex__","_i6","_domainListeners$__DO2","_domainListeners$__DO3","listener","handleRequest","logName","sendResponse","ack","pathname","handleError","handleAck","handleResponse","receive_receiveMessage","receivedMessages","messages","parsedMessage","parseMessages","on_on","requestListener","addRequestListener","listenersCollection","_i8","_win2","_listenersCollection","_i12","_domain2","_i14","existingListener","regexListeners","regexListener","strDomain","errorHandler","postrobot_post_message","postMessage","postrobot_global","mockUserAgent","foreignGlobal","receiveMessage","send_send","domainMatcher","responseTimeout","childTimeout","actualParent","_i15","_getFrames8","targetDomain","actualDomain","normalizedDomain","responseListener","reqPromises","totalAckTimeout","totalResTimeout","ackTimeout","resTimeout","cancelled","max","setup_serializeMessage","setup_deserializeMessage","setup_toProxyWindow","lib_global_getGlobal","__zoid_9_0_78__","getProxyObject","STRING","OBJECT","FUNCTION","BOOLEAN","NUMBER","ARRAY","DOTIFY","BASE64","RENDER","RENDERED","DISPLAY","ERROR","CLOSE","DESTROY","PROPS","RESIZE","FOCUS","normalizeChildProp","propsDef","helpers","prop","childDecorate","onProps","resize","getParent","getParentDomain","show","hide","export","getSiblings","parseChildWindowName","windowName","_windowName$split","zoidcomp","encodedPayload","atob","getChildPayload","child_focus","child_destroy","props_defaultNoop","props_decorateOnce","eachProp","propDef","serializeProps","_METHOD$GET$METHOD$PO","_METHOD$GET$METHOD$PO2","getParam","queryParam","post","bodyParam","getValue","queryValue","bodyValue","finalParam","finalValue","serialization","dotify","prefix","newobj","every","_Object$keys6","dotkey","parentComponent","triggered","emitter","currentProxyWin","currentProxyContainer","childComponent","_ref$overrides","overrides","_ref$parentWin","parentWin","containerTemplate","prerenderTemplate","dimensions","autoResize","domainMatch","xports","initPromise","handledErrors","clean","state","internalState","visible","eventName","handlerList","trigger","_len3","_key3","triggerOnce","_len4","_key4","onErrorOverride","getProxyContainerOverride","getProxyContainer","showOverride","hideOverride","closeOverride","renderContainerOverride","renderContainer","getProxyWindowOverride","getProxyWindow","setProxyWinOverride","setProxyWin","openFrameOverride","openFrame","openPrerenderFrameOverride","openPrerenderFrame","prerenderOverride","prerender","openOverride","openPrerenderOverride","openPrerender","watchForUnloadOverride","watchForUnload","getInternalStateOverride","getInternalState","setInternalStateOverride","setInternalState","resolveInitPromise","rejectInitPromise","getPropsForChild","sendToChild","newInternalState","windowProp","_proxyWin","containerElement","insertShadowSlot","shadowHost","shadowRoot","slotName","slot","slotProvider","proxyWin","setState","getUrl","getAttributes","getChildDomain","getDomainMatcher","iframe","proxyPrerenderFrame","prerenderFrame","prerenderFrameWindow","getWindowRef","windows","initChild","childExports","destroy","proxyFrame","_requestPromises$get2","unloadWindowListener","closeParentWindowListener","checkWindowClose","secondIsClosed","exportsPromise","xport","actualExports","renderTemplate","renderer","proxyPrerenderWin","prerenderWindow","tagName","_arrayFrom2","children","_arrayFrom4","_autoResize$width","_autoResize$height","_autoResize$element","prerenderResizeListener","proxyContainer","_ref10","rerender","_ref11","innerContainer","containerWatcher","sacrificialFrame","sacrificialFrameWin","mutationObservers","_i18","elementClosed","mutationElement","mutationObserver","frameWin","removeError","getHelpers","updateProps","setProps","newProps","isUpdate","inputProps","propNames","aliases","alias","decorate","decoratedValue","required","childProps","init","onRender","onDisplay","onRendered","onClose","onDestroy","onFocus","render","_ref13","childDomain","delegatePromise","delegateProps","propName","allowDelegate","childOverridesPromise","_ref12","parentComp","getDelegateOverrides","childOverrides","_len5","_key5","_len6","_key6","_len7","_key7","_len8","_key8","_len9","_key9","_len10","_key10","_len11","_key11","watchForUnloadPromise","buildUrlPromise","query","originalUrl","originalHash","_url$split","_originalUrl$split","hashString","buildBodyPromise","onRenderPromise","getProxyContainerPromise","getProxyWindowPromise","buildWindowNamePromise","propRef","propsRef","parentDomain","checkClose","childPayload","openFramePromise","openPrerenderFramePromise","renderContainerPromise","_ref14","openPromise","_ref15","openPrerenderPromise","_ref16","setStatePromise","prerenderPromise","_ref17","setWindowNamePromise","_ref18","getMethodPromise","_ref19","loadUrlPromise","windowUrl","_ref20","watchForClosePromise","watchForClose","onDisplayPromise","openBridgePromise","runTimeoutPromise","onRenderedPromise","getProps","getExports","defaultContainerTemplate","div","cspNonce","classList","add","remove","cleanInstances","cleanZoid","initialized","sourceElement","originalEvent","comp","allowDelegateListener","delegateListener","bridgeUrl","_options$props","_options$dimensions","_options$autoResize","_options$allowedParen","allowedParentDomains","_options$attributes","_options$defaultConte","defaultContext","_options$containerTem","_options$prerenderTem","validate","_options$eligible","eligible","_options$logger","logger","info","_options$exports","xportsDefinition","_options$children","valuePromise","instances","isChild","payload","registerChild","xprops","components","onPropHandlers","parentExports","parentComponentWindow","ref","ancestor","_getAllFramesInWindow2","anyParent","currentParent","_getAllFramesInWindow4","winParent","normalizedProps","_ref2$data","_eligible","eligibility","reason","clone","_ref4$decorate","_render","finalContext","newInstance","renderTo","childComponents","_loop2","childName","Child","childInputProps","parentProps","isEligible","driver","driverName","dep","canRenderTo","component","destroyPromise","responseListeners","_responseListeners$ke2","utils_getUserAgent","getFrameByName","winFrames","_i9","childFrame","isOpener","normalizeMockUrl","isPerc","toNum","normalizeDimension","dim","awaitWindowHello","needsBridgeForBrowser","needsBridgeForWin","needsBridgeForDomain","needsBridge","getBridgeName","isBridge","documentBodyReady","registerRemoteWindow","findRemoteWindow","remoteWinPromise","registerRemoteSendMessage","sendMessage","remoteWin","remoteDomain","rejectRemoteSendMessage","linkWindow","popupWindowsByName","popupWindowsByWin","_popupWindowsByName$k2","winName","_details","details","setupBridge","windowOpen","last","bridgePromise","bridge","getWindowDetails","openTunnelToParent","canary","tunnelWindows","parentWindow","_tunnelWindows$keys2","tunnelWindow","postrobot_bridge","messagingChild","messagingParent","src_bridge","cleanUpWindow","openBridge","bridges","bridgeFrames","linkUrl","hasBridge","destroyBridges","_bridgeFrames$keys2","getDimensions","_getDimensions","_getDimensions$width","_getDimensions$height","outerWidth","left","round","screenX","screen","outerHeight","screenY","status","toolbar","menubar","resizable","scrollbars","popup","_len12","_key12","bridgeDomain","defaultPrerenderTemplate","spinner","ZOID_FRAME_ONLY","webpackAsyncContext","req","__webpack_require__","ids","__webpack_module_cache__","cachedModule","undefined","__webpack_modules__","definition","f","chunkId","reduce","u","runtime","installedChunkData","import","race","provenanceContent","accessToken","apiOrigin","identifier","shopifyShopId","console","log","endpoint","fetch","headers","eventData","v","tid","provenance","universalAnalyticsId","cid","crypto","randomUUID","ec","eventCategory","ea","eventAction","eventLabel","aip","npa","entries","roles","disableAnalytics","debug","forEach","role","dataLayer","ga","response","ok","warn","segment","action","Authorization","segmentAuth","properties","timestamp","userId","listenForImpressions","detectedCallback","IntersectionObserver","isIntersecting","threshold","createObserver","supportedLanguages","async","ProvenanceTrustBadge","offersResponse","proofPoints","trustBadge","variant","bg","bundle","autoRenderBundle","json","getStyle","lang","language","includes","hostname","getHTML","shadow","attachShadow","styleElement","textContent","prepend","badgeContainer","bgStyles","icons","getElementById","insertAdjacentHTML","iconHTML","innerText","insertAdjacentElement","pp","addProofPoints","handleClick","badge_type","badgeType","setupAnalytics","frameFactory","frameComponents","hashCode","b","getFrame","autoRender","provenanceUrl","rootUrl","autoResizeHeight","zoid","csp","sandbox","openModal","onParentEvent","connectSrc","frameAncestorsHttp","iterator","targetModal","triggers","onShow","openTrigger","closeTrigger","h","openClass","g","disableScroll","y","disableFocus","w","awaitCloseAnimation","E","k","awaitOpenAnimation","M","A","debugMode","C","modal","config","registerTriggers","onClick","onKeydown","showModal","activeElement","scrollBehaviour","addEventListeners","setFocusToFirstNode","removeEventListeners","closeModal","overflow","preventDefault","stopPropagation","keyCode","retainFocus","getFocusableNodes","offsetParent","shiftKey","closeModalById","MicroModal","onChildEvent","Modal","behavior","buildModalElement","renderModalContent","template","content","firstElementChild","cloneNode","openDrawer","closeDrawer","Bundle","setupOptions","validateOptions","addLocaleToEmbedURL","initializeBundle","URL","pathSegments","hasRendered","isDataDrivenEmbed","createFromBundleContentsId","createFromUrl","setIdentifierAttribute","schema","urlComponents","findBundleContentsId","encodeBundleContentsId","isShopifyUrl","addVariantListener","renderZoidComponent","initializeComponent","embed","createIntersectionObserver","handleBadgeClick","bundleOptions","modalOptions","renderComponent","badge","scrollIntoView","block","isBeingRendered","unobserve","setProductID","elem","hidden","existingTrustBadgeBundle","resetTrustBadgeId","displayExistingBundle","idForNewBundle","newURL","buildBundleURL","appendNewBundle","ProvenanceBundle","initializeNewBundle","manageBundleForId","shopifyVariants","variants","lastUrl","urlVariantId","URLSearchParams","search","find","sku","observeUrlForVariantChanges","listenForShopifyVariantChange","detail","ShopifyAnalytics","meta","product","BRAND_SCHEMA_SELECTOR","PRODUCT_SCHEMA_SELECTOR","BRAND_IDENTIFIERS","PRODUCT_IDENTIFIERS","MAX_RETRIES","INITIAL_DELAY_TIME","ERROR_MESSAGES","MICRODATA_JSON_PARSE_ERROR","initializationErrors","Set","schemaType","maxRetries","initialDelayTime","withRetries","brandIdentifier","productIdentifier","bundleContentsId","delayTime","retryCount","getIdentifierFromHtml","jsonLdObjects","brandIdFromJsonLd","productGroup","hasVariant","productIdFromJsonLd","productIdFromShopifyMetadata","selector","identifiers","findIdFromSchema","fields","field","flatMap","Experience","createFromSchema","findPassportId","passportId","constructModalUrl","countryCode","gtin","batch","ProvenanceExperience","mountAll","initializeExperience","handleTrustBadgeWithShopifyId","handleBundle","handleTrustBadgeWithAccessToken","logError","errorData","bundleUrl","bundleTypeInUrl","msg","head"],"sourceRoot":""}