{"version":3,"file":"omega.default.extra.plugins.browser.local.min.js","sources":["node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-object.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_has.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_cof.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-length.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-keys-internal.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_fails.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_dom-create.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-primitive.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_export.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_defined.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_array-includes.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iobject.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-iobject.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-integer.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-absolute-index.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_core.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_global.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_shared.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_uid.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_shared-key.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_enum-bug-keys.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-keys.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_a-function.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_ctx.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_is-object.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_an-object.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_descriptors.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_ie8-dom-define.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-dp.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_property-desc.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_hide.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-sap.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.object.keys.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_wks-define.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-create.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.symbol.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/object/keys.js","node_modules/@babel/runtime-corejs2/core-js/object/keys.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_redefine.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_meta.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_wks.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_set-to-string-tag.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_wks-ext.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-gops.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-pie.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_enum-keys.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_is-array.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-dps.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_html.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-gopn.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-gopn-ext.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-gopd.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/object/get-own-property-symbols.js","node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-symbols.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/object/get-own-property-descriptor.js","node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_own-keys.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es7.object.get-own-property-descriptors.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_create-property.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/object/get-own-property-descriptors.js","node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptors.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.object.define-properties.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/object/define-properties.js","node_modules/@babel/runtime-corejs2/core-js/object/define-properties.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.object.define-property.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/object/define-property.js","node_modules/@babel/runtime-corejs2/core-js/object/define-property.js","node_modules/@babel/runtime-corejs2/helpers/defineProperty.js","node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js","node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js","node_modules/@babel/runtime-corejs2/helpers/createClass.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-gpo.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.reflect.get.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_set-proto.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/reflect/get.js","node_modules/@babel/runtime-corejs2/core-js/reflect/get.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.object.set-prototype-of.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/object/set-prototype-of.js","node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.object.get-prototype-of.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/object/get-prototype-of.js","node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js","node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js","node_modules/@babel/runtime-corejs2/helpers/superPropBase.js","node_modules/@babel/runtime-corejs2/helpers/get.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.object.create.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/object/create.js","node_modules/@babel/runtime-corejs2/core-js/object/create.js","node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_invoke.js","node_modules/@babel/runtime-corejs2/helpers/inherits.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_bind.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.reflect.construct.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/reflect/construct.js","node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js","node_modules/@babel/runtime-corejs2/helpers/isNativeReflectConstruct.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es7.symbol.async-iterator.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es7.symbol.observable.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/symbol/index.js","node_modules/@babel/runtime-corejs2/core-js/symbol.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iterators.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-create.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-define.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_string-at.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.string.iterator.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-step.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.array.iterator.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/web.dom.iterable.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/symbol/iterator.js","node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js","node_modules/@babel/runtime-corejs2/helpers/typeof.js","node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js","node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js","node_modules/@babel/runtime-corejs2/helpers/createSuper.js","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/utils/PluginUtils.ts","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_classof.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_species-constructor.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_task.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_is-array-iter.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/core.get-iterator-method.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_for-of.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-call.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_microtask.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_new-promise-capability.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_promise-resolve.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_perform.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_user-agent.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_set-species.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-detect.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.promise.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_an-instance.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_redefine-all.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_library.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es7.promise.finally.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es7.promise.try.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/promise.js","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/events/EventStatus.ts","node_modules/@babel/runtime-corejs2/core-js/promise.js","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/utils/GlobalUtil.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/reportor/DataQueueSet.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/reportor/AH5EventReportor.ts","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-assign.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.object.assign.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/object/assign.js","node_modules/@babel/runtime-corejs2/core-js/object/assign.js","node_modules/@babel/runtime-corejs2/helpers/extends.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/json/stringify.js","node_modules/@babel/runtime-corejs2/core-js/json/stringify.js","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/events/AEvent.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/events/FailedEvent.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/events/TimeoutEvent.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/utils/ReportCallbackUtil.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/utils/EncodeHash.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/reportor/PostEventReportor.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/utils/SendStrategyChoice.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/events/SequencedEvent.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/events/OMGH5ReceivedEvent.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/events/BlockedEvent.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/AReportingStrategyPlugin.ts","src/com/didichuxing/plugins/defaultextra/PositionPlugin.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/events/OMGH5PageLeaveEvent.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/AOMGH5PageLeavePlugin.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/h5/OMGH5PageLeavePlugin.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/utils/ViewportUtils.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/utils/ElementUtils.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/events/OMGH5ClickEvent.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/AOMGH5ClickPlugin.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/h5/OMGH5ClickPlugin.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/AOMGH5ReceivedPlugin.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/h5/OMGH5ReceivedPlugin.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/events/OMGH5CustomEvent.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/AOMGH5CustomPlugin.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/h5/OMGH5CustomPlugin.ts","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.array.is-array.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/array/is-array.js","node_modules/@babel/runtime-corejs2/core-js/array/is-array.js","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/events/OMGH5JsErrorEvent.ts","node_modules/@omega-tracker/omg-abstract-strategy-plugin/src/com/didichuxing/tracker/plugin/utils/UUID.ts","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_string-ws.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_string-trim.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_parse-int.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.parse-int.js","node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/parse-int.js","node_modules/@babel/runtime-corejs2/core-js/parse-int.js","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/plugin/utils/MD5.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/AOMGH5JsErrorPlugin.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/h5/OMGH5JsErrorPlugin.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/events/OMGH5PageViewEvent.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/utils/PageStayTime.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/AOMGH5PageViewPlugin.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/h5/OMGH5PageViewPlugin.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/events/OMGH5ErrorEvent.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/AOMGH5ErrorPlugin.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/h5/OMGH5ErrorPlugin.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/events/OMGH5PerformanceEvent.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/AOMGH5PerformancePlugin.ts","src/com/didichuxing/plugins/DefaultExtraH5PluginsPublisher.ts","node_modules/@omega-tracker/omg-h5-default-strategy-plugin/src/com/didichuxing/tracker/h5/plugins/h5/OMGH5PerformancePlugin.ts"],"sourcesContent":["// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n","module.exports = require(\"core-js/library/fn/object/keys\");","module.exports = require('./_hide');\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","exports.f = require('./_wks');\n","exports.f = Object.getOwnPropertySymbols;\n","exports.f = {}.propertyIsEnumerable;\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","require('../../modules/es6.symbol');\nmodule.exports = require('../../modules/_core').Object.getOwnPropertySymbols;\n","module.exports = require(\"core-js/library/fn/object/get-own-property-symbols\");","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","require('../../modules/es6.object.get-own-property-descriptor');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n","module.exports = require(\"core-js/library/fn/object/get-own-property-descriptor\");","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","require('../../modules/es7.object.get-own-property-descriptors');\nmodule.exports = require('../../modules/_core').Object.getOwnPropertyDescriptors;\n","module.exports = require(\"core-js/library/fn/object/get-own-property-descriptors\");","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","require('../../modules/es6.object.define-properties');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperties(T, D) {\n return $Object.defineProperties(T, D);\n};\n","module.exports = require(\"core-js/library/fn/object/define-properties\");","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","module.exports = require(\"core-js/library/fn/object/define-property\");","var _Object$defineProperty = require(\"@babel/runtime-corejs2/core-js/object/define-property\");\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n _Object$defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var _Object$keys = require(\"@babel/runtime-corejs2/core-js/object/keys\");\n\nvar _Object$getOwnPropertySymbols = require(\"@babel/runtime-corejs2/core-js/object/get-own-property-symbols\");\n\nvar _Object$getOwnPropertyDescriptor = require(\"@babel/runtime-corejs2/core-js/object/get-own-property-descriptor\");\n\nvar _Object$getOwnPropertyDescriptors = require(\"@babel/runtime-corejs2/core-js/object/get-own-property-descriptors\");\n\nvar _Object$defineProperties = require(\"@babel/runtime-corejs2/core-js/object/define-properties\");\n\nvar _Object$defineProperty = require(\"@babel/runtime-corejs2/core-js/object/define-property\");\n\nvar defineProperty = require(\"./defineProperty.js\");\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = _Object$keys(object);\n\n if (_Object$getOwnPropertySymbols) {\n var symbols = _Object$getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return _Object$getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (_Object$getOwnPropertyDescriptors) {\n _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread2;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var _Object$defineProperty = require(\"@babel/runtime-corejs2/core-js/object/define-property\");\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n\n _Object$defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","require('../../modules/es6.reflect.get');\nmodule.exports = require('../../modules/_core').Reflect.get;\n","module.exports = require(\"core-js/library/fn/reflect/get\");","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","module.exports = require(\"core-js/library/fn/object/set-prototype-of\");","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","require('../../modules/es6.object.get-prototype-of');\nmodule.exports = require('../../modules/_core').Object.getPrototypeOf;\n","module.exports = require(\"core-js/library/fn/object/get-prototype-of\");","var _Object$setPrototypeOf = require(\"@babel/runtime-corejs2/core-js/object/set-prototype-of\");\n\nvar _Object$getPrototypeOf = require(\"@babel/runtime-corejs2/core-js/object/get-prototype-of\");\n\nfunction _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _Object$getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || _Object$getPrototypeOf(o);\n };\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nmodule.exports = _superPropBase;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var _Reflect$get = require(\"@babel/runtime-corejs2/core-js/reflect/get\");\n\nvar _Object$getOwnPropertyDescriptor = require(\"@babel/runtime-corejs2/core-js/object/get-own-property-descriptor\");\n\nvar superPropBase = require(\"./superPropBase.js\");\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && _Reflect$get) {\n module.exports = _get = _Reflect$get;\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n\n var desc = _Object$getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _get(target, property, receiver || target);\n}\n\nmodule.exports = _get;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","module.exports = require(\"core-js/library/fn/object/create\");","var _Object$setPrototypeOf = require(\"@babel/runtime-corejs2/core-js/object/set-prototype-of\");\n\nfunction _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = _Object$setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","var _Object$create = require(\"@babel/runtime-corejs2/core-js/object/create\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = _Object$create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","require('../../modules/es6.reflect.construct');\nmodule.exports = require('../../modules/_core').Reflect.construct;\n","module.exports = require(\"core-js/library/fn/reflect/construct\");","var _Reflect$construct = require(\"@babel/runtime-corejs2/core-js/reflect/construct\");\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false;\n if (_Reflect$construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","module.exports = require(\"core-js/library/fn/symbol\");","module.exports = {};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","module.exports = require(\"core-js/library/fn/symbol/iterator\");","var _Symbol = require(\"@babel/runtime-corejs2/core-js/symbol\");\n\nvar _Symbol$iterator = require(\"@babel/runtime-corejs2/core-js/symbol/iterator\");\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof _Symbol === \"function\" && typeof _Symbol$iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof _Symbol === \"function\" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var _typeof = require(\"@babel/runtime-corejs2/helpers/typeof\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var _Reflect$construct = require(\"@babel/runtime-corejs2/core-js/reflect/construct\");\n\nvar getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = _Reflect$construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}\n\nmodule.exports = _createSuper;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of PluginUtils\n */\n\nexport default abstract class PluginUtils {\n\n /**\n * page init上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_PAGE_INIT: string = 'OMGH5PageInit-reporting-strategy-plugin';\n\n /**\n * page init上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_OMGLOG: string = 'OMGH5Log-reporting-strategy-plugin';\n\n /**\n * page view上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_PAGE_VIEW: string = 'OMGH5PageView-reporting-strategy-plugin';\n\n /**\n * page leave上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_PAGE_LEAVE: string = 'OMGH5PageLeave-reporting-strategy-plugin';\n\n /**\n * received上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_RECEIVED: string = 'OMGH5Received-reporting-strategy-plugin';\n\n /**\n * click上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_CLICK: string = 'OMGH5Click-reporting-strategy-plugin';\n\n /**\n * js error上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_JS_ERROR: string = 'OMGH5JsError-reporting-strategy-plugin';\n\n /**\n * 用户自定义上报错误事件插件名\n * @type {string}\n */\n public static PLUGIN_NAME_ERROR: string = 'OMGH5Error-reporting-strategy-plugin';\n\n /**\n * 用户自定义埋点事件插件名\n * @type {string}\n */\n public static PLUGIN_NAME_CUSTOM: string = 'OMGH5Custom-reporting-strategy-plugin';\n\n /**\n * 性能上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_PERFORMANCE: string = 'OMGH5Performance-reporting-strategy-plugin';\n\n /**\n * 安全上报策略插件名称。\n * @type {string}\n */\n public static PLUGIN_NAME_SAFETYPING: string = 'OMGH5SafeTyping-reporting-strategy-plugin';\n\n /**\n * page init event id\n * @type {string}\n */\n public static EVENT_ID_PAGE_INIT: string = 'OMGH5PageInit';\n /**\n * page init event id\n * @type {string}\n */\n public static EVENT_ID_OMG_LOG: string = 'OMGH5Log';\n\n /**\n * page view event id\n * @type {string}\n */\n public static EVENT_ID_PAGE_VIEW: string = 'OMGH5PageView';\n\n /**\n * page leave event id\n * @type {string}\n */\n public static EVENT_ID_PAGE_LEAVE: string = 'OMGH5PageLeave';\n\n /**\n * received event id\n * @type {string}\n */\n public static EVENT_ID_RECEIVED: string = 'OMGH5Received';\n\n /**\n * click event id\n * @type {string}\n */\n public static EVENT_ID_CLICK: string = 'OMGH5Click';\n\n /**\n * js error event id\n * @type {string}\n */\n public static EVENT_ID_JS_ERROR: string = 'OMGH5JsError';\n\n /**\n * 用户自定义上报错误事件id\n * @type {string}\n */\n public static EVENT_ID_ERROR: string = 'OMGH5Error';\n\n /**\n * 性能数据上报 事件id\n * @type {string}\n */\n public static EVENT_ID_PERFORMANCE: string = 'OMGH5Performance';\n /**\n * 安全专项上报 事件id\n * @type {string}\n */\n public static EVENT_ID_SAFETYPING: string = 'OMGSafeTyping';\n}\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","'use strict';\nvar global = require('./_global');\nvar core = require('./_core');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var hide = require('./_hide');\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n","module.exports = true;\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The enum class of EventStatus\n */\n\nexport enum EventStatus {\n\n /**\n * 正常状态的事件。\n */\n NORMAL = 'normal',\n\n /**\n * 被阻止上报的事件\n * @type {string}\n */\n BLOCKED = 'blocked',\n\n /**\n * 上报失败的事件。\n * @type {string}\n */\n FAILED = 'failed',\n\n /**\n * 上报超时的事件。\n * @type {string}\n */\n TIMEOUT = 'timeout'\n}\n","module.exports = require(\"core-js/library/fn/promise\");","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of GlobalUtil\n */\n\nexport default abstract class GlobalUtil {\n /**\n * 当前页面是否加载完成\n * @returns {boolean}\n */\n public static isLoaded(): boolean {\n if (window.performance && window.performance.timing) { // 现代浏览器\n return !!window.performance.timing.loadEventEnd;\n } else { // 老式浏览器\n return window.document.readyState === 'complete';\n }\n }\n\n /**\n * 是否空字符串\n * @param str{string}\n * @returns {boolean}\n */\n public static isEmptyString(str: string | undefined): boolean {\n if (!str) {\n return false;\n }\n let result = true;\n if (Object.prototype.toString.call(str) !== '[object String]') {\n result = false;\n }\n // \\s 小写的s是,匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \\f\\n\\r\\t\\v]。\n if (str.replace(/(^\\s*)|(\\s*$)/g, '').length === 0) {\n result = false;\n }\n return result;\n }\n\n /**\n * 设置OMG的日志\n * @param str\n */\n public static dispatchOmgLog(str: string): void {\n const mesageEvent: MessageEvent = document.createEvent('MessageEvent');\n mesageEvent.initMessageEvent('omglog', false, false, str, '', '', window);\n window.dispatchEvent(mesageEvent);\n }\n\n /**\n * 判断当前应用的 scheme 是否为桌面环境\n * @returns {boolean}\n */\n public static isDesktop(): boolean {\n return window.location && window.location.protocol === 'file:';\n }\n\n /**\n * 获取当前应使用的 protocol\n * @returns {string}\n */\n public static getProtocol(): string {\n // 20190618 lincal:应安全部要求,全面启用 https 协议\n return 'https://';\n // return GlobalUtil.isDesktop() ? 'https://' : '//';\n }\n}\n","import { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\n\nexport default class DataQueueSet {\n private static instance: DataQueueSet;\n private arr: ITrackedEvent[] = [];\n\n private constructor() {\n }\n\n public static getInstance(): DataQueueSet {\n if (!DataQueueSet.instance) {\n DataQueueSet.instance = new DataQueueSet();\n }\n return this.instance;\n }\n\n /**\n * 是否重复\n */\n private uniq(value: ITrackedEvent): boolean {\n let result = true;\n this.arr.forEach((item) => {\n if (value.getData().viewportId === item.getData().viewportId &&\n value.getData().sequence === item.getData().sequence) {\n result = false;\n }\n });\n return result;\n }\n\n /**\n * 添加\n */\n public add(value: ITrackedEvent): void {\n if (this.uniq(value)) {\n this.arr.push(value);\n }\n }\n\n /**\n * 是否为空\n */\n public empty(): boolean {\n return this.arr.length === 0;\n }\n\n /**\n * 删除所有\n */\n public removeAll(): void {\n this.arr = [];\n }\n\n /**\n * 返回数组\n */\n public getData(): ITrackedEvent[] {\n return this.arr;\n }\n\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AH5EventReportor\n */\n\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\nimport GlobalUtil from 'com/didichuxing/tracker/plugin/utils/GlobalUtil';\nimport DataQueueSet from 'com/didichuxing/tracker/plugin/reportor/DataQueueSet';\n\ninterface IUnreportedItem {\n\n /**\n * 未上报事件\n */\n event: ITrackedEvent;\n\n /**\n * 该事件上报成功后执行的方法。\n * @param {ITrackedEvent} evt\n */\n resolve(evt: ITrackedEvent): void;\n\n /**\n * 该事件上报失败后执行的方法。\n * @param {ITrackedEvent} evt\n */\n reject(evt: ITrackedEvent): void;\n}\n\nexport default abstract class AH5EventReportor implements IEventReportor {\n\n private context: ITrackerContext;\n private event: ITrackedEvent;\n\n /**\n * 待上报事件。\n * - 移除等待上报\n */\n private unreportedEvents: IUnreportedItem[];\n /**\n * 上报失败事件\n */\n protected readonly errorreportedEvents = DataQueueSet.getInstance();\n\n /**\n * @constructor\n * @param {ITrackerContext} context\n * @param {ITrackedEvent} event\n */\n constructor(context: ITrackerContext, event: ITrackedEvent) {\n this.event = event;\n this.context = context;\n this.unreportedEvents = [];\n this.reportEventsAfterLoad = this.reportEventsAfterLoad.bind(this);\n window.addEventListener('load', this.reportEventsAfterLoad);\n }\n\n /**\n * load之后,将未上报事件集中依次上报。\n */\n private reportEventsAfterLoad(): void {\n window.removeEventListener('load', this.reportEventsAfterLoad);\n while (this.unreportedEvents.length) {\n const unreportedItem: IUnreportedItem | undefined = this.unreportedEvents.shift();\n if (unreportedItem) {\n this.reportEventImmediately(unreportedItem.event).then(unreportedItem.resolve, unreportedItem.reject);\n }\n }\n }\n\n /**\n * 得到context信息\n * @returns {ITrackerContext}\n */\n protected getContext(): ITrackerContext {\n return this.context;\n }\n\n /**\n * 上报路径path\n * @returns {string}\n */\n protected get reportPath(): string {\n return '/api/web/stat';\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {Promise}\n */\n public reportEvent(): Promise {\n if (!GlobalUtil.isEmptyString(this.event.getData().appKey)) {\n GlobalUtil.dispatchOmgLog('[Omega] H5 appKey 参数 不可为空');\n throw new Error('[Omega] H5 appKey 参数 不可为空');\n return Promise.reject();\n }\n if (!this.errorreportedEvents.empty()) {\n this.errorreportedEvents.getData().forEach((value) => {\n this.reportEventImmediately(value);\n });\n }\n this.errorreportedEvents.removeAll();\n return this.reportEventImmediately(this.event);\n // 移除上报等待逻辑\n // if (GlobalUtil.isLoaded() || this.event.getType() === PluginUtils.EVENT_ID_PAGE_INIT ||\n // this.event.getType() === PluginUtils.EVENT_ID_OMG_LOG) {\n // // onload已经执行完或者当前事件为页面初始化事件\n // // 如果有上报错误的数据也去上报\n // if (!this.errorreportedEvents.empty()) {\n // this.errorreportedEvents.getData().forEach((value) => {\n // this.reportEventImmediately(value);\n // });\n // }\n // this.errorreportedEvents.removeAll();\n // return this.reportEventImmediately(this.event);\n // } else {\n // // load未完成,将事件聚集,等待集中上报。\n // return new Promise((resolve: (evt: ITrackedEvent) => void,\n // reject: (evt: ITrackedEvent) => void): void => {\n // this.unreportedEvents.push({\n // event: this.event,\n // resolve: resolve,\n // reject: reject\n // });\n // });\n // }\n }\n\n /**\n * 马上直接上报事件。\n * @param {ITrackedEvent} event\n * @returns {Promise}\n */\n protected abstract reportEventImmediately(event: ITrackedEvent): Promise;\n}\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","module.exports = require(\"core-js/library/fn/object/assign\");","var _Object$assign = require(\"@babel/runtime-corejs2/core-js/object/assign\");\n\nfunction _extends() {\n module.exports = _extends = _Object$assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var core = require('../../modules/_core');\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n","module.exports = require(\"core-js/library/fn/json/stringify\");","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AEvent\n */\n\nimport { IPlanObject } from 'com/didichuxing/IPlanObject';\nimport { IObjectMap } from 'com/didichuxing/IObjectMap';\nimport { IContext } from 'com/didichuxing/context/IContext';\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IContextContainer } from 'com/didichuxing/context/IContextContainer';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { ITrackedEventData } from 'com/didichuxing/tracker/event/ITrackedEventData';\nimport { IAttrs } from 'com/didichuxing/tracker/IAttrs';\nimport { EventStatus } from 'com/didichuxing/tracker/plugin/events/EventStatus';\nimport GlobalUtil from 'com/didichuxing/tracker/plugin/utils/GlobalUtil';\n\nexport default abstract class AEvent implements ITrackedEvent, IContextContainer {\n\n /**\n * 事件生成的额外信息\n */\n private readonly info?: IAttrs;\n\n /**\n * 上报的上下文环境\n */\n private readonly context: IContext;\n\n /**\n * 事件的额外参数。\n */\n private readonly attrs: IAttrs;\n\n /**\n * @constructor\n * @param {IAttrs} attrs\n * @param {IContext} context\n * @param {IAttrs} info\n */\n constructor(attrs: IAttrs, context: IContext, info?: IAttrs) {\n this.attrs = attrs;\n this.context = context;\n this.info = info;\n }\n\n /**\n * 获取版本号\n */\n private getVersion() {\n return {\n trackerVersion: this.getContext().version\n };\n }\n\n /**\n * @abstract\n * @returns {string}\n */\n public abstract getType(): string;\n\n /**\n * @override\n * @inheritDoc\n * @returns {ITrackedEventData}\n */\n public getData(): ITrackedEventData {\n const context: ITrackerContext = this.getContext() as ITrackerContext;\n let appKey = context.appKey || context.productName;\n let url: string = context.url || location.href;\n /**\n * 当配置appkey可修改的时候,将event生成的信息中的appkey进行填充\n */\n if ( context && context.modifyAppKey && this.info && this.info.appKey) {\n appKey = this.info.appKey;\n }\n /**\n * 当配置了url的解析则需要将url过滤\n * - noUrlParam 上报的时候不上报参数\n * - formatUrl 上报的时候进行url格式化\n */\n try {\n if (context && context.noUrlParam) {\n url = url.split('?')[0];\n } else if (context && context.formatUrl) {\n url = context.formatUrl(url);\n }\n } catch (error) {\n console.info('url解析异常', error);\n }\n return {\n eventId: this.getType(),\n timestamp: new Date().getTime(),\n viewportId: context.viewportId,\n appName: context.appName,\n appVersion: context.appVersion,\n omgId: context.omgId,\n url,\n userAgent: context.userAgent,\n osType: context.osType,\n osVersion: context.osVersion,\n appKey: appKey,\n userName: context.userName,\n userId: context.userId,\n // cityId: context.cityId,\n // telephone: context.telephone,\n // latitude: context.latitude,\n // longitude: context.longitude,\n bizId: context.bizId,\n locale: context.locale,\n countyId: context.countyId,\n countryCallingCode: context.countryCallingCode,\n utcOffset: context.utcOffset,\n attrs: this.getAttrs(),\n from: this.getFrom()\n };\n }\n\n /**\n * 将事件数据属性映射成上报的字段。\n * @returns {IObjectMap}\n */\n protected getDataKeyMap(): IObjectMap {\n return {\n eventId: 'e',\n timestamp: 'ts',\n viewportId: 'uwid',\n version: 'jv',\n appName: 'an',\n appVersion: 'av',\n omgId: 'oid',\n url: 'v',\n latitude: 'lat',\n longitude: 'lng',\n userAgent: 'ua',\n osType: 'ot',\n osVersion: 'ov',\n appKey: 'ak',\n userName: 'un',\n userId: 'uid',\n cityId: 'cityid',\n telephone: 'tel',\n bizId: 'bizId',\n locale: 'le',\n countyId: 'coi',\n countryCallingCode: 'dcc',\n utcOffset: 'uo',\n from: 'fr'\n };\n }\n\n /**\n * 将attrs属性映射成上报的字段。\n * @returns {IObjectMap}\n */\n protected getAttrsKeyMap(): IObjectMap {\n return {\n _label: 'l',\n trackerVersion: 'jv'\n };\n }\n\n /**\n * 把event data(去除attrs)序列化成json字符串。\n * @returns {string}\n */\n public serialize2JsonStrWithoutAttrs(): string {\n try {\n const eventData: ITrackedEventData = this.getData();\n const obj: IPlanObject = {};\n const dataKeyMap: IObjectMap = this.getDataKeyMap();\n for (const prop in eventData) {\n if (prop !== 'attrs' && !/Null|Undefined/.test(Object.prototype.toString.call(eventData[prop]))) {\n obj[dataKeyMap[prop] || prop] = eventData[prop];\n }\n }\n return JSON.stringify(obj);\n } catch (e) {\n GlobalUtil.dispatchOmgLog('serialize2JsonStrWithoutAttrs Error');\n return '';\n }\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public serialize(): string {\n try {\n const eventData: ITrackedEventData = this.getData();\n // 先用Object内置类的keys方法获取要排序对象的属性名,再利用Array原型上的sort方法对获取的属性名进行排序,newkey是一个数组\n const newkeys = Object.keys(eventData).sort();\n const kvs: string[] = [];\n const dataKeyMap: IObjectMap = this.getDataKeyMap();\n // 要保证顺序 所以attrs也放进了循环\n newkeys.forEach((prop) => {\n if (prop !== 'attrs' && !/Null|Undefined/.test(Object.prototype.toString.call(eventData[prop]))) {\n kvs.push(`${ dataKeyMap[prop] || prop }=${ encodeURIComponent(eventData[prop]) }`);\n } else if (prop === 'attrs') {\n const attrsJsonStr: string = this.serializeAttrs2JsonStr(eventData.attrs || {});\n if (attrsJsonStr !== '{}') {\n kvs.push(`attrs=${ encodeURIComponent(attrsJsonStr) }`);\n }\n }\n });\n return kvs.join('&');\n } catch (e) {\n GlobalUtil.dispatchOmgLog('serialize Error');\n return '';\n }\n }\n\n /**\n * 格式化attrs\n * @param {IAttrs} attrs\n * @returns {string}\n */\n public serializeAttrs2JsonStr(attrs: IAttrs): string {\n try {\n const serializedAttrs: IPlanObject = {};\n const attrsKeyMap: IObjectMap = this.getAttrsKeyMap();\n for (const prop in attrs) {\n if (attrs.hasOwnProperty(prop)) {\n const key: string = attrsKeyMap[prop] || prop;\n if (/Object|Array/.test(Object.prototype.toString.call(attrs[prop]))) {\n serializedAttrs[key] = JSON.stringify(attrs[prop]);\n } else if (/String/.test(Object.prototype.toString.call(attrs[prop]))) {\n serializedAttrs[key] = attrs[prop];\n } else if (/Number/.test(Object.prototype.toString.call(attrs[prop]))) {\n serializedAttrs[key] = attrs[prop];\n } else if (/Boolean/.test(Object.prototype.toString.call(attrs[prop]))) {\n serializedAttrs[key] = attrs[prop] | 0;\n }\n }\n }\n return JSON.stringify(serializedAttrs);\n } catch (e) {\n GlobalUtil.dispatchOmgLog('serializeAttrs2JsonStr Error');\n return '';\n }\n\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IContext}\n */\n public getContext(): IContext {\n return this.context;\n }\n\n /**\n * 该事件的额外参数。\n * @returns {IAttrs}\n */\n protected getAttrs(): IAttrs {\n const thisAttrs: any = {};\n const context = this.getContext() as ITrackerContext;\n if (context.openId) {\n thisAttrs['_OMGPUID'] = context.openId;\n }\n\n return Object.assign(thisAttrs, context.attrs || {}, this.attrs, this.getVersion());\n }\n\n /**\n * 获取框架来源\n * 由业务方指定\n */\n protected getFrom(): string {\n const context: ITrackerContext = this.getContext() as ITrackerContext;\n if (GlobalUtil.isEmptyString(context.from)) {\n return `h5-${ context.from }`;\n } else {\n return 'h5';\n }\n }\n\n /**\n * 事件的状态。\n * {@link com/didichuxing/tracker/h5/plugins/events/EventStatus}\n * @returns {EventStatus}\n */\n public abstract get status(): EventStatus;\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of FailedEvent\n */\n\nimport { IContext } from 'com/didichuxing/context/IContext';\nimport { IAttrs } from 'com/didichuxing/tracker/IAttrs';\nimport { EventStatus } from 'com/didichuxing/tracker/plugin/events/EventStatus';\nimport AEvent from 'com/didichuxing/tracker/plugin/events/AEvent';\n\nexport default class FailedEvent extends AEvent {\n\n /**\n * custom event id\n */\n private readonly eventId: string;\n\n /**\n * error event\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error}\n */\n private readonly error: Error;\n\n /**\n * @constructor\n * @param {IAttrs} attrs\n * @param {IContext} context\n */\n constructor(error: Error, eventId: string, attrs: IAttrs, context: IContext) {\n super(attrs, context);\n this.error = error;\n this.eventId = eventId;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getType(): string {\n return this.eventId;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {EventStatus}\n */\n public get status(): EventStatus {\n return EventStatus.FAILED;\n }\n\n /**\n * 获取出错信息事件。\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error}\n * @returns {ErrorEvent}\n */\n public getError(): Error {\n return this.error;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of TimeoutEvent\n */\n\nimport { IContext } from 'com/didichuxing/context/IContext';\nimport { IAttrs } from 'com/didichuxing/tracker/IAttrs';\nimport { EventStatus } from 'com/didichuxing/tracker/plugin/events/EventStatus';\nimport AEvent from 'com/didichuxing/tracker/plugin/events/AEvent';\n\nexport default class TimeoutEvent extends AEvent {\n\n /**\n * custom event id\n */\n private readonly eventId: string;\n\n /**\n * @constructor\n * @param {IAttrs} attrs\n * @param {IContext} context\n */\n constructor(eventId: string, attrs: IAttrs, context: IContext) {\n super(attrs, context);\n this.eventId = eventId;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getType(): string {\n return this.eventId;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {EventStatus}\n */\n public get status(): EventStatus {\n return EventStatus.TIMEOUT;\n }\n}\n","export interface IReportCallbackArg {\n\n /**\n * 上报事件的名单。\n * @readonly\n */\n readonly eventid: IReportableEventList | null;\n}\n\nexport interface IReportableEventList {\n\n /**\n * 上报事件id\n * 0为禁止上报,1为允许上报。\n * @readonly\n */\n readonly [eventid: string]: number;\n}\n\nexport default abstract class ReportCallbackUtil {\n\n /**\n * response回调方法挂载的对象名称。\n * @type {string}\n */\n public static readonly OMG_CALLBACK_OBJ_NAME: string = '__OMG_CBKS__';\n\n /**\n * omega事件黑名单列表对象名称。\n * @type {string}\n */\n public static readonly OMG_EVENT_BLACKLIST_NAME: string = '__OMG_EVENT_BLACKLIST__';\n\n public static reportCallbackName(rawSerialized: string): string {\n const cbObjName: string = ReportCallbackUtil.OMG_CALLBACK_OBJ_NAME;\n const cbkMethodName: string = `_cbk${ new Date().getTime() }`;\n rawSerialized = `${rawSerialized}&cbk=${ cbObjName }.${ cbkMethodName }`;\n const self = this;\n if ((window as any)[cbObjName]) {\n (window as any)[cbObjName][cbkMethodName] = function() {\n delete (window as any)[cbObjName][cbkMethodName];\n self.reportCallback.apply(self, arguments);\n };\n } else {\n (window as any)[cbObjName] = {\n [cbkMethodName]: function() {\n delete (window as any)[cbObjName][cbkMethodName];\n self.reportCallback.apply(self, arguments);\n }\n };\n }\n return rawSerialized;\n }\n /**\n * 上报后的回调。\n * @param {IReportCallbackArg} cbArg\n */\n public static reportCallback(cbArg?: IReportCallbackArg): void {\n const bn: string = ReportCallbackUtil.OMG_EVENT_BLACKLIST_NAME;\n if (cbArg && cbArg.eventid) {\n if (!(window as any)[bn]) {\n (window as any)[bn] = [];\n }\n for (const prop in cbArg.eventid) {\n if (cbArg.eventid[prop] === 0) { // event black list\n if (((window as any)[bn] as string[]).indexOf(prop) < 0) {\n // not existed\n ((window as any)[bn] as string[]).push(prop);\n }\n } else { // event need to be removed from black list\n const index: number = ((window as any)[bn] as string[]).indexOf(prop);\n if (index >= 0) { // existed\n ((window as any)[bn] as string[]).splice(index, 1);\n }\n }\n }\n }\n }\n}\n","export default abstract class EncodeHash {\n /**\n * 对输入字符串进行Hash编码。\n * @param {string} str\n * @returns {number}\n */\n public static encodeHash(str: string): number {\n let hash: number = 1315423911;\n for (let i: number = 0, j: number = str.length; i < j; ++i) {\n hash ^= ((hash << 5) + str.charCodeAt(i) + (hash >> 2));\n }\n return hash & 0x7FFFFFFF;\n }\n\n /**\n * 输出增加tk的URL\n * @param str\n */\n public static encodeHashUrl(str: string): string {\n return `${ str }&tk=${ this.encodeHash(str) }`;\n }\n}\n","import AH5EventReportor from 'com/didichuxing/tracker/plugin/reportor/AH5EventReportor';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport FailedEvent from 'com/didichuxing/tracker/plugin/events/FailedEvent';\nimport TimeoutEvent from 'com/didichuxing/tracker/plugin/events/TimeoutEvent';\nimport ReportCallbackUtil from 'com/didichuxing/tracker/plugin/utils/ReportCallbackUtil';\nimport EncodeHash from 'com/didichuxing/tracker/plugin/utils/EncodeHash';\nimport GlobalUtil from 'com/didichuxing/tracker/plugin/utils/GlobalUtil';\n\n/**\n * 上报超时默认时间,单位毫秒。\n * @type {number}\n */\nconst REPORT_TIMEOUT: number = 1500;\n\nconst forbidReportEventListKey = '__OMG_FORBID_EVENTLIST__';\n\nexport default class PostEventReportor extends AH5EventReportor {\n\n /**\n * 标记\n * - 是否开始上报数据\n */\n private startForbidReport: boolean = false;\n\n /**\n * 将上报的数据存储到global中\n */\n private get forbidReportEventList(): ITrackedEvent[] {\n if (!(window as any)[forbidReportEventListKey]) {\n (window as any)[forbidReportEventListKey] = [];\n }\n return (window as any)[forbidReportEventListKey];\n }\n\n private addForbidEvent = (event: ITrackedEvent) => {\n if (this.forbidReportEventList.length > 50) {\n return;\n }\n this.forbidReportEventList.push(event);\n }\n /**\n * 修改禁止上报为开启上报\n */\n private onChangeForbidFalse = () => {\n // 若已经开始则return\n if (this.startForbidReport) {\n return;\n }\n this.startForbidReport = true;\n this.reportForBidEvent();\n }\n private reportForBidEvent = () => {\n const context = this.getContext();\n // 防止批量上报过程中禁止上报\n if (context.forbidReport) {\n return;\n }\n if (this.forbidReportEventList && this.forbidReportEventList.length) {\n const event = this.forbidReportEventList.pop();\n if (event) {\n // 防止一次请求过多一条条进行上报\n this.reportEventImmediately(event)\n .then(() => {\n this.reportForBidEvent();\n }).catch(() => {\n this.reportForBidEvent();\n });\n }\n }\n }\n /**\n * 根据当前的时间进行cityID的加密\n */\n private getOmgci(): string {\n if (this.getContext().cityId) {\n const cId = Number(this.getContext().cityId);\n /**\n * 确保当前值符合要求\n */\n if (!isNaN(cId)) {\n const len = String(cId).length;\n let ts = `${new Date().getTime()}`;\n ts = ts.slice(0, -(len + 1));\n ts = `${ts}${cId}${len}`;\n return ts;\n }\n }\n return '';\n }\n\n /**\n * @override\n * @param {ITrackedEvent} event\n * @returns {Promise}\n */\n protected reportEventImmediately(event: ITrackedEvent): Promise {\n const context = this.getContext();\n // 禁止上报则直接return\n if (context.forbidReport) {\n // 将上报标记设置为false\n this.startForbidReport = false;\n this.addForbidEvent(event);\n return Promise.resolve(event);\n } else {\n this.onChangeForbidFalse();\n }\n return new Promise((resolve: (evt: ITrackedEvent) => void,\n reject: (evt: ITrackedEvent) => void): void => {\n const URL = `${GlobalUtil.getProtocol()}${this.getContext().uploadHost}${this.reportPath}`;\n const xhr = new XMLHttpRequest();\n const eventData = event.getData();\n xhr.timeout = this.getContext().timeout || REPORT_TIMEOUT;\n xhr.ontimeout = () => {\n reject(new TimeoutEvent(event.getType(), eventData.attrs || {}, this.getContext()));\n };\n xhr.open('POST', URL + `?e=${event.getType()}`);\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');\n xhr.setRequestHeader('oid', eventData.omgId || '');\n xhr.setRequestHeader('seq', eventData.appKey || '');\n const cid = this.getOmgci();\n if (cid) {\n xhr.setRequestHeader('omgci', cid);\n }\n // 为请求设置为唯一值\n xhr.setRequestHeader(\n 'msgid',\n `${eventData.viewportId || ''}-${eventData.sequence || ''}-${eventData.timestamp || ''}`\n );\n xhr.send(EncodeHash.encodeHashUrl(event.serialize()));\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4 && xhr.status === 200) {\n try {\n const response = JSON.parse(xhr.responseText);\n if (response.state && response.state.code !== 200) {\n if (response.state.code === 500) {\n this.errorreportedEvents.add(event);\n }\n GlobalUtil.dispatchOmgLog(`POST 200 上报错误${event.getType()}_\n ${response.state.code || 0}_${response.state.msg || ''}`);\n }\n ReportCallbackUtil.reportCallback(response);\n resolve(event);\n } catch (error) {\n // 解析返回值失败但是不抛异常\n console.error(`上报成功后解析失败:${xhr.responseText}`);\n }\n }\n };\n xhr.onerror = () => {\n if (xhr.status === 500) {\n this.errorreportedEvents.add(event);\n } else {\n console.error('POST上报失败onerror' + xhr.status);\n }\n reject(new FailedEvent(new Error('POST Error'), event.getType(),\n eventData.attrs || {}, this.getContext()));\n };\n });\n }\n}\n","import { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport JsonpEventReportor from 'com/didichuxing/tracker/plugin/reportor/JsonpEventReportor';\nimport BeaconEventReportor from 'com/didichuxing/tracker/plugin/reportor/BeaconEventReportor';\nimport PostEventReportor from 'com/didichuxing/tracker/plugin/reportor/PostEventReportor';\n\nexport default class SendStrategyChoice {\n\n /**\n * @override\n * @inheritDoc\n * @returns {IEventReportor}\n */\n public static switchSendStrategy(context: ITrackerContext, event: ITrackedEvent) {\n if (navigator.sendBeacon) {\n // 第一优先级sendBeacon\n return new PostEventReportor(context, event);\n // return new BeaconEventReportor(context, event);\n // } else if (event.serialize().length < 1500) {\n // // 第二优先级JSONP 可以阻塞 保证发送成功 但因为长度get请求问题长度限制可能无法成功,所以对长度做了限制\n // return new JsonpEventReportor(context, event);\n } else {\n return new PostEventReportor(context, event);\n }\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of SequencedEvent\n */\n\nimport { IContext } from 'com/didichuxing/context/IContext';\nimport { IObjectMap } from 'com/didichuxing/IObjectMap';\nimport { IAttrs } from 'com/didichuxing/tracker/IAttrs';\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { ITrackedEventData } from 'com/didichuxing/tracker/event/ITrackedEventData';\nimport { EventStatus } from 'com/didichuxing/tracker/plugin/events/EventStatus';\nimport AEvent from 'com/didichuxing/tracker/plugin/events/AEvent';\n\nexport default abstract class SequencedEvent extends AEvent {\n\n /**\n * Omega事件全局序列名称前缀。\n * @type {string}\n */\n public static readonly OMG_SEQUENCE_NAME_PREFIX: string = '__OMG_SEQUENCE_';\n\n /**\n * Omega事件全局序列名称后缀。\n * @type {string}\n */\n public static readonly OMG_SEQUENCE_NAME_SUFFIX: string = '__';\n\n /**\n * 事件的序列号。\n * 默认为-1,表示没有序列号。\n */\n private readonly sequence: number;\n\n /**\n * @constructor\n * @param {IAttrs} attrs\n * @param {IContext} context\n * @param {IAttrs} info 事件生成的时候默认的一些属性信息\n */\n constructor(attrs: IAttrs, context: IContext, info?: IAttrs) {\n super(attrs, context, info);\n const prefix: string = SequencedEvent.OMG_SEQUENCE_NAME_PREFIX;\n const suffix: string = SequencedEvent.OMG_SEQUENCE_NAME_SUFFIX;\n if (!(window as any)[`${ prefix }${ (context as ITrackerContext).viewportId }${ suffix }`]) {\n (window as any)[`${ prefix }${ (context as ITrackerContext).viewportId }${ suffix }`] = 0;\n }\n this.sequence = (window as any)[`${ prefix }${ (context as ITrackerContext).viewportId }${ suffix }`]++;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {ITrackedEventData}\n */\n public getData(): ITrackedEventData {\n return {\n ...super.getData(),\n sequence: this.sequence\n };\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IObjectMap}\n */\n protected getDataKeyMap(): IObjectMap {\n return {\n ...super.getDataKeyMap(),\n sequence: 'seq'\n };\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {EventStatus}\n */\n public get status(): EventStatus {\n return EventStatus.NORMAL;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of OMGH5ReceivedEvent\n */\n\nimport { IAttrs } from 'com/didichuxing/tracker/IAttrs';\nimport { IObjectMap } from 'com/didichuxing/IObjectMap';\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport SequencedEvent from 'com/didichuxing/tracker/plugin/events/SequencedEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\n\nexport default class OMGH5ReceivedEvent extends SequencedEvent {\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getType(): string {\n return PluginUtils.EVENT_ID_RECEIVED;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IAttrs}\n */\n protected getAttrs(): IAttrs {\n return {\n deviceVendor: (this.getContext() as ITrackerContext).deviceVendor,\n ...super.getAttrs()\n };\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IObjectMap}\n */\n protected getAttrsKeyMap(): IObjectMap {\n return {\n ...super.getAttrsKeyMap(),\n deviceVendor: 'm'\n };\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of BlockedEvent\n */\n\nimport { IContext } from 'com/didichuxing/context/IContext';\nimport { IAttrs } from 'com/didichuxing/tracker/IAttrs';\nimport { EventStatus } from 'com/didichuxing/tracker/plugin/events/EventStatus';\nimport AEvent from 'com/didichuxing/tracker/plugin/events/AEvent';\n\nexport default class BlockedEvent extends AEvent {\n\n /**\n * custom event id\n */\n private readonly eventId: string;\n\n /**\n * @constructor\n * @param {IAttrs} attrs\n * @param {IContext} context\n */\n constructor(eventId: string, attrs: IAttrs, context: IContext) {\n super(attrs, context);\n this.eventId = eventId;\n }\n\n /**\n * @override\n * @inheritDoc\n */\n protected initSequence(): void {\n /* stop sequence */\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getType(): string {\n return this.eventId;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {EventStatus}\n */\n public get status(): EventStatus {\n return EventStatus.BLOCKED;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AReportingStrategyPlugin\n */\n\nimport { IReportingStrategyPlugin, ITrackedEventArgs } from 'com/didichuxing/tracker/plugin/IReportingStrategyPlugin';\nimport { IContext } from 'com/didichuxing/context/IContext';\nimport { IDeviceInfo } from 'com/didichuxing/tracker/context/IDeviceInfo';\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { ITracker } from 'com/didichuxing/tracker/ITracker';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport ReportCallbackUtil from 'com/didichuxing/tracker/plugin/utils/ReportCallbackUtil';\nimport BlockedEvent from 'com/didichuxing/tracker/plugin/events/BlockedEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\n// 上报通道国内域名集合\nconst UPLOAD_DOMAIN_LOCAL: string[] = [\n 'omgup.xiaojukeji.com',\n 'omgup1.xiaojukeji.com',\n 'omgup2.xiaojukeji.com'\n];\n\n// 上报通道国际域名集合\nconst UPLOAD_DOMAIN_GLOBAL: string[] = [\n 'omgup.didiglobal.com'\n];\n\n// 上报通道国际域名集合\nconst UPLOAD_DOMAIN_RU: string[] = [\n 'omgup-ru.didiglobal.com'\n];\n\nconst UA_BROWSER_REGEXPS: IUaRegExpNameItem[] = [{\n uaRegExps: [/(miniProgram)\\/([\\w\\.]+)/i], // WeChatMiniProgram,ios的ua中无miniProgram,但有MicroMessenger(表示是微信浏览器)\n name: 'WeChatMiniProgram'\n }, {\n uaRegExps: [/(micromessenger)\\/([\\w\\.]+)/i], // WeChat\n name: 'WeChat'\n}, {\n uaRegExps: [/(alipayclient)\\/([\\w\\.]+)/i], // Alipay\n name: 'Alipay'\n}, {\n uaRegExps: [/(QQ)\\/([\\d\\.]+)/i], // QQ, aka ShouQ\n name: 'QQ'\n},\n{\n uaRegExps: [/(didi\\.sdk)\\/([\\w\\.]+)/i], // didi.sdk\n name: 'didi.sdk'\n}, {\n name: 'dingding',\n uaRegExps: [/dingtalk/i] // ding ding talk\n}, {\n name: 'didi.passenger',\n uaRegExps: [/didi\\.passenger/i] // didi乘客端\n}, {\n name: 'didi.lite',\n uaRegExps: [/didi\\.lite/i] // uber客户端\n}, {\n name: 'zhuankuai.driver',\n uaRegExps: [\n /didigsui/i, // didi专快司机端安卓版本\n /ddudriver/i // didi专快司机端ios版本\n ] // didi专快司机端\n}, {\n name: 'zhuanche.assistant.driver',\n uaRegExps: [/zhuanche\\.cici/i] // 专车司机助手\n}, {\n name: 'didi.galaxy',\n uaRegExps: [/didi\\.galaxy/i] // 滴滴哈勃效率工具\n}, {\n name: 'daijia.driver',\n uaRegExps: [/daijia\\.driver/i] // 代驾司机端\n}, {\n name: 'didi.driver.tw',\n uaRegExps: [/didi\\.driver\\.tw/i] // didi司机端台湾\n}, {\n name: 'didi.driver.hk',\n uaRegExps: [/didi\\.driver\\.hk/i] // didi司机端台湾\n}, {\n name: 'didi.global',\n uaRegExps: [/global/i] // didi国际化端\n}, {\n name: 'didi.mini',\n uaRegExps: [/mini/i] // didi乘客端极简版\n}, {\n name: 'didies',\n uaRegExps: [/didies/i] // 企业版APP\n},\n{\n name: 'hm',\n uaRegExps: [/hm\\.passenger/i] // 街兔app\n}, {\n name: 'weibo',\n uaRegExps: [/weibo/i] // weibo\n}];\n\nconst UA_OS_REGEXPS: IUaRegExpNameItem[] = [{\n uaRegExps: [/(android)[\\/\\s-]?([\\w\\.]*)/i], // WeChat\n name: 'Android'\n}, {\n uaRegExps: [\n /cfnetwork\\/.+darwin/i,\n /ip[honead]{2,4}(?:.*os\\s([\\w]+)\\slike\\smac|;\\sopera)/i\n ], // iOS\n name: 'iOS'\n}, {\n uaRegExps: [\n /(mac\\sos\\sx)\\s?([\\w\\s\\.]*)/i,\n /(macintosh|mac(?=_powerpc)\\s)/i\n ], // Mac OS\n name: 'Mac OS'\n}, {\n uaRegExps: [\n /microsoft\\s(windows)\\s(vista|xp)/i, // Windows (iTunes)\n /(windows)\\snt\\s6\\.2;\\s(arm)/i // Windows RT\n ], // Windows\n name: 'Windows'\n}];\n\nexport interface IUaRegExpNameItem {\n /**\n * 正则表达式\n */\n readonly uaRegExps: RegExp[];\n\n /**\n * 正则表达式所对应的名称\n */\n readonly name: string;\n}\n\nexport interface INameVersion {\n readonly name: string;\n readonly version: string;\n}\n\nexport default abstract class AReportingStrategyPlugin implements IReportingStrategyPlugin {\n\n /**\n * 安装状态\n */\n private installed: boolean;\n\n /**\n * 插件所在的宿主对象。\n */\n private tracker: ITracker;\n\n /**\n * BreadcrumbList 名称\n */\n public breadcrumbListName: string;\n\n /**\n * @constructor\n */\n constructor(tracker: ITracker) {\n this.installed = false;\n this.tracker = tracker;\n // @ts-ignore\n const AppKey: string | undefined = this.tracker.getContext().appKey || this.tracker.getContext().productName;\n this.breadcrumbListName = this.getBreadcrumbListName(AppKey || 'Other');\n Object.assign(tracker.getContext(), this.initialzedContext);\n }\n\n /**\n * 获取BREADCRUMBS列表名称\n * @param appKey\n */\n private getBreadcrumbListName(appKey: string): string {\n appKey = appKey.replace(/\\./g, '_');\n return `____OMG_BREADCRUMBS_${appKey}__`;\n }\n\n private sliceBreadcrumbList(): void {\n const breadcrumbListName = (window as any)[this.breadcrumbListName] || [];\n if (breadcrumbListName.length > 10) {\n (window as any)[this.breadcrumbListName].length = 10;\n }\n }\n\n /**\n * 根据正则匹配UA,获取相应数据。\n * @returns {INameVersion | undefined}\n */\n private getInfo(uaRegExpNameItems: IUaRegExpNameItem[]): INameVersion | undefined {\n const ua: string = navigator.userAgent;\n for (let i: number = 0, j: number = uaRegExpNameItems.length; i < j; ++i) {\n const item: IUaRegExpNameItem = uaRegExpNameItems[i];\n let name: string = item.name;\n const uaRegExps: RegExp[] = item.uaRegExps;\n for (let idx: number = 0, len: number = uaRegExps.length; idx < len; ++idx) {\n const regExpExecArray: RegExpExecArray | null = uaRegExps[idx].exec(ua);\n if (regExpExecArray && regExpExecArray.length) {\n let version: string = regExpExecArray[2];\n if (name === 'iOS') {\n version = regExpExecArray[1].replace(/_/g, '.');\n } else if (name === 'Mac OS') {\n version = version.replace(/_/g, '.');\n // @ts-ignore\n // tslint:disable-next-line:max-line-length\n } else if (name === 'WeChat' && window.wx && wx && wx.miniProgram && wx.miniProgram.getEnv && typeof wx.miniProgram.getEnv === 'function') {\n // ios的ua中无miniProgram,但有MicroMessenger(表示是微信浏览器)\n // @ts-ignore\n wx.miniProgram.getEnv((res: any) => {\n if (res.miniprogram) {\n name = 'WeChatMiniProgram';\n }\n });\n // @ts-ignore\n // tslint:disable-next-line:max-line-length\n } else if (name === 'Alipay' && window.my && my && my.getEnv && typeof my.getEnv === 'function') {\n // @ts-ignore\n my.getEnv((res: any) => {\n if (res.miniprogram) {\n name = 'AlipayMiniProgram';\n }\n });\n }\n return {\n name: name,\n version: version\n };\n }\n }\n }\n return undefined;\n }\n\n /**\n * 获取设备信息。\n * @returns {IDeviceInfo}\n */\n protected getDeviceInfo(): IDeviceInfo {\n let appName: string = 'Others';\n let appVersion: string | undefined;\n let osType: string = 'Others';\n let osVersion: string | undefined;\n const appInfo: INameVersion | undefined = this.getInfo(this.getBrowserRegExpsInUA());\n if (appInfo) {\n appName = appInfo.name;\n appVersion = appInfo.version;\n }\n const osInfo: INameVersion | undefined = this.getInfo(this.getOSRegExpsInUA());\n if (osInfo) {\n osType = osInfo.name;\n osVersion = osInfo.version;\n }\n const context: ITrackerContext = this.getContext() as ITrackerContext;\n return {\n appName: context.appName || appName,\n appVersion: context.appVersion || appVersion,\n osType: context.osType || osType,\n osVersion: context.osVersion || osVersion\n };\n }\n\n /**\n * 浏览器名称正则\n * @returns {IUaRegExpNameItem[]}\n */\n protected getBrowserRegExpsInUA(): IUaRegExpNameItem[] {\n return UA_BROWSER_REGEXPS;\n }\n\n /**\n * 操作系统名称正则\n * @returns {IUaRegExpNameItem[]}\n */\n protected getOSRegExpsInUA(): IUaRegExpNameItem[] {\n return UA_OS_REGEXPS;\n }\n\n /**\n * 获取上报通道域名\n * @returns {string}\n */\n protected getUploadHost(): string {\n let uploadHost: string = (this.getContext() as ITrackerContext).uploadHost || 'omgup.xiaojukeji.com';\n if (/xiaojukeji\\.com/.test(uploadHost)) { // 国内域名\n if (UPLOAD_DOMAIN_LOCAL.indexOf(uploadHost) > -1) {\n uploadHost = UPLOAD_DOMAIN_LOCAL[Math.floor(Math.random() * UPLOAD_DOMAIN_LOCAL.length)];\n }\n } else if (/omgup-ru\\.didiglobal.com\\.com/.test(uploadHost)) { // 俄罗斯域名\n if (UPLOAD_DOMAIN_RU.indexOf(uploadHost) > -1) {\n uploadHost = UPLOAD_DOMAIN_RU[Math.floor(Math.random() * UPLOAD_DOMAIN_RU.length)];\n }\n } else if (/didiglobal\\.com/.test(uploadHost)) { // 国际域名\n if (UPLOAD_DOMAIN_GLOBAL.indexOf(uploadHost) > -1) {\n uploadHost = UPLOAD_DOMAIN_GLOBAL[Math.floor(Math.random() * UPLOAD_DOMAIN_GLOBAL.length)];\n }\n }\n return uploadHost;\n }\n\n /**\n * 初始化设置上下文信息。\n * @returns {IContext}\n */\n protected get initialzedContext(): IContext {\n return {\n ...this.getDeviceInfo(),\n uploadHost: this.getUploadHost()\n } as ITrackerContext;\n }\n\n /**\n * @abstract\n * @returns {string}\n */\n public abstract getName(): string;\n\n /**\n * @override\n * @inheritDoc\n * @returns {IContext}\n */\n public getContext(): IContext {\n return this.tracker.getContext();\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {ITracker}\n */\n public getTracker(): ITracker {\n return this.tracker;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public install(): boolean {\n this.installed = true;\n return this.installed;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public hasInstalled(): boolean {\n return this.installed;\n }\n\n /**\n * @abstract\n */\n public abstract execute(): void;\n\n /**\n * @abstract\n */\n public abstract exit(): void;\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public uninstall(): boolean {\n this.exit();\n this.installed = false;\n delete this.tracker;\n return true;\n }\n\n /**\n * 兼容callback\n * @param {ITrackedEventArgs} eventArgs\n * @param {ITrackedEvent} event\n * @returns {ITrackedEvent}\n */\n private compatibleCallback(eventArgs: ITrackedEventArgs, event: ITrackedEvent): ITrackedEvent {\n if (eventArgs.cb) {\n eventArgs.cb(event);\n }\n return event;\n }\n\n /**\n * 添加TrackerEvent至Breadcrumb\n * @param event\n */\n private addTrackerEventToBreadcrumb(event: ITrackedEvent) {\n if (event.getType() === PluginUtils.EVENT_ID_CLICK) {\n if ((window as any)[this.breadcrumbListName]) {\n (window as any)[this.breadcrumbListName].push(event.serialize());\n } else {\n (window as any)[this.breadcrumbListName] = [];\n (window as any)[this.breadcrumbListName].push(event.serialize());\n }\n if ((window as any)[this.breadcrumbListName].length > 10) {\n (window as any)[this.breadcrumbListName].length = 10;\n }\n }\n\n }\n\n /**\n * 获取事件上报器。\n * @returns {IEventReportor}\n */\n protected abstract getEventReportor(event: ITrackedEvent): IEventReportor;\n\n /**\n * @override\n * @inheritDoc\n * @param {ITrackedEventArgs} eventArgs\n * @returns {Promise}\n */\n public report(eventArgs: ITrackedEventArgs): Promise {\n this.sliceBreadcrumbList();\n const eventBlacklist: string[] = (window as any)[ReportCallbackUtil.OMG_EVENT_BLACKLIST_NAME] || [];\n if (eventBlacklist.some((eventid: string): boolean => eventid === eventArgs.eventId)) { // 命中黑名单\n const event: ITrackedEvent = new BlockedEvent(eventArgs.eventId, eventArgs.attrs, this.getContext());\n return Promise\n .resolve(this.compatibleCallback(eventArgs, event))\n .then((finalEvent: ITrackedEvent): ITrackedEvent => {\n this.dispatchTrackerEventUnderWindow(finalEvent);\n return finalEvent;\n });\n } else {\n const trackedEvent: ITrackedEvent = this.generateEvent(eventArgs);\n this.dispatchTrackerEventUnderWindow(trackedEvent);\n this.addTrackerEventToBreadcrumb(trackedEvent);\n return this.getEventReportor(trackedEvent).reportEvent()\n .then(\n (event: ITrackedEvent): ITrackedEvent => this.compatibleCallback(eventArgs, event),\n (event: ITrackedEvent): ITrackedEvent => this.compatibleCallback(eventArgs, event)\n );\n }\n }\n\n /**\n * 给window派发tarcker event。\n * 派发给window的事件名为omegatrack\n * @param {ITrackedEvent} event\n */\n protected dispatchTrackerEventUnderWindow(event: ITrackedEvent): void {\n const mesageEvent: MessageEvent = document.createEvent('MessageEvent');\n mesageEvent.initMessageEvent('omegatrack', false, false, event, '', '', window);\n window.dispatchEvent(mesageEvent);\n }\n\n /**\n * 生成当前插件需要上报的事件对象。\n * @abstract\n * @returns {ITrackedEvent}\n */\n protected abstract generateEvent(eventArgs: ITrackedEventArgs): ITrackedEvent;\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of PositionPlugin\n */\n\nimport { IContext } from 'com/didichuxing/context/IContext';\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { ITracker } from 'com/didichuxing/tracker/ITracker';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { ITrackedEventArgs } from 'com/didichuxing/tracker/plugin/IReportingStrategyPlugin';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport { ITrackerConfiguration } from 'com/didichuxing/tracker/config/ITrackerConfiguration';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\nimport SendStrategyChoice from 'com/didichuxing/tracker/h5/plugins/utils/SendStrategyChoice';\nimport OMGH5ReceivedEvent from 'com/didichuxing/tracker/h5/plugins/events/OMGH5ReceivedEvent';\nimport AReportingStrategyPlugin from 'com/didichuxing/tracker/plugin/AReportingStrategyPlugin';\ninterface ILocationData {\n /** 纬度,浮点数,范围为-90~90,负数表示南纬 */\n latitude: number;\n /** 经度,浮点数,范围为-180~180,负数表示西经 */\n longitude: number;\n /** 速度,浮点数,单位m/s */\n speed: number;\n /** 位置的精确度 */\n accuracy: number;\n}\n\nexport default class PositionPlugin extends AReportingStrategyPlugin {\n\n /**\n * @override\n * @returns {string}\n */\n public getName(): string {\n return PluginUtils.PLUGIN_NAME_RECEIVED;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IEventReportor}\n */\n protected getEventReportor(event: ITrackedEvent): IEventReportor {\n return SendStrategyChoice.switchSendStrategy(this.getContext() as ITrackerContext, event);\n }\n\n /**\n * 获取地理位置。\n * @param {boolean} positionable\n */\n private fetchPosition(positionable: boolean): void {\n // 移除经纬度采集\n return;\n const appName = (this.getContext() as ITrackerContext).appName;\n // @ts-ignore\n if (appName && appName === 'WeChat' && window.wx && wx && wx.getLocation && typeof wx.getLocation === 'function') {\n // @ts-ignore\n wx.getLocation({\n // 同步为浏览器返回标准\n type: 'wgs84',\n success: (locationData: ILocationData): void => {\n this.getTracker().setLocation({\n longitude: locationData.longitude,\n latitude: locationData.latitude\n });\n this.report({\n eventId: PluginUtils.EVENT_ID_RECEIVED,\n attrs: {}\n });\n }\n });\n } else {\n // 乘客端桥接方法,避免WKWebView每次弹出权限框\n const didiLocationBridge = (window as any)['DiDiLocationBridge'];\n if (didiLocationBridge && didiLocationBridge.getLocation) {\n didiLocationBridge.getLocation((response: any) => {\n this.setLocation(response.lng, response.lat);\n });\n } else if (positionable && navigator.geolocation) {\n // 标准浏览器 获取地理坐标。\n navigator.geolocation.getCurrentPosition((position): void => {\n this.setLocation(position.coords.longitude, position.coords.latitude);\n });\n }\n }\n\n }\n\n private setLocation(lng: number, lat: number) {\n this.getTracker().setLocation({\n longitude: lng || 0,\n latitude: lat || 0\n });\n this.report({\n eventId: PluginUtils.EVENT_ID_RECEIVED,\n attrs: {}\n });\n }\n\n /**\n * 对tracker.setConfig进行拦截。\n * @param {ITrackerConfiguration} config\n */\n private adviceSetConfigHandler(config: ITrackerConfiguration): void {\n if (typeof config.autoPosition === 'boolean'\n && config.autoPosition !== (this.getContext() as ITrackerContext).autoPosition) {\n this.fetchPosition(config.autoPosition); // 设置了自动上报地理坐标。\n }\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IContext}\n */\n protected get initialzedContext(): IContext {\n const context: ITrackerContext = this.getContext() as ITrackerContext;\n return {\n ...super.initialzedContext,\n autoPosition: typeof context.autoPosition === 'boolean' ? context.autoPosition : false\n } as IContext;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public install(): boolean {\n const tracker: ITracker = this.getTracker();\n this.fetchPosition((this.getContext() as ITrackerContext).autoPosition || false);\n const setConfigHandler: (config: ITrackerConfiguration) => void = tracker.setConfig;\n tracker.setConfig = (config: ITrackerConfiguration): void => {\n // this.adviceSetConfigHandler(config);\n setConfigHandler.call(tracker, config);\n };\n return super.install();\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public execute(): void {\n /* Nothing to execute */\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public exit(): void {\n /* Nothing to exit */\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {ITrackedEventArgs} eventArgs\n * @returns {ITrackedEvent}\n */\n protected generateEvent(eventArgs: ITrackedEventArgs): ITrackedEvent {\n return new OMGH5ReceivedEvent(eventArgs.attrs, this.getContext());\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public uninstall(): boolean {\n this.adviceSetConfigHandler = (config: ITrackerConfiguration): void => {/* empty method */\n };\n return super.uninstall();\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of OMGH5PageLeaveEvent\n */\n\nimport SequencedEvent from 'com/didichuxing/tracker/plugin/events/SequencedEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\n\nexport default class OMGH5PageLeaveEvent extends SequencedEvent {\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getType(): string {\n return PluginUtils.EVENT_ID_PAGE_LEAVE;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AOMGH5PageLeavePlugin\n */\n\nimport { ITracker } from '@omega-tracker/core/src/com/didichuxing/tracker/ITracker';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { ITrackedEventArgs } from 'com/didichuxing/tracker/plugin/IReportingStrategyPlugin';\nimport AReportingStrategyPlugin from 'com/didichuxing/tracker/plugin/AReportingStrategyPlugin';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\nimport OMGH5PageLeaveEvent from 'com/didichuxing/tracker/h5/plugins/events/OMGH5PageLeaveEvent';\nimport { ITrackerAdvancedContext } from 'com/didichuxing/tracker/h5/context/ITrackerAdvancedContext';\n\nexport default abstract class AOMGH5PageLeavePlugin extends AReportingStrategyPlugin {\n\n /**\n * @constructor\n */\n constructor(tracker: ITracker) {\n super(tracker);\n this.reportLeaveUnderHashChange = this.reportLeaveUnderHashChange.bind(this);\n this.reportLeaveUnderPopstateChange = this.reportLeaveUnderPopstateChange.bind(this);\n }\n\n /**\n * @override\n * @returns {string}\n */\n public getName(): string {\n return PluginUtils.PLUGIN_NAME_PAGE_LEAVE;\n }\n\n /**\n * hash change上报page leave\n */\n protected reportLeaveUnderHashChange(): void {\n this.reportFromLeave();\n this.getTracker().setConfig({\n url: window.location.href\n });\n }\n\n /**\n * popstate change上报page leave\n */\n protected reportLeaveUnderPopstateChange(): void {\n this.reportFromLeave();\n this.getTracker().setConfig({\n url: window.location.href\n });\n }\n\n /**\n * 离开事件上报。\n */\n protected reportFromLeave(): void {\n this.report({\n eventId: PluginUtils.EVENT_ID_PAGE_LEAVE,\n attrs: {}\n });\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public execute(): void {\n const context: ITrackerAdvancedContext = this.getContext() as ITrackerAdvancedContext;\n if (context.hashRouterEnable) { // 监控hash history change\n window.addEventListener('hashchange', this.reportLeaveUnderHashChange);\n }\n if (context.browserRouterEnable) { // 监控browser popstate change\n window.addEventListener('popstate', this.reportLeaveUnderPopstateChange);\n }\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public exit(): void {\n this.getTracker().setConfig({\n url: window.location.href\n });\n this.reportFromLeave();\n window.removeEventListener('hashchange', this.reportLeaveUnderHashChange);\n window.removeEventListener('popstate', this.reportLeaveUnderPopstateChange);\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {ITrackedEventArgs} eventArgs\n * @returns {ITrackedEvent}\n */\n protected generateEvent(eventArgs: ITrackedEventArgs): ITrackedEvent {\n return new OMGH5PageLeaveEvent(eventArgs.attrs, this.getContext());\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of OMGH5PageLeavePlugin\n */\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport AOMGH5PageLeavePlugin from 'com/didichuxing/tracker/h5/plugins/AOMGH5PageLeavePlugin';\nimport SendStrategyChoice from 'com/didichuxing/tracker/h5/plugins/utils/SendStrategyChoice';\n\nexport default class OMGH5PageLeavePlugin extends AOMGH5PageLeavePlugin {\n\n /**\n * @override\n * @inheritDoc\n * @returns {IEventReportor}\n */\n protected getEventReportor(event: ITrackedEvent): IEventReportor {\n return SendStrategyChoice.switchSendStrategy(this.getContext() as ITrackerContext, event);\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of ViewportUtils\n */\n\nimport { IViewportExtraAttrs } from 'com/didichuxing/tracker/h5/plugins/utils/IViewportExtraAttrs';\nimport { IObjectMap } from 'com/didichuxing/IObjectMap';\n\nexport default abstract class ViewportUtils {\n\n /**\n * 获取Viewport 盒模型属性。\n * @param {Window} viewport\n * @returns {IViewportExtraAttrs}\n */\n public static getViewportBox(viewport: Window = window): IViewportExtraAttrs {\n const doc: Document = viewport.document;\n return {\n viewportHeight: doc.documentElement.offsetHeight || doc.body.offsetHeight || 0,\n viewportWidth: doc.documentElement.offsetWidth || doc.body.offsetWidth || 0\n };\n }\n\n /**\n * 获取Viewport Box属性映射KV值。\n * @returns {IObjectMap}\n */\n public static getViewportBoxAttrsMap(): IObjectMap {\n return {\n viewportHeight: 'h',\n viewportWidth: 'w'\n };\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of ElementUtils\n */\n\nimport { IElementExtraAttrs } from 'com/didichuxing/tracker/h5/plugins/utils/IElementExtraAttrs';\nimport { IViewportExtraAttrs } from 'com/didichuxing/tracker/h5/plugins/utils/IViewportExtraAttrs';\nimport { IObjectMap } from 'com/didichuxing/IObjectMap';\nimport ViewportUtils from 'com/didichuxing/tracker/h5/plugins/utils/ViewportUtils';\n\nexport default abstract class ElementUtils {\n\n /**\n * 获取目标对象所在的层级\n * 例如:body->0->1->3\n * @returns {string}\n */\n public static getHierarchy(element: Element): string {\n const hierarchies: Array = [];\n while (element && element.tagName.toLowerCase() !== 'body') {\n const index: number = ElementUtils.getNodeIndexInSiblings(element);\n if (index >= 0) {\n hierarchies.push(index);\n }\n element = element.parentElement as Element;\n }\n if (element) {\n hierarchies.push('body');\n } else {\n hierarchies.push('document');\n }\n return hierarchies.reverse().join('->');\n }\n\n /**\n * 获取当前节点在其兄弟节点中的索引值。\n * @param {Element} element\n * @returns {number}\n */\n private static getNodeIndexInSiblings(element: Element): number {\n const parent: Element = element.parentElement as Element;\n if (parent) {\n const children: HTMLCollection = parent.children;\n for (let i: number = 0, j: number = children.length; i < j; ++i) {\n if (element === children[i]) {\n return i;\n }\n }\n }\n return -1;\n }\n\n /**\n * 获取TargetTagName\n * 在IE下 svg 的tagName可能为空 所以需要判断\n * 对于元素节点来说,tagName属性的值和nodeName属性的值是相同的\n * 所以如果tagName没有就去拿nodeName\n * 都没有就返回空字符串\n * @param element\n * @return string\n */\n private static getTargetTagName(element: Element): string {\n if (!element) {\n return '';\n }\n if (element.tagName && element.tagName.toLocaleUpperCase) {\n return element.tagName.toLocaleUpperCase();\n } else if (element.nodeName && element.nodeName.toLocaleLowerCase) {\n return element.nodeName.toLocaleLowerCase();\n } else {\n return '';\n }\n }\n\n /**\n * 获取Element额外的属性。\n * @param {HTMLElement} element\n * @returns {IElementExtraAttrs}\n */\n public static getElementExtraAttrs(element: HTMLElement): IElementExtraAttrs | IViewportExtraAttrs {\n const targetRect: ClientRect = element.getBoundingClientRect();\n return {\n targetTagName: this.getTargetTagName(element),\n targetId: element.id,\n targetName: element.getAttribute('name') || '',\n targetHref: element.getAttribute('href') || '',\n targetClassName: element.className,\n targetX: Math.round(targetRect.left),\n targetY: Math.round(targetRect.top),\n targetWidth: Math.round(targetRect.width) || element.offsetWidth,\n targetHeight: Math.round(targetRect.height) || element.offsetHeight,\n hierarchy: element.id || element.getAttribute('name') || ElementUtils.getHierarchy(element),\n ...ViewportUtils.getViewportBox()\n };\n }\n\n /**\n * 获取Element额外属性映射KV值。\n * @returns {IObjectMap}\n */\n public static getElementExtraAttrsMap(): IObjectMap {\n return {\n targetTagName: 'l',\n targetId: 'id',\n targetName: 'name',\n targetHref: 'href',\n targetText: 'text',\n targetClassName: 'class',\n targetX: 'ex',\n targetY: 'ey',\n targetWidth: 'ew',\n targetHeight: 'eh',\n hierarchy: 'rn',\n ...ViewportUtils.getViewportBoxAttrsMap()\n };\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of OMGH5ClickEvent\n */\n\nimport { IPlanObject } from 'com/didichuxing/IPlanObject';\nimport { IObjectMap } from 'com/didichuxing/IObjectMap';\nimport { IContext } from 'com/didichuxing/context/IContext';\nimport { IAttrs } from 'com/didichuxing/tracker/IAttrs';\nimport { IAutoClickCover } from 'com/didichuxing/tracker/IAutoClickCover';\nimport { IClickFilter } from 'com/didichuxing/tracker/IClickFilter';\nimport { IElementExtraAttrs } from 'com/didichuxing/tracker/h5/plugins/utils/IElementExtraAttrs';\nimport { IViewportExtraAttrs } from 'com/didichuxing/tracker/h5/plugins/utils/IViewportExtraAttrs';\nimport ElementUtils from 'com/didichuxing/tracker/h5/plugins/utils/ElementUtils';\nimport SequencedEvent from 'com/didichuxing/tracker/plugin/events/SequencedEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\n\nexport interface ITargetPosition {\n readonly clientX: number;\n readonly clientY: number;\n readonly pageX: number;\n readonly pageY: number;\n}\n\ninterface IEventInfo {\n\n /**\n * 目标点击元素对象。\n */\n readonly target: Element;\n\n /**\n * @readonly\n * 点击的页面元素坐标。\n */\n readonly targetPosition: ITargetPosition;\n\n /**\n * 元素自己点击属性设置对象。\n * 如果设置了此参数,那么会在这些元素上应用设置在元素节点属性值作为监控数据发送。\n * 设置attr属性,比如{'attr': 'auto-track-click'}如果设置了此属性,那么会自动收集此属性对应的值。\n * 值必须为JSON数据的stringify形式,统计代码会解析json中的e(非必须,根据业务需要设置)字段和attrs(非必须)字段,\n * 自动覆盖默认的OMGH5Click事件标记及自动扩展原有attrs字段。\n */\n clickedCover?: IAutoClickCover;\n /**\n * 是否去遍历当前节点中 clickedCover 的 子元素\n */\n clickedCoverisChild?: boolean;\n\n /**\n * 只监控符合filters规则的元素\n * 如果设置了此参数,那么会在这些元素上应用设置在元素节点属性值作为监控数据发送。\n * 1.设置一个class,比如{'class': 'order-click'},则只会发送那些有class为'order-click'的元素的点击数据。\n * 2.设置一组class,比如{'class': ['order-click', 'cancel-click']}。\n * 3.设置attr属性,与enableClickAutoTrack中使用attr方式一致。\n */\n clickedFilter?: IClickFilter;\n}\n\ninterface ICustomClickedInfo {\n\n /**\n * 自定义事件名\n */\n readonly e?: string;\n\n /**\n * 自定义attrs\n */\n readonly attrs?: IPlanObject;\n}\n\ninterface IClickEventAttrs extends IElementExtraAttrs {\n\n /**\n * @readonly\n * 点击点的X坐标\n */\n readonly pointX: number;\n\n /**\n * @readonly\n * 点击点的Y坐标\n */\n readonly pointY: number;\n\n}\n\nexport default class OMGH5ClickEvent extends SequencedEvent {\n\n /**\n * @readonly\n * 事件作用节点对象。\n */\n protected readonly target: HTMLElement;\n\n /**\n * @readonly\n * 事件信息。\n */\n protected readonly eventInfo: IEventInfo;\n\n /**\n * @readonly\n * 自定义自动点击信息。\n */\n protected readonly customClickedInfo: ICustomClickedInfo | undefined;\n\n /**\n * @readonly\n * 自定义过滤自动点击信息。\n */\n protected readonly customFilterClickedInfo: ICustomClickedInfo | undefined;\n\n /**\n * @constructor\n * @param {IAttrs} attrs\n * @param {IContext} context\n */\n constructor(attrs: IAttrs, context: IContext, eventInfo: IEventInfo) {\n super(attrs, context);\n this.target = eventInfo.target as HTMLElement;\n this.eventInfo = eventInfo;\n if (eventInfo.clickedCover\n // && this.target.hasAttribute(eventInfo.clickedCover.attr)\n ) {\n if (eventInfo.clickedCover.attr) {\n const target = this.getRealTarget(this.target, eventInfo.clickedCover.attr);\n if (target) {\n this.target = target;\n }\n this.customClickedInfo = JSON.parse(\n this.target.getAttribute(eventInfo.clickedCover.attr) || '{}'\n ) as ICustomClickedInfo;\n }\n }\n if (eventInfo.clickedCover && eventInfo.clickedCoverisChild) {\n this.getTargetChildAttrs(this.target, eventInfo.clickedCover.attr);\n }\n if (eventInfo.clickedFilter) {\n if (eventInfo.clickedFilter.attr && this.target.hasAttribute(eventInfo.clickedFilter.attr)) {\n this.customFilterClickedInfo = JSON.parse(\n this.target.getAttribute(eventInfo.clickedFilter.attr) || '{}'\n ) as ICustomClickedInfo;\n }\n }\n }\n\n private getRealTarget(target: HTMLElement, attrKey: string): HTMLElement | null {\n if (!attrKey) {\n return target;\n }\n while (target && target !== document.body && target !== document.documentElement) {\n if (target.hasAttribute(attrKey)) {\n return target;\n }\n target = target.parentNode as any;\n }\n return null;\n }\n\n /**\n * 获取子节点中的信息\n * @param target\n * @param attr\n */\n private getTargetChildAttrs(target: Element, attr: string) {\n const childArr = target.children;\n for (let i = 0, len = childArr.length; i < len; i++) {\n if (childArr[i].nodeType === 1) { // nodeType==1 的节点为元素节点。\n const childNodeAttrs = JSON.parse(\n childArr[i].getAttribute(attr) || '{}'\n ) as ICustomClickedInfo;\n Object.assign(this.customClickedInfo || {}, childNodeAttrs);\n this.getTargetChildAttrs(childArr[i], attr);\n }\n }\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getType(): string {\n if (this.customFilterClickedInfo && this.customFilterClickedInfo.e) {\n return this.customFilterClickedInfo.e;\n }\n if (this.customClickedInfo && this.customClickedInfo.e) {\n return this.customClickedInfo.e;\n }\n return PluginUtils.EVENT_ID_CLICK;\n }\n\n /**\n * 获取点击事件额外上报的信息数据。\n * @returns {IClickedAttrs}\n */\n private get clickedExtraAttrs(): IClickEventAttrs | IViewportExtraAttrs {\n const targetPostion: ITargetPosition = this.eventInfo.targetPosition;\n return {\n ...ElementUtils.getElementExtraAttrs(this.target),\n pointX: targetPostion.pageX\n || (targetPostion.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft || 0)),\n pointY: targetPostion.pageY\n || (targetPostion.clientY + (document.documentElement.scrollTop || document.body.scrollTop || 0))\n };\n }\n\n /**\n * 检查属性\n */\n private get clickedAttrs(): IAttrs {\n let attrs = super.getAttrs() || {};\n if (this.customClickedInfo && this.customClickedInfo.attrs) {\n Object.assign(attrs, this.customClickedInfo.attrs);\n }\n if (this.customFilterClickedInfo && this.customFilterClickedInfo.attrs) {\n attrs = this.customFilterClickedInfo.attrs;\n }\n return attrs;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IAttrs}\n */\n protected getAttrs(): IAttrs {\n return {\n ['OMGH5CLICK']: 1,\n ...this.clickedExtraAttrs,\n ...this.clickedAttrs\n // ...super.getAttrs()\n };\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IObjectMap}\n */\n protected getAttrsKeyMap(): IObjectMap {\n return {\n ...super.getAttrsKeyMap(),\n ...ElementUtils.getElementExtraAttrsMap(),\n pointX: 'x',\n pointY: 'y'\n };\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The abstract class of AOMGH5ClickPlugin\n */\n\nimport { IContext } from 'com/didichuxing/context/IContext';\nimport { IClickFilter } from 'com/didichuxing/tracker/IClickFilter';\nimport { ITracker } from 'com/didichuxing/tracker/ITracker';\nimport { ITrackerConfiguration } from 'com/didichuxing/tracker/config/ITrackerConfiguration';\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { ITrackedEventArgs } from 'com/didichuxing/tracker/plugin/IReportingStrategyPlugin';\nimport AReportingStrategyPlugin from 'com/didichuxing/tracker/plugin/AReportingStrategyPlugin';\nimport OMGH5ClickEvent, { ITargetPosition } from 'com/didichuxing/tracker/h5/plugins/events/OMGH5ClickEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\n\ninterface IAOPHandler {\n\n /**\n * aop句柄,用以移除A该AOP的作用。\n */\n remove(): void;\n}\n\nexport interface IClickedEventArgs extends ITrackedEventArgs {\n\n /**\n * 目标点击元素对象。\n */\n readonly target: Element;\n\n /**\n * @readonly\n * 点击的页面元素坐标。\n */\n readonly targetPosition: ITargetPosition;\n}\n\nexport default abstract class AOMGH5ClickPlugin extends AReportingStrategyPlugin {\n\n /**\n * AOP handler list\n */\n private aopHandlers: IAOPHandler[] = [];\n\n /**\n * @override\n * @returns {string}\n */\n public getName(): string {\n return PluginUtils.PLUGIN_NAME_CLICK;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public install(): boolean {\n this.handleDocumentClick = this.handleDocumentClick.bind(this);\n return super.install();\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {ITrackerConfiguration}\n */\n protected get initialzedContext(): IContext {\n const context: ITrackerContext = this.getContext() as ITrackerContext;\n return {\n ...super.initialzedContext,\n autoClick: typeof context.autoClick === 'boolean' ? context.autoClick : true\n } as IContext;\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public execute(): void {\n if ((this.getContext() as ITrackerContext).autoClick) { // 开启自动上报点击埋点。\n window.document.addEventListener('click', this.handleDocumentClick, true);\n }\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public exit(): void {\n if ((this.getContext() as ITrackerContext).autoClick) { // 开启自动上报点击埋点。\n window.document.removeEventListener('click', this.handleDocumentClick, true);\n }\n }\n\n /**\n * classes是否有一向存在classList中。\n * @param {DOMTokenList} classList\n * @param {string[]} classes\n * @returns {boolean}\n */\n private containClasses(targetClassList: DOMTokenList, classes: string[]): boolean {\n for (let i: number = 0, j: number = classes.length; i < j; ++i) {\n if (targetClassList.contains(classes[i])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * 文档内所有元素点击事件代理。\n * 该代理采用捕获方式进行。\n * @override\n * @inheritDoc\n */\n protected handleDocumentClick(evt: MouseEvent): void {\n const filter: IClickFilter | undefined = this.getTracker().getClickedFilter();\n const eventTarget: EventTarget = evt.target as EventTarget;\n let target: Element;\n if (eventTarget.hasOwnProperty('correspondingUseElement')) { // SVG Element\n target = (eventTarget as SVGElementInstance).correspondingUseElement;\n } else {\n target = eventTarget as Element;\n }\n // 未命中过滤器则不上报\n if (filter && filter.class && !this.containClasses(target.classList, [].concat(filter.class as any))) {\n return;\n }\n this.report({\n eventId: PluginUtils.EVENT_ID_CLICK,\n attrs: {},\n target: target,\n targetPosition: evt\n } as IClickedEventArgs);\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {ITrackedEventArgs} eventArgs\n * @returns {ITrackedEvent}\n */\n protected generateEvent(eventArgs: ITrackedEventArgs): ITrackedEvent {\n const tracker: ITracker = this.getTracker();\n return new OMGH5ClickEvent(eventArgs.attrs, this.getContext(), {\n target: (eventArgs as IClickedEventArgs).target,\n targetPosition: (eventArgs as IClickedEventArgs).targetPosition,\n clickedCover: tracker.getClickedCover(),\n clickedCoverisChild: tracker.getClickedCoverChild(),\n clickedFilter: tracker.getClickedFilter()\n });\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public uninstall(): boolean {\n while (this.aopHandlers.length) {\n const aopHandler: IAOPHandler | undefined = this.aopHandlers.pop();\n if (aopHandler) {\n aopHandler.remove();\n }\n }\n return super.uninstall();\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of OMGH5ClickPlugin\n */\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport AOMGH5ClickPlugin from 'com/didichuxing/tracker/h5/plugins/AOMGH5ClickPlugin';\nimport SendStrategyChoice from 'com/didichuxing/tracker/h5/plugins/utils/SendStrategyChoice';\n\nexport default class OMGH5ClickPlugin extends AOMGH5ClickPlugin {\n\n /**\n * @override\n * @inheritDoc\n * @returns {IEventReportor}\n */\n protected getEventReportor(event: ITrackedEvent): IEventReportor {\n return SendStrategyChoice.switchSendStrategy(this.getContext() as ITrackerContext, event);\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AOMGH5ReceivedPlugin\n */\n\nimport { ITracker } from 'com/didichuxing/tracker/ITracker';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { ITrackedEventArgs } from 'com/didichuxing/tracker/plugin/IReportingStrategyPlugin';\nimport { ITrackerConfiguration } from 'com/didichuxing/tracker/config/ITrackerConfiguration';\nimport AReportingStrategyPlugin from 'com/didichuxing/tracker/plugin/AReportingStrategyPlugin';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\nimport OMGH5ReceivedEvent from 'com/didichuxing/tracker/h5/plugins/events/OMGH5ReceivedEvent';\n\nexport default abstract class AOMGH5ReceivedPlugin extends AReportingStrategyPlugin {\n\n /**\n * @override\n * @returns {string}\n */\n public getName(): string {\n return PluginUtils.PLUGIN_NAME_RECEIVED;\n }\n\n /**\n * 对tracker.setConfig进行拦截。\n * @param {ITrackerConfiguration} config\n */\n private adviceSetConfigHandler(config: ITrackerConfiguration): void {\n if (config.userName || config.userId || config.telephone || config.cityId) { // 只有设置了用户名、uid或者手机号才进行该事件上报。\n this.report( {\n eventId: PluginUtils.EVENT_ID_RECEIVED,\n attrs: {}\n });\n }\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public install(): boolean {\n const tracker: ITracker = this.getTracker();\n const setConfigHandler: (config: ITrackerConfiguration) => void = tracker.setConfig;\n tracker.setConfig = (config: ITrackerConfiguration): void => {\n setConfigHandler.call(tracker, config);\n this.adviceSetConfigHandler(config);\n };\n return super.install();\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public execute(): void {\n /* Nothing to execute */\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public exit(): void {\n /* Nothing to exit */\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {ITrackedEventArgs} eventArgs\n * @returns {ITrackedEvent}\n */\n protected generateEvent(eventArgs: ITrackedEventArgs): ITrackedEvent {\n return new OMGH5ReceivedEvent(eventArgs.attrs, this.getContext());\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public uninstall(): boolean {\n this.adviceSetConfigHandler = (config: ITrackerConfiguration): void => {/* empty method */};\n return super.uninstall();\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of OMGH5ReceivedPlugin\n */\n\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport AOMGH5ReceivedPlugin from 'com/didichuxing/tracker/h5/plugins/AOMGH5ReceivedPlugin';\nimport SendStrategyChoice from 'com/didichuxing/tracker/h5/plugins/utils/SendStrategyChoice';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\n\nexport default class OMGH5ReceivedPlugin extends AOMGH5ReceivedPlugin {\n\n /**\n * @override\n * @inheritDoc\n * @returns {IEventReportor}\n */\n protected getEventReportor(event: ITrackedEvent): IEventReportor {\n return SendStrategyChoice.switchSendStrategy(this.getContext() as ITrackerContext, event);\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of OMGH5CustomEvent\n */\n\nimport { IContext } from 'com/didichuxing/context/IContext';\nimport { IAttrs } from 'com/didichuxing/tracker/IAttrs';\nimport SequencedEvent from 'com/didichuxing/tracker/plugin/events/SequencedEvent';\n\nexport default class OMGH5CustomEvent extends SequencedEvent {\n\n /**\n * custom event id\n */\n private readonly eventId: string;\n\n /**\n * @constructor\n * @param {IAttrs} attrs\n * @param {IContext} context\n */\n constructor(eventId: string, attrs: IAttrs, context: IContext, info?: IAttrs) {\n super(attrs, context, info);\n this.eventId = eventId;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getType(): string {\n return this.eventId;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AOMGH5CustomPlugin\n */\n\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { ITrackedEventArgs } from 'com/didichuxing/tracker/plugin/IReportingStrategyPlugin';\nimport AReportingStrategyPlugin from 'com/didichuxing/tracker/plugin/AReportingStrategyPlugin';\nimport OMGH5CustomEvent from 'com/didichuxing/tracker/h5/plugins/events/OMGH5CustomEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\n\nexport default abstract class AOMGH5CustomPlugin extends AReportingStrategyPlugin {\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getName(): string {\n return PluginUtils.PLUGIN_NAME_CUSTOM;\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public execute(): void {\n /* Nothing to execute */\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public exit(): void {\n /* Nothing to exit */\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {ITrackedEventArgs} eventArgs\n * @returns {ITrackedEvent}\n */\n protected generateEvent(eventArgs: ITrackedEventArgs): ITrackedEvent {\n return new OMGH5CustomEvent(eventArgs.eventId, eventArgs.attrs, this.getContext(), eventArgs.creatInfo);\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of OMGH5CustomPlugin\n */\n\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport AOMGH5CustomPlugin from 'com/didichuxing/tracker/h5/plugins/AOMGH5CustomPlugin';\nimport SendStrategyChoice from 'com/didichuxing/tracker/h5/plugins/utils/SendStrategyChoice';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\n\nexport default class OMGH5CustomPlugin extends AOMGH5CustomPlugin {\n\n /**\n * @override\n * @inheritDoc\n * @returns {IEventReportor}\n */\n protected getEventReportor(event: ITrackedEvent): IEventReportor {\n return SendStrategyChoice.switchSendStrategy(this.getContext() as ITrackerContext, event);\n }\n}\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","require('../../modules/es6.array.is-array');\nmodule.exports = require('../../modules/_core').Array.isArray;\n","module.exports = require(\"core-js/library/fn/array/is-array\");","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of OMGH5JsErrorEvent\n */\n\nimport SequencedEvent from 'com/didichuxing/tracker/plugin/events/SequencedEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\n\nexport default class OMGH5JsErrorEvent extends SequencedEvent {\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getType(): string {\n return PluginUtils.EVENT_ID_JS_ERROR;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of UUID\n */\n\nexport default abstract class UUID {\n\n /**\n *\n * @returns {string[]}\n */\n public static getByte2Hex(): string[] {\n const byteToHex: string[] = [];\n for (let i: number = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n }\n return byteToHex;\n }\n\n /**\n * bytes to uuid\n * @param {number[]} buf\n * @param {number} offset\n * @returns {string}\n */\n public static bytesToUuid(buf: number[], offset?: number): string {\n let i: number = offset || 0;\n const bth: string[] = UUID.getByte2Hex();\n // join used to fix memory issue caused by concatenation:\n // https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]]]).join('');\n }\n\n /**\n * 生成伪UUID\n * @returns {string}\n */\n public static get v4(): string {\n const rnds: number[] = new Array(16);\n let r: number = 0;\n for (let i: number = 0; i < 16; ++i) {\n if ((i & 0x03) === 0) {\n r = Math.random() * 0x100000000;\n }\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n return UUID.bytesToUuid(rnds);\n }\n}\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n","var $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n","require('../modules/es6.parse-int');\nmodule.exports = require('../modules/_core').parseInt;\n","module.exports = require(\"core-js/library/fn/parse-int\");","export default class Md5 {\n\n // One time hashing functions\n public static hashStr(str: string, raw: boolean = false) {\n return this.onePassHasher\n .start()\n .appendStr(str)\n .end(raw);\n }\n\n public static hashAsciiStr(str: string, raw: boolean = false) {\n return this.onePassHasher\n .start()\n .appendAsciiStr(str)\n .end(raw);\n }\n // Private Static Variables\n private static stateIdentity = new Int32Array([1732584193, -271733879, -1732584194, 271733878]);\n private static buffer32Identity = new Int32Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);\n private static hexChars = '0123456789abcdef';\n private static hexOut: string[] = [];\n\n // Permanent instance is to use for one-call hashing\n private static onePassHasher = new Md5();\n\n private static _hex(x: any): string {\n const hc = Md5.hexChars;\n const ho = Md5.hexOut;\n let n;\n let offset;\n let j;\n let i;\n\n for (i = 0; i < 4; i += 1) {\n offset = i * 8;\n n = x[i];\n for (j = 0; j < 8; j += 2) {\n ho[offset + 1 + j] = hc.charAt(n & 0x0F);\n n >>>= 4;\n ho[offset + 0 + j] = hc.charAt(n & 0x0F);\n n >>>= 4;\n }\n }\n return ho.join('');\n }\n\n private static _md5cycle(x: Int32Array|Uint32Array, k: Int32Array|Uint32Array) {\n let a = x[0];\n let b = x[1];\n let c = x[2];\n let d = x[3];\n // ff()\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n // gg()\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n // hh()\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n // ii()\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n\n private privateDataLength: number = 0;\n private privateBufferLength: number = 0;\n\n private privateState: Int32Array = new Int32Array(4);\n private privateBuffer: ArrayBuffer = new ArrayBuffer(68);\n private privateBuffer8: Uint8Array;\n private privateBuffer32: Uint32Array;\n\n constructor() {\n this.privateBuffer8 = new Uint8Array(this.privateBuffer, 0, 68);\n this.privateBuffer32 = new Uint32Array(this.privateBuffer, 0, 17);\n this.start();\n }\n\n public start() {\n this.privateDataLength = 0;\n this.privateBufferLength = 0;\n this.privateState.set(Md5.stateIdentity);\n return this;\n }\n\n // Char to code point to to array conversion:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\n // #Example.3A_Fixing_charCodeAt_to_handle_non-Basic-Multilingual-Plane_\n // characters_if_their_presence_earlier_in_the_string_is_unknown\n public appendStr(str: string) {\n const buf8 = this.privateBuffer8;\n const buf32 = this.privateBuffer32;\n let bufLen = this.privateBufferLength;\n let code;\n let i;\n\n for (i = 0; i < str.length; i += 1) {\n code = str.charCodeAt(i);\n if (code < 128) {\n buf8[bufLen++] = code;\n } else if (code < 0x800) {\n buf8[bufLen++] = (code >>> 6) + 0xC0;\n buf8[bufLen++] = code & 0x3F | 0x80;\n } else if (code < 0xD800 || code > 0xDBFF) {\n buf8[bufLen++] = (code >>> 12) + 0xE0;\n buf8[bufLen++] = (code >>> 6 & 0x3F) | 0x80;\n buf8[bufLen++] = (code & 0x3F) | 0x80;\n } else {\n code = ((code - 0xD800) * 0x400) + (str.charCodeAt(++i) - 0xDC00) + 0x10000;\n if (code > 0x10FFFF) {\n throw new Error('Unicode standard supports code points up to U+10FFFF');\n }\n buf8[bufLen++] = (code >>> 18) + 0xF0;\n buf8[bufLen++] = (code >>> 12 & 0x3F) | 0x80;\n buf8[bufLen++] = (code >>> 6 & 0x3F) | 0x80;\n buf8[bufLen++] = (code & 0x3F) | 0x80;\n }\n if (bufLen >= 64) {\n this.privateDataLength += 64;\n Md5._md5cycle(this.privateState, buf32);\n bufLen -= 64;\n buf32[0] = buf32[16];\n }\n }\n this.privateBufferLength = bufLen;\n return this;\n }\n\n public appendAsciiStr(str: string) {\n const buf8 = this.privateBuffer8;\n const buf32 = this.privateBuffer32;\n let bufLen = this.privateBufferLength;\n let i;\n let j = 0;\n\n for (; ;) {\n i = Math.min(str.length - j, 64 - bufLen);\n while (i--) {\n buf8[bufLen++] = str.charCodeAt(j++);\n }\n if (bufLen < 64) {\n break;\n }\n this.privateDataLength += 64;\n Md5._md5cycle(this.privateState, buf32);\n bufLen = 0;\n }\n this.privateBufferLength = bufLen;\n return this;\n }\n\n public appendByteArray(input: Uint8Array) {\n const buf8 = this.privateBuffer8;\n const buf32 = this.privateBuffer32;\n let bufLen = this.privateBufferLength;\n let i;\n let j = 0;\n\n for (; ;) {\n i = Math.min(input.length - j, 64 - bufLen);\n while (i--) {\n buf8[bufLen++] = input[j++];\n }\n if (bufLen < 64) {\n break;\n }\n this.privateDataLength += 64;\n Md5._md5cycle(this.privateState, buf32);\n bufLen = 0;\n }\n this.privateBufferLength = bufLen;\n return this;\n }\n\n public getState() {\n const self = this;\n const s = self.privateState;\n\n return {\n buffer: String.fromCharCode.apply(null, self.privateBuffer8),\n buflen: self.privateBufferLength,\n length: self.privateDataLength,\n state: [s[0], s[1], s[2], s[3]]\n };\n }\n\n public setState(state: any) {\n const buf = state.buffer;\n const x = state.state;\n const s = this.privateState;\n let i;\n\n this.privateDataLength = state.length;\n this.privateBufferLength = state.buflen;\n s[0] = x[0];\n s[1] = x[1];\n s[2] = x[2];\n s[3] = x[3];\n\n for (i = 0; i < buf.length; i += 1) {\n this.privateBuffer8[i] = buf.charCodeAt(i);\n }\n }\n\n public end(raw: boolean = false) {\n const bufLen = this.privateBufferLength;\n const buf8 = this.privateBuffer8;\n const buf32 = this.privateBuffer32;\n const i = (bufLen >> 2) + 1;\n let dataBitsLen;\n\n this.privateDataLength += bufLen;\n\n buf8[bufLen] = 0x80;\n buf8[bufLen + 1] = buf8[bufLen + 2] = buf8[bufLen + 3] = 0;\n buf32.set(Md5.buffer32Identity.subarray(i), i);\n\n if (bufLen > 55) {\n Md5._md5cycle(this.privateState, buf32);\n buf32.set(Md5.buffer32Identity);\n }\n\n // Do the final computation based on the tail and length\n // Beware that the final length may not fit in 32 bits so we take care of that\n dataBitsLen = this.privateDataLength * 8;\n if (dataBitsLen <= 0xFFFFFFFF) {\n buf32[14] = dataBitsLen;\n } else {\n const matches = dataBitsLen.toString(16).match(/(.*?)(.{0,8})$/);\n if (matches === null) {\n return;\n }\n\n const lo = parseInt(matches[2], 16);\n const hi = parseInt(matches[1], 16) || 0;\n\n buf32[14] = lo;\n buf32[15] = hi;\n }\n\n Md5._md5cycle(this.privateState, buf32);\n\n return raw ? this.privateState : Md5._hex(this.privateState);\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AOMGH5JsErrorPlugin\n */\n\nimport { IContext } from '@omega-tracker/core/src/com/didichuxing/context/IContext';\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { ITrackerAdvancedContext } from 'com/didichuxing/tracker/h5/context/ITrackerAdvancedContext';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { ITrackedEventArgs } from 'com/didichuxing/tracker/plugin/IReportingStrategyPlugin';\nimport AReportingStrategyPlugin from 'com/didichuxing/tracker/plugin/AReportingStrategyPlugin';\nimport OMGH5JsErrorEvent from 'com/didichuxing/tracker/h5/plugins/events/OMGH5JsErrorEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\nimport UUID from 'com/didichuxing/tracker/plugin/utils/UUID';\nimport Md5 from 'com/didichuxing/tracker/plugin/utils/MD5';\n\nexport default abstract class AOMGH5JsErrorPlugin extends AReportingStrategyPlugin {\n /**\n * 错误类型\n */\n private typeList: string[] = ['global code', 'TypeError',\n 'SyntaxError', 'ReferenceError', 'RangeError', 'URIError', 'EvalError'];\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getName(): string {\n return PluginUtils.PLUGIN_NAME_JS_ERROR;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public install(): boolean {\n this.handleError = this.handleError.bind(this);\n this.handlePromiseError = this.handlePromiseError.bind(this);\n this.afterReport = this.afterReport.bind(this);\n if ((this.getContext() as ITrackerContext).autoError) {\n window.addEventListener('error', this.handleError);\n window.addEventListener('unhandledrejection', this.handlePromiseError);\n this.proxyConsoleError();\n this.reportbeforeError();\n }\n return super.install();\n }\n\n /**\n * 发送onloan之前的错误\n */\n public reportbeforeError(): void {\n const beforeErrorList = this.getTracker().beforeErrorList || [];\n beforeErrorList.forEach((event) => {\n this.handleError(event, 'beforeLoad');\n });\n this.getTracker().beforeErrorList = [];\n }\n\n /**\n * 发送错误数据进行hook\n */\n private afterReport(event: any): void {\n const context: any = this.getContext();\n if (context) {\n if (context.errorHook) {\n // 防止报错将回调进行包裹\n try {\n context.errorHook(event);\n } catch (error) {\n console.info('回调异常');\n }\n }\n }\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IContext}\n */\n protected get initialzedContext(): IContext {\n const context: ITrackerAdvancedContext = this.getContext() as ITrackerAdvancedContext;\n return {\n ...super.initialzedContext,\n autoError: typeof context.autoError === 'boolean' ? context.autoError : true,\n jsErrorFilters: Array.isArray(context.jsErrorFilters) ? context.jsErrorFilters : []\n } as IContext;\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public execute(): void {\n /* Nothing to execute */\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public exit(): void {\n /* Nothing to exit */\n }\n\n /**\n * 获取Breadcrumb\n */\n private getBreadcrumbList(): string[] {\n const breadcrumbListName = (window as any)[this.breadcrumbListName] || [];\n if (breadcrumbListName.length > 10) {\n (window as any)[this.breadcrumbListName].length = 10;\n }\n return breadcrumbListName;\n }\n\n /**\n * 代理console.error\n */\n private proxyConsoleError() {\n const t = this;\n // 关闭的话不进行监听\n if ((t.getContext() as any).autoConsoleError === false) {\n return;\n }\n if (console && typeof console === 'object') {\n try {\n const fn = console.error;\n console.error = function() {\n try {\n const errEvent = arguments[0];\n if (errEvent && errEvent.message && errEvent.stack) {\n t.handleError({\n type: 'error',\n error: errEvent,\n message: errEvent.message\n });\n }\n } catch (error) {\n console.info(`代理console.error失败,${error}`);\n }\n return fn.apply(this, arguments as any);\n };\n } catch (error) {\n console.info(`代理console.error失败,${error}`);\n }\n }\n }\n\n /**\n * 获取错误类型\n * @param event\n */\n private getErrorType(event: any): string {\n const { message, error } = event;\n const eventStack = error && error.stack ? error.stack : '';\n const eventMessage = message || '';\n const errorMessage: string = `${eventStack}${eventMessage}`;\n let result: string = 'NoErrorType'; // 默认错误类型\n if (eventStack.startsWith('Error:') || eventMessage.startsWith('Error:')) { // 网络错误\n if (errorMessage.indexOf('Request failed') !== -1 ||\n errorMessage.indexOf('Network Error') !== -1\n ) { // 部分网络错误\n result = 'NetworkError';\n } else { // 其余网络错误\n result = 'Error';\n }\n } else if (errorMessage.indexOf('Script error') !== -1) { // script error\n result = 'ScriptError';\n } else {\n this.typeList.forEach((type: string): void => {\n if (errorMessage.indexOf(type) !== -1) {\n result = type;\n }\n });\n }\n return result;\n }\n\n /**\n * handle promise error.\n * - 类型promiseRejectionEvent由于typescript的原因改为any\n */\n protected handlePromiseError(promiseRejectionEvent: any, occasion: string = 'afterLoad'): void {\n const event = promiseRejectionEvent.reason || {};\n // 非正常的错误不进行上报\n if (!event.message || !event.stack) {\n return;\n }\n // 过滤ResizeObserver 错误的上报。在 Chrome 83 无限上报会造成浏览器卡死\n if (event.message && event.message.indexOf('ResizeObserver') !== -1) {\n return;\n }\n // 过滤正则匹配后的错误\n const context: ITrackerAdvancedContext = this.getContext() as ITrackerAdvancedContext;\n if (context.jsErrorFilters) {\n // 标记是否需要过滤掉\n let isFilter: boolean = false;\n context.jsErrorFilters.forEach(k => {\n const message = k.message;\n if (message instanceof RegExp && message.test(event.message)) {\n isFilter = true;\n }\n });\n if (isFilter) {\n return;\n }\n }\n const type = this.getErrorType(event);\n this.report({\n eventId: PluginUtils.EVENT_ID_JS_ERROR,\n attrs: {\n label: event.stack,\n message: 'Uncaught (in promise) ' + event.message,\n stack: event.stack || '',\n breadcrumb: this.getBreadcrumbList(),\n UUID: UUID.v4,\n type: type,\n typeMd5: Md5.hashStr(type),\n occasion: occasion\n }\n }).then(this.afterReport);\n }\n\n /**\n * handle js error.\n */\n protected handleError(event: ErrorEvent | any, occasion: string = 'afterLoad'): void {\n // 过滤ResizeObserver 错误的上报。在 Chrome 83 无限上报会造成浏览器卡死\n if (event.message && event.message.indexOf('ResizeObserver') !== -1) {\n return;\n }\n // 过滤正则匹配后的错误\n const context: ITrackerAdvancedContext = this.getContext() as ITrackerAdvancedContext;\n if (context.jsErrorFilters) {\n // 标记是否需要过滤掉\n let isFilter: boolean = false;\n context.jsErrorFilters.forEach(k => {\n const message = k.message;\n if (message instanceof RegExp && message.test(event.message)) {\n isFilter = true;\n }\n });\n if (isFilter) {\n return;\n }\n }\n const type = this.getErrorType(event);\n this.report({\n eventId: PluginUtils.EVENT_ID_JS_ERROR,\n attrs: {\n label: event.error ? event.error.stack : event.message,\n line: event.lineno,\n url: event.filename,\n col: event.colno,\n message: event.message,\n stack: event.error ? (event.error.stack || '') : '',\n breadcrumb: this.getBreadcrumbList(),\n UUID: UUID.v4,\n type: type,\n typeMd5: Md5.hashStr(type),\n occasion: occasion\n }\n }).then(this.afterReport);\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {ITrackedEventArgs} eventArgs\n * @returns {ITrackedEvent}\n */\n protected generateEvent(eventArgs: ITrackedEventArgs): ITrackedEvent {\n return new OMGH5JsErrorEvent(eventArgs.attrs, this.getContext());\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {boolean}\n */\n public uninstall(): boolean {\n window.removeEventListener('error', this.handleError);\n window.removeEventListener('unhandledrejection', this.handlePromiseError);\n return super.uninstall();\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of OMGH5JsErrorPlugin\n */\n\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport AOMGH5JsErrorPlugin from 'com/didichuxing/tracker/h5/plugins/AOMGH5JsErrorPlugin';\nimport SendStrategyChoice from 'com/didichuxing/tracker/h5/plugins/utils/SendStrategyChoice';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\n\nexport default class OMGH5JsErrorPlugin extends AOMGH5JsErrorPlugin {\n\n /**\n * @override\n * @inheritDoc\n * @returns {IEventReportor}\n */\n protected getEventReportor(event: ITrackedEvent): IEventReportor {\n return SendStrategyChoice.switchSendStrategy(this.getContext() as ITrackerContext, event);\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of PageViewEvent\n */\n\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IAttrs } from 'com/didichuxing/tracker/IAttrs';\nimport SequencedEvent from 'com/didichuxing/tracker/plugin/events/SequencedEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\nimport { IPerformanceMemory, IPerformanceTiming } from 'com/didichuxing/tracker/h5/plugins/IPerformance';\nimport { IPlanObject } from 'com/didichuxing/IPlanObject';\nimport { IObjectMap } from 'com/didichuxing/IObjectMap';\n\ninterface IPVExtraAttrs extends IAttrs {\n\n /**\n * @readonly\n * 载入当前文档的文档的 URL\n */\n readonly referrer: string;\n\n /**\n * @readonly\n * cookie是否开启\n */\n readonly cookieEnabled: boolean;\n\n /**\n * @readonly\n * 当前文档标题\n */\n readonly pageTitle: string;\n\n /**\n * @readonly\n * 当前访问协议\n */\n readonly protocol: string;\n\n /**\n * @readonly\n * 当前访问主机地址。\n */\n readonly host: string;\n\n /**\n * @readonly\n * 当前访问路径\n */\n readonly path: string;\n\n /**\n * @readonly\n * 当前访问hash\n */\n readonly hash: string;\n\n /**\n * @readonly\n * 当前访问search值。\n */\n readonly search: string;\n\n /**\n * @readonly\n * 当前设备屏幕高。\n */\n readonly screenHeight: number;\n\n /**\n * @readonly\n * 当前设备屏幕宽。\n */\n readonly screenWidth: number;\n\n /**\n * @readonly\n * 当前设备颜色深度\n */\n readonly colorDepth: string;\n\n /**\n * @readonly\n * 当前设备供应商。\n */\n readonly deviceVendor: string;\n}\n\nexport default class OMGH5PageViewEvent extends SequencedEvent {\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getType(): string {\n return PluginUtils.EVENT_ID_PAGE_VIEW;\n }\n\n /**\n * 获取全局性能信息。\n * {@link https://github.com/addyosmani/timing.js/issues/9}\n * @returns {Performance}\n */\n private get globalPerformance(): Performance {\n const global: any = window;\n return global.performance || global.webkitPerformance || global.msPerformance || global.mozPerformance;\n }\n\n /**\n * 获取时间方面性能数据。\n * {@link https://www.w3.org/TR/navigation-timing/}\n * @returns {IPerformance}\n */\n protected get performanceTiming(): IPerformanceTiming {\n const timing: PerformanceTiming = this.globalPerformance.timing;\n let FP: any = {};\n let FCP: any = {};\n let FMP: any = {};\n try {\n if (performance.getEntriesByName) {\n FP = performance.getEntriesByName('first-paint')[0];\n FCP = performance.getEntriesByName('first-contentful-paint')[0];\n FMP = performance.getEntriesByName('fmp')[0];\n }\n } catch (error) {\n console.info('未采集到性能数据');\n }\n return {\n redirectDuration: timing.fetchStart - timing.navigationStart,\n dnsDuration: timing.domainLookupEnd - timing.domainLookupStart,\n tcpDuration: timing.connectEnd - timing.connectStart,\n ttfbDuration: timing.responseStart - timing.requestStart,\n transDuration: timing.responseEnd - timing.responseStart,\n domParsedDuration: timing.domInteractive - timing.responseEnd,\n resourceLoadDuration: timing.loadEventStart - timing.domContentLoadedEventEnd,\n firstByteTime: timing.responseStart - timing.domainLookupStart,\n htmlLoadCompleteTime: timing.responseEnd - timing.navigationStart,\n firstPaintTime: FP && FP.startTime,\n firstContentfulPaintTime: FCP && FCP.startTime,\n firstMeaningfulPaintTime: FMP && FMP.startTime,\n interactTime: timing.domInteractive - timing.navigationStart,\n domReadyTime: timing.domContentLoadedEventEnd - timing.navigationStart,\n pageLoadTime: timing.loadEventStart - timing.navigationStart,\n domContentLoadedTime: timing.domContentLoadedEventEnd - timing.navigationStart,\n domCompleteTime: timing.domComplete - timing.navigationStart,\n trackerSDKLoadDuration: this.trackerSDKLoadDuration,\n loadEventTime: timing.loadEventEnd - timing.navigationStart\n };\n }\n\n /**\n * 获取内存方面性能数据。\n * @returns {IPerformanceMemory}\n */\n protected get performanceMemory(): IPerformanceMemory {\n const memory: IPlanObject = (this.globalPerformance as any).memory || {};\n return {\n usedJSHeapSize: memory.usedJSHeapSize as number || 0,\n totalJSHeapSize: memory.totalJSHeapSize as number || 0,\n jsHeapSizeLimit: memory.jsHeapSizeLimit as number || 0\n };\n }\n\n /**\n * tracker sdk包加载的时间。\n * @returns {number}\n */\n protected get trackerSDKLoadDuration(): number {\n if (this.globalPerformance && this.globalPerformance.getEntries) {\n const entries: PerformanceEntry[] = this.globalPerformance.getEntries();\n let trackerPerformanceEntry: PerformanceEntry | undefined;\n entries.some((entry: PerformanceEntry): boolean => {\n const initiatorType: string = (entry as PerformanceResourceTiming).initiatorType;\n if (initiatorType && initiatorType === 'script' && /\\/omega[\\.\\w]*\\.min\\.js$/.test(entry.name)) {\n trackerPerformanceEntry = entry;\n return true;\n }\n return false;\n });\n if (trackerPerformanceEntry) {\n return Math.round(trackerPerformanceEntry.duration);\n }\n }\n return 0;\n }\n\n /**\n * 获得pv上报时所带的性能数据。\n * @returns {(IAttrs & IPerformanceTiming & IPerformanceMemory) | IAttrs}\n */\n private get pvPerformanceAttrs(): (IAttrs & IPerformanceTiming & IPerformanceMemory) | IAttrs {\n if (this.globalPerformance) {\n return {\n ...this.performanceTiming,\n ...this.performanceMemory\n };\n }\n return {};\n }\n\n /**\n * 获取webView的加载时间\n * - 由端上开发注入\n */\n private get webViewLoadTime(): undefined | number {\n const global: any = window;\n // 如果在webView里面存在加载时间\n if (global.FKMetrics && global.FKMetrics.webviewLoadTime) {\n return global.FKMetrics.webviewLoadTime;\n }\n return undefined;\n }\n\n /**\n * 获取PV额外的属性数据。\n * @returns {IPVExtraAttrs}\n */\n private get pvExtraAttrs(): IPVExtraAttrs {\n const document: Document = window.document || {documentElement: {}};\n const navigator: Navigator = window.navigator || {};\n const location: Location = window.location || {};\n const screen: Screen = window.screen || {};\n const context: any = this.getContext();\n let search: string = location.search;\n if (context && context.noUrlParam) {\n search = '';\n }\n let offMode: string | undefined;\n /**\n * app识别离线模式\n */\n if (navigator.userAgent && navigator.userAgent.indexOf('OffMode/') !== -1) {\n const val: string = navigator.userAgent.split('OffMode/')[1] || '';\n // 获取OffMode的值\n offMode = val[0];\n }\n return {\n off_mode: offMode,\n t_wlt: this.webViewLoadTime,\n referrer: document.referrer,\n cookieEnabled: navigator.cookieEnabled,\n pageTitle: (this.getContext() as any).pageTitle || document.title,\n protocol: location.protocol,\n host: location.host,\n path: location.pathname,\n hash: location.hash,\n search,\n screenWidth: document.documentElement.clientWidth,\n screenHeight: document.documentElement.clientHeight,\n colorDepth: screen.colorDepth ? `${ screen.colorDepth }-bit` : '',\n deviceVendor: (this.getContext() as ITrackerContext).deviceVendor || ''\n };\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IAttrs}\n */\n protected getAttrs(): IAttrs {\n return {\n ...this.pvExtraAttrs,\n ...this.pvPerformanceAttrs,\n ...super.getAttrs()\n };\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {IObjectMap}\n */\n protected getAttrsKeyMap(): IObjectMap {\n return {\n ...super.getAttrsKeyMap(),\n ...this.getPVExtraAttrsKeyMap(),\n ...this.getPerformanceTimingAttrsKeyMap(),\n ...this.getPerformanceMemoryAttrsKeyMap()\n };\n }\n\n /**\n * PV额外上报属性键值对映射实体。\n * @returns {IObjectMap}\n */\n private getPVExtraAttrsKeyMap(): IObjectMap {\n return {\n referrer: 'r',\n cookieEnabled: 'c',\n pageTitle: 'pt',\n protocol: 'upr',\n host: 'uho',\n path: 'upa',\n hash: 'uha',\n search: 'us',\n screenHeight: 'sh',\n screenWidth: 'sw',\n colorDepth: 'cd',\n deviceVendor: 'm',\n pvType: 'pv_t'\n };\n }\n\n /**\n * 耗时相关性能属性键值对映射实体。\n * @see {@interface com/didichuxing/tracker/h5/plugins/pv/IPerformance}\n * @returns {IObjectMap}\n */\n private getPerformanceTimingAttrsKeyMap(): IObjectMap {\n return {\n dnsDuration: 't_dns',\n tcpDuration: 't_tcp',\n ttfbDuration: 't_rq',\n transDuration: 't_trans',\n domParsedDuration: 't_psdm',\n resourceLoadDuration: 't_res',\n firstByteTime: 't_fb',\n htmlLoadCompleteTime: 't_hlc',\n firstPaintTime: 't_fp',\n firstContentfulPaintTime: 't_fcp',\n firstMeaningfulPaintTime: 't_fmp',\n interactTime: 't_di',\n domReadyTime: 't_dmrd',\n pageLoadTime: 't_pgrd',\n domContentLoadedTime: 't_dcl',\n domCompleteTime: 't_dc',\n trackerSDKLoadDuration: 't_omgld',\n loadEventTime: 't_ld'\n };\n }\n\n /**\n * 内存相关性能属性键值对映射实体。\n * @see {@interface com/didichuxing/tracker/h5/plugins/pv/IPerformance}\n * @returns {IObjectMap}\n */\n private getPerformanceMemoryAttrsKeyMap(): IObjectMap {\n return {\n usedJSHeapSize: 'm_used',\n totalJSHeapSize: 'm_total',\n jsHeapSizeLimit: 'm_limit'\n };\n }\n}\n","/**\n * 页面的信息\n */\ninterface IPageInfo {\n path: string;\n hash: string;\n title: string;\n}\n\n/**\n * 当前的序列\n */\ninterface ISeqInfo {\n pageId: number;\n seq: number;\n}\n\nconst STAY_EVENT_ID = 'pub_stay_time_bt';\n/**\n * 属性\n * - http://omega.xiaojukeji.com/ba/point/detail?pointId=1112733#tab=pointattr\n */\ninterface IStayAttrs {\n /**\n * page id\n */\n id: number;\n /**\n * page hash\n */\n ph: string;\n /**\n * page title\n */\n pt: string;\n /**\n * page url\n */\n pu: string;\n /**\n * seq\n */\n s: number;\n /**\n * active time\n */\n ta: number;\n /**\n * live time\n */\n tl: number;\n}\n\n/**\n * 页面的时间插件\n * - 可过去当前页面的打开时间\n * - 可活动时长\n */\nexport default class PageStayTime {\n /**\n * 页面是否隐藏中\n */\n private pageHidding: boolean = false;\n /**\n * 是否开始心跳上报\n */\n private isStart: boolean = false;\n /**\n * 当前页面的信息\n */\n private pageInfo: IPageInfo = {\n path: '',\n hash: '',\n title: ''\n };\n /**\n * 当前上报的序列\n */\n private seqInfo: ISeqInfo = {\n pageId: 0,\n seq: 0\n };\n /**\n * 当前页面第一次pageview的时间\n */\n private startTime: number = 0;\n /**\n * 页面hide的时间\n */\n private pageHideTime: number = 0;\n\n /**\n * 触发hide的时间\n */\n private startHideTime: number = 0;\n\n /**\n * 当前上报的数据\n */\n private reportTimeId: any;\n /**\n * 上报\n */\n private report(eventId: string, eventLabel?: any, attrs?: any): Promise {\n return Promise.resolve();\n }\n\n constructor(props: any) {\n this.report = props.report;\n }\n /**\n * 开启停留时长\n */\n public start() {\n // 已经开始,上报最后一条信息\n if (this.isStart) {\n this.reportHeart();\n } else {\n // 第一次开始需要进行页面的监控\n this.addPageVisibilityChange();\n this.isStart = true;\n }\n this.init();\n // 自增pageId\n this.inCreasePageId();\n // 开启定时上报\n this.startTimeReport();\n }\n /**\n * 进行page的隐藏事件监听\n */\n private addPageVisibilityChange() {\n document.addEventListener('visibilitychange', () => {\n if (document.hidden) {\n this.onPageInHide();\n } else {\n this.onPageShow();\n }\n }, false);\n }\n /**\n * 当页面进入hide\n */\n private onPageInHide() {\n this.pageHidding = true;\n this.startHideTime = new Date().getTime();\n this.stopTimeoutReport();\n }\n /**\n * 页面展示触发\n */\n private onPageShow() {\n this.pageHidding = false;\n // 不存在开始隐藏时间\n if (this.startHideTime !== 0) {\n this.pageHideTime += (new Date().getTime() - this.startHideTime);\n } else {\n this.pageHideTime = 0;\n }\n /**\n * 直接上报一个心跳\n */\n this.reportHeart();\n /**\n * 开始自动上报\n */\n this.startTimeReport();\n }\n /**\n * 停止定时上报\n */\n private stopTimeoutReport() {\n if (this.reportTimeId) {\n clearTimeout(this.reportTimeId);\n this.reportTimeId = undefined;\n }\n }\n /**\n * 重置信息\n */\n private init = () => {\n // url的信息\n this.initUrlInfo();\n // 初始化时间\n this.initTime();\n // 初始化页面的状态\n this.initPageStatus();\n }\n /**\n * 页面状态\n */\n private initPageStatus = () => {\n if (document.hidden || document.visibilityState === 'hidden') {\n this.onPageInHide();\n }\n }\n /**\n * 进行url的信息获取\n */\n private initUrlInfo() {\n const path = `${location.host}${location.pathname}`;\n const hash = `${location.hash}`;\n const title = document.title;\n this.pageInfo = {\n path,\n hash,\n title\n };\n }\n /**\n * 重新设置时间\n * - 重置开始时间\n * - 重置隐藏时间\n * - 设置进入隐藏的时间\n */\n private initTime() {\n this.startTime = new Date().getTime();\n this.pageHideTime = 0;\n this.startHideTime = 0;\n }\n /**\n * 进行pageId自增\n */\n private inCreasePageId() {\n const pageId = this.seqInfo.pageId + 1;\n this.seqInfo = {\n pageId,\n seq: 0\n };\n }\n\n /**\n * 开始定时上报\n * - 每2s进行上报\n */\n private startTimeReport() {\n if (this.reportTimeId) {\n clearTimeout(this.reportTimeId);\n this.reportTimeId = undefined;\n }\n // 当页面为隐藏状态则不进行定时上报\n if (this.pageHidding) {\n return;\n }\n this.reportTimeId = setTimeout(() => {\n this.reportHeart();\n this.startTimeReport();\n }, 2 * 1000);\n }\n\n /**\n * 上报心跳\n */\n private reportHeart() {\n const now = new Date().getTime();\n /**\n * 存活时长保留一位小数\n */\n const liveTime = Math.round(( now - this.startTime) / 100) / 10;\n /**\n * 活跃时长保留一位小数\n */\n const activeTime = Math.round((now - this.startTime - this.pageHideTime) / 100) / 10;\n /**\n * seq自增\n */\n this.seqInfo.seq += 1;\n const attrs: IStayAttrs = {\n id: this.seqInfo.pageId,\n s: this.seqInfo.seq,\n tl: liveTime,\n ta: activeTime,\n ph: this.pageInfo.hash,\n pt: this.pageInfo.title,\n pu: this.pageInfo.path\n };\n this.report(STAY_EVENT_ID, attrs);\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AOMGH5PageViewPlugin\n */\n\nimport { ITracker } from '@omega-tracker/core/src/com/didichuxing/tracker/ITracker';\nimport { IContext } from 'com/didichuxing/context/IContext';\nimport { ITrackerConfiguration } from 'com/didichuxing/tracker/config/ITrackerConfiguration';\nimport { ITrackerAdvancedContext } from 'com/didichuxing/tracker/h5/context/ITrackerAdvancedContext';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { ITrackedEventArgs } from 'com/didichuxing/tracker/plugin/IReportingStrategyPlugin';\nimport AReportingStrategyPlugin from 'com/didichuxing/tracker/plugin/AReportingStrategyPlugin';\nimport OMGH5PageViewEvent from 'com/didichuxing/tracker/h5/plugins/events/OMGH5PageViewEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\nimport PageStayTime from './utils/PageStayTime';\n\nconst PV_TYPE = {\n hash: 'hash',\n popstate: 'popstate',\n normal: 'normal'\n};\n\nexport default abstract class AOMGH5PageViewPlugin extends AReportingStrategyPlugin {\n\n /**\n * 访问过的url栈。\n * @type {string[]}\n */\n private urlStatck: string[] = [document.referrer];\n\n /**\n * stayTime\n */\n private stayTime?: PageStayTime;\n\n /**\n * @constructor\n */\n constructor(tracker: ITracker) {\n super(tracker);\n this.reportPVUnderHashChange = this.reportPVUnderHashChange.bind(this);\n this.reportPVUnderPopstateChange = this.reportPVUnderPopstateChange.bind(this);\n this.urlStatck.push(location.href);\n }\n\n /**\n * @override\n * @returns {string}\n */\n public getName(): string {\n return PluginUtils.PLUGIN_NAME_PAGE_VIEW;\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {ITrackerConfiguration}\n */\n protected get initialzedContext(): IContext {\n const context: ITrackerAdvancedContext = this.getContext() as ITrackerAdvancedContext;\n return {\n ...super.initialzedContext,\n autoSendPageView: typeof context.autoSendPageView === 'boolean' ? context.autoSendPageView : true\n } as IContext;\n }\n\n /**\n * 上报PV数据。\n */\n protected reportPV(pvType: string): void {\n this.getTracker().setConfig({\n url: window.location.href\n });\n const context = this.getContext() as any;\n let referrer: string =\n this.urlStatck.length > 1 ? this.urlStatck[this.urlStatck.length - 2] : this.urlStatck[0];\n try {\n // 由于隐私问题,加入去除参数及过滤参数\n if (context && context.noUrlParam) {\n referrer = referrer.split('?')[0];\n } else if (context && context.formatUrl) {\n referrer = context.formatUrl(referrer);\n }\n } catch (error) {\n console.info('referrer解析异常', error);\n }\n const attrs = {\n referrer,\n pvType\n };\n /**\n * - 加入XSpm的参数\n */\n try {\n if (context && context.getXspmAttrs) {\n const xspmAttrs = context.getXspmAttrs();\n Object.assign(attrs, xspmAttrs);\n }\n } catch (error) {\n console.info('合并xspm参数失败');\n }\n this.report({\n eventId: PluginUtils.EVENT_ID_PAGE_VIEW,\n attrs\n });\n }\n\n /**\n * hash change上报pv\n */\n protected reportPVUnderHashChange(): void {\n this.reportPV(PV_TYPE.hash);\n }\n\n /**\n * popstate change上报pv\n */\n protected reportPVUnderPopstateChange(): void {\n this.reportPV(PV_TYPE.popstate);\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public execute(): void {\n const context: ITrackerAdvancedContext = this.getContext() as ITrackerAdvancedContext;\n // 是否启动心跳\n if (context.openStayTime) {\n this.stayTime = new PageStayTime({\n report: this.getTracker().trackEvent.bind(this.getTracker())\n });\n }\n if (context.autoSendPageView) { // 自动上报PV数据\n this.reportPV(PV_TYPE.normal);\n if (context.hashRouterEnable) { // 监控hash history change\n window.addEventListener('hashchange', this.reportPVUnderHashChange);\n }\n if (context.browserRouterEnable) { // 监控browser popstate change\n window.addEventListener('popstate', this.reportPVUnderPopstateChange);\n }\n }\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public exit(): void {\n while (this.urlStatck.length) {\n this.urlStatck.pop();\n }\n window.removeEventListener('hashchange', this.reportPVUnderHashChange);\n window.removeEventListener('popstate', this.reportPVUnderPopstateChange);\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {ITrackedEventArgs} eventArgs\n * @returns {ITrackedEvent}\n */\n protected generateEvent(eventArgs: ITrackedEventArgs): ITrackedEvent {\n try {\n // 切换页面后重启当前页面的停留时长\n this.stayTime && this.stayTime.start();\n } catch (error) {\n console.info('心跳失败');\n }\n return new OMGH5PageViewEvent(eventArgs.attrs, this.getContext());\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of OMGH5PageViewPlugin\n */\n\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport AOMGH5PageViewPlugin from 'com/didichuxing/tracker/h5/plugins/AOMGH5PageViewPlugin';\nimport SendStrategyChoice from 'com/didichuxing/tracker/h5/plugins/utils/SendStrategyChoice';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\n\nexport default class OMGH5PageViewPlugin extends AOMGH5PageViewPlugin {\n\n /**\n * @override\n * @inheritDoc\n * @returns {IEventReportor}\n */\n protected getEventReportor(event: ITrackedEvent): IEventReportor {\n return SendStrategyChoice.switchSendStrategy(this.getContext() as ITrackerContext, event);\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of OMGH5ErrorEvent\n */\n\nimport SequencedEvent from 'com/didichuxing/tracker/plugin/events/SequencedEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\n\n/**\n * 用户主动上报的错误事件。\n *\n * @class\n * @extends {SequencedEvent}\n */\nexport default class OMGH5ErrorEvent extends SequencedEvent {\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getType(): string {\n return PluginUtils.EVENT_ID_ERROR;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AOMGH5ErrorPlugin\n */\n\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { ITrackedEventArgs } from 'com/didichuxing/tracker/plugin/IReportingStrategyPlugin';\nimport AReportingStrategyPlugin from 'com/didichuxing/tracker/plugin/AReportingStrategyPlugin';\nimport OMGH5ErrorEvent from 'com/didichuxing/tracker/h5/plugins/events/OMGH5ErrorEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\n\nexport default abstract class AOMGH5ErrorPlugin extends AReportingStrategyPlugin {\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getName(): string {\n return PluginUtils.PLUGIN_NAME_ERROR;\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public execute(): void {\n /* execute */\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public exit(): void {\n /* Nothing to exit */\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {ITrackedEventArgs} eventArgs\n * @returns {ITrackedEvent}\n */\n protected generateEvent(eventArgs: ITrackedEventArgs): ITrackedEvent {\n return new OMGH5ErrorEvent(eventArgs.attrs, this.getContext());\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of OMGH5ErrorPlugin\n */\n\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport AOMGH5ErrorPlugin from 'com/didichuxing/tracker/h5/plugins/AOMGH5ErrorPlugin';\nimport SendStrategyChoice from 'com/didichuxing/tracker/h5/plugins/utils/SendStrategyChoice';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\n\nexport default class OMGH5ErrorPlugin extends AOMGH5ErrorPlugin {\n\n /**\n * @override\n * @inheritDoc\n * @returns {IEventReportor}\n */\n protected getEventReportor(event: ITrackedEvent): IEventReportor {\n return SendStrategyChoice.switchSendStrategy(this.getContext() as ITrackerContext, event);\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of OMGH5JsErrorEvent\n */\n\nimport SequencedEvent from 'com/didichuxing/tracker/plugin/events/SequencedEvent';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\nimport { IObjectMap } from 'com/didichuxing/IObjectMap';\n\nexport default class OMGH5PerformanceEvent extends SequencedEvent {\n\n /**\n * @override\n * @inheritDoc\n * @returns {IObjectMap}\n */\n protected getAttrsKeyMap(): IObjectMap {\n return {\n ...super.getAttrsKeyMap(),\n pageLoadTime: 't_pgrd'\n };\n }\n\n /**\n * @override\n * @inheritDoc\n * @returns {string}\n */\n public getType(): string {\n return PluginUtils.EVENT_ID_PERFORMANCE;\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of AOMGH5PageInitPlugin\n */\n\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\nimport { ITrackedEventArgs } from 'com/didichuxing/tracker/plugin/IReportingStrategyPlugin';\nimport OMGH5PerformanceEvent from 'com/didichuxing/tracker/h5/plugins/events/OMGH5PerformanceEvent';\nimport AReportingStrategyPlugin from 'com/didichuxing/tracker/plugin/AReportingStrategyPlugin';\nimport PluginUtils from 'com/didichuxing/tracker/plugin/utils/PluginUtils';\n\nexport default abstract class AOMGH5PerformancePlugin extends AReportingStrategyPlugin {\n /**\n * 是否上报过\n */\n private isReport: boolean = false;\n\n /**\n * 获取全局性能信息。\n * {@link https://github.com/addyosmani/timing.js/issues/9}\n * @returns {Performance}\n */\n private globalPerformance(): Performance {\n const global: any = window;\n return global.performance || global.webkitPerformance || global.msPerformance || global.mozPerformance;\n }\n\n /**\n * 获取请求的时间统计信息\n */\n private getEntries(): any[] {\n const performance: Performance = this.globalPerformance();\n if (performance && performance.getEntries) {\n let entries: any[] = window.performance.getEntries() || [];\n const global: any = window;\n // tslint:disable-next-line:no-empty\n const perTimeFunc = global['PerformanceEventTiming'] || function() { };\n entries = entries.filter(item => {\n return !(item instanceof perTimeFunc);\n });\n if (entries.length > 100) {\n entries.length = 100;\n }\n return entries;\n } else {\n return [];\n }\n }\n\n private getEntryLength(): number {\n const performance: Performance = this.globalPerformance();\n if (performance && performance.getEntries) {\n const entries: any[] = window.performance.getEntries() || [];\n return entries.length;\n } else {\n return 0;\n }\n }\n\n private reportData() {\n if (this.isReport) {\n return;\n }\n document.removeEventListener('visibilitychange', this.onVisibilityChange, true);\n\n const entries = this.getEntries();\n const entryLength = this.getEntryLength();\n const timing: PerformanceTiming = performance.timing;\n this.report({\n eventId: PluginUtils.EVENT_ID_PERFORMANCE,\n attrs: {\n entries: entries,\n entryLength: entryLength,\n pageLoadTime: timing.loadEventStart - timing.navigationStart\n }\n });\n this.isReport = true;\n }\n\n private onVisibilityChange() {\n const performance: Performance = this.globalPerformance();\n if (document.visibilityState === 'hidden') {\n performance && performance.mark('hidden');\n }\n if (document.visibilityState === 'visible') {\n performance && performance.mark('visible');\n document.removeEventListener('visibilitychange', this.onVisibilityChange, true);\n }\n }\n\n /**\n * @override\n * @returns {string}\n */\n public getName(): string {\n return PluginUtils.PLUGIN_NAME_PERFORMANCE;\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public execute(): void {\n this.onVisibilityChange = this.onVisibilityChange.bind(this);\n document.addEventListener('visibilitychange', this.onVisibilityChange, true);\n const context: any = this.getContext();\n const performance: Performance = this.globalPerformance();\n try {\n const performanceObserver: PerformanceObserver = new PerformanceObserver((list: any) => {\n try {\n if (context && context.lcpFilter) {\n const entries = list.getEntries();\n if (entries[0] && (entries[0]as any).element) {\n // 判断元素是否需要被过滤\n const isFilter = context.lcpFilter((entries[0]as any).element);\n if (isFilter === true) {\n return;\n }\n }\n }\n performance && performance.mark('largest-contentful-paint');\n } catch (error) {\n performance && performance.mark('largest-contentful-paint');\n }\n });\n performanceObserver.observe({ entryTypes: ['largest-contentful-paint'] });\n // 如果有用户交互,PerformanceObserver会停止观测,此时上报性能数据\n ['keydown', 'click'].forEach((type) => {\n addEventListener(type, () => {\n this.reportData();\n if (performanceObserver && performanceObserver.disconnect) {\n performanceObserver.disconnect();\n }\n }, { once: true, capture: true });\n });\n\n } catch (e) {\n // 如果浏览器不支持此API\n this.reportData();\n }\n }\n\n /**\n * @override\n * @inheritDoc\n */\n public exit(): void {\n /* Nothing to exit */\n }\n\n /**\n * @override\n * @inheritDoc\n * @param {ITrackedEventArgs} eventArgs\n * @returns {ITrackedEvent}\n */\n protected generateEvent(eventArgs: ITrackedEventArgs): ITrackedEvent {\n return new OMGH5PerformanceEvent(eventArgs.attrs, this.getContext());\n }\n}\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of DefaultExtraH5PluginsPublisher\n */\n\nimport PositionPlugin from 'com/didichuxing/plugins/defaultextra/PositionPlugin';\nimport OMGH5PageLeavePlugin from 'com/didichuxing/tracker/h5/plugins/h5/OMGH5PageLeavePlugin';\nimport OMGH5ClickPlugin from 'com/didichuxing/tracker/h5/plugins/h5/OMGH5ClickPlugin';\nimport OMGH5ReceivedPlugin from 'com/didichuxing/tracker/h5/plugins/h5/OMGH5ReceivedPlugin';\nimport OMGH5CustomPlugin from 'com/didichuxing/tracker/h5/plugins/h5/OMGH5CustomPlugin';\nimport OMGH5JsErrorPlugin from 'com/didichuxing/tracker/h5/plugins/h5/OMGH5JsErrorPlugin';\nimport OMGH5PageViewPlugin from 'com/didichuxing/tracker/h5/plugins/h5/OMGH5PageViewPlugin';\nimport OMGH5ErrorPlugin from 'com/didichuxing/tracker/h5/plugins/h5/OMGH5ErrorPlugin';\nimport OMGH5PerformancePlugin from 'com/didichuxing/tracker/h5/plugins/h5/OMGH5PerformancePlugin';\n// import OMGSafeTypingPlugin from 'com/didichuxing/tracker/h5/plugins/h5/OMGSafeTypingPlugin';\n\nexport default [\n PositionPlugin,\n OMGH5PageLeavePlugin,\n OMGH5ClickPlugin,\n OMGH5ReceivedPlugin,\n OMGH5CustomPlugin,\n OMGH5JsErrorPlugin,\n OMGH5PageViewPlugin,\n OMGH5ErrorPlugin,\n OMGH5PerformancePlugin\n // OMGSafeTypingPlugin\n];\n\n/*\nfunction encodeHash(str: string): number {\n let hash: number = 1315423911;\n for (let i: number = 0, j: number = str.length; i < j; ++i) {\n hash ^= ((hash << 5) + str.charCodeAt(i) + (hash >> 2));\n }\n return hash & 0x7FFFFFFF;\n}\n\nfunction uploadSpec(g: any, NAME_POINT: string, URL_POINT: string) {\n console.log(`[${ NAME_POINT }]: ${ URL_POINT } loaded`);\n try {\n // 如果是 webapp 5.0\n const instNames = Object.keys(g).filter(\n (key) => key.includes('__OMG_INSTANTIATION') &&\n (g)[key].context.appKey === 'omega3b0d3e7e46' // 'omega3b0d3e7e46' // holmes-web\n );\n if (instNames.length > 0) {\n console.log(`[${ NAME_POINT }]: 命中 ak`);\n const OmgInst: any = (g)[instNames[0]];\n const oc = OmgInst.context;\n const URL = `//${ oc.uploadHost }${ '/api/web/stat' }`; // `//omgup.xiaojukeji.com/api/web/stat`;\n\n const files: any = g.performance.getEntries().filter((it: any) => it.name.indexOf(URL_POINT) > -1);\n const duration = files.length > 0 ? files[0].duration : -1;\n\n const xhr = new XMLHttpRequest();\n xhr.timeout = oc.timeout || 1500;\n xhr.ontimeout = () => {\n console.log(`[${ NAME_POINT }]: Omega POST Timeout`);\n // reject(new TimeoutEvent(event.getType(), event.getData().attrs || {}, this.getContext()));\n };\n xhr.open('POST', URL);\n // ak=omega3b0d3e7e46&e=OMGJsMonitorConfig& OMGJsMonitorPlugin\n const data: any = {\n ak: oc.appKey,\n an: 'Others',\n attrs: {\n jv: oc.version,\n omgJsDuration: duration\n },\n e: NAME_POINT,\n fr: 'h5',\n oid: oc.openid || oc.omgId,\n ot: oc.osType,\n ov: oc.osVersion,\n seq: '0',\n ts: new Date().getTime(),\n v: oc.url,\n ua: oc.userAgent,\n uo: oc.utcOffset,\n uwid: oc.viewportId\n // tk: encodeHash\n };\n let newData: any = Object.assign({}, data);\n newData.attrs = JSON.stringify(data.attrs);\n newData = Object.keys(newData).map((key) => `${ key }=${ encodeURIComponent(newData[key]) }`).join('&');\n newData = newData + `&tk=${ encodeHash(newData) }`;\n xhr.send(newData);\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4 && xhr.status === 200) {\n const response = JSON.parse(xhr.responseText);\n if (response.state && response.state.code !== 200) {\n if (response.state.code === 500) {\n console.log(\n `[${ NAME_POINT }]: error code=${ response.state.code }, msg=${ response.state.msg }`);\n // this.errorreportedEvents.add(event);\n }\n // GlobalUtil.dispatchOmgLog(`POST 200 上报错误${event.getType()}_\n // ${response.state.code || 0}_${response.state.msg || ''}`);\n }\n // ReportCallbackUtil.reportCallback(response);\n // resolve(event);\n console.log(`[${ NAME_POINT }]: done`);\n }\n };\n xhr.onerror = () => {\n console.log(`[${ NAME_POINT }]: onerror`);\n if (xhr.status === 500) {\n // this.errorreportedEvents.add(event);\n } else {\n // console.error('POST上报失败onerror' + xhr.status);\n }\n // reject(new FailedEvent(new Error('POST Error'), event.getType(),\n // event.getData().attrs || {}, this.getContext()));\n };\n\n console.log(`[${ NAME_POINT }]: 发出请求`);\n }\n } catch (error) {\n console.log(`[${ NAME_POINT }]: warn`);\n console.warn(error);\n }\n}\n\nconst gw = window as any;\nif (gw) {\n const NAME_POINT = 'OMGJsMonitorPlugin';\n const URL_POINT = 'omega.default.extra.plugins.min.js';\n uploadSpec(gw, NAME_POINT, URL_POINT);\n}\n*/\n","/**\n * Copyright (c) 2018-present, Didi, Inc.\n * All rights reserved.\n *\n * @author Cory(kuanghongrui@didichuxing.com)\n *\n * @file The class of OMGH5PageViewPlugin\n */\n\nimport { ITrackerContext } from 'com/didichuxing/tracker/context/ITrackerContext';\nimport { IEventReportor } from 'com/didichuxing/tracker/plugin/reportor/IEventReportor';\nimport AOMGH5PerformancePlugin from 'com/didichuxing/tracker/h5/plugins/AOMGH5PerformancePlugin';\nimport SendStrategyChoice from 'com/didichuxing/tracker/h5/plugins/utils/SendStrategyChoice';\nimport { ITrackedEvent } from 'com/didichuxing/tracker/event/ITrackedEvent';\n\nexport default class OMGH5PerformancePlugin extends AOMGH5PerformancePlugin {\n\n /**\n * @override\n * @inheritDoc\n * @returns {IEventReportor}\n */\n protected getEventReportor(event: ITrackedEvent): IEventReportor {\n return SendStrategyChoice.switchSendStrategy(this.getContext() as ITrackerContext, event);\n }\n}\n"],"names":["_toObject","it","Object","defined","_has","key","hasOwnProperty","call","_cof","toString","slice","_toLength","min","toInteger","_objectKeysInternal","object","names","O","toIObject","i","result","IE_PROTO","has","push","length","arrayIndexOf","_fails","exec","e","_domCreate","is","document","createElement","_toPrimitive","S","isObject","fn","val","valueOf","TypeError","$export","type","name","source","own","out","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","IS_PROTO","P","IS_BIND","B","IS_WRAP","W","exports","core","expProto","PROTOTYPE","target","global","undefined","ctx","C","a","b","c","this","arguments","apply","Function","virtual","R","hide","IS_INCLUDES","_defined","_iobject","propertyIsEnumerable","cof","split","_toIobject","IObject","ceil","Math","floor","_toInteger","isNaN","max","_core","commonjsHelpers.createCommonjsModule","module","version","__e","_global","window","self","__g","_shared","SHARED","store","value","mode","copyright","id","px","random","_uid","concat","shared","require$$0","_sharedKey","uid","$this","el","fromIndex","toLength","index","require$$1","_enumBugKeys","_objectKeys","keys","$keys","enumBugKeys","_aFunction","_ctx","that","aFunction","_isObject","_anObject","_descriptors","defineProperty","get","_ie8DomDefine","require$$2","dP","_objectDp","f","Attributes","anObject","toPrimitive","IE8_DOM_DEFINE","_propertyDesc","bitmap","enumerable","configurable","writable","_hide","createDesc","U","_export","_objectSap","KEY","exp","fails","toObject","_wksDefine","$Symbol","Symbol","charAt","wksExt","Empty","wrap","tag","sym","AllSymbols","_create","_k","$defineProperties","enumKeys","l","$defineProperty","$propertyIsEnumerable","E","isEnum","ObjectProto","OPSymbols","HIDDEN","_redefine","_meta","setMeta","setDesc","META","w","isExtensible","FREEZE","preventExtensions","meta","NEED","fastKey","create","getWeak","onFreeze","_wks","USE_SYMBOL","def","TAG","_setToStringTag","stat","prototype","_wksExt","_objectGops","getOwnPropertySymbols","_objectPie","_enumKeys","getKeys","getSymbols","gOPS","symbols","pIE","_isArray","Array","isArray","arg","_objectDps","defineProperties","Properties","_html","documentElement","createDict","iframe","style","display","appendChild","src","iframeDocument","contentWindow","open","write","lt","close","_objectCreate","dPs","hiddenKeys","_objectGopn","getOwnPropertyNames","gOPN","windowNames","_objectGopnExt","getWindowNames","gOPD","getOwnPropertyDescriptor","_objectGopd","$GOPD","$DP","gOPNExt","$JSON","JSON","_stringify","stringify","wks","TO_PRIMITIVE","SymbolRegistry","USE_NATIVE","$GOPS","QObject","setter","findChild","setSymbolDesc","DESCRIPTORS","$fails","D","protoDesc","isSymbol","iterator","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","redefine","$set","set","es6Symbols","j","wellKnownSymbols","k","wksDefine","for","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","args","require$$4","$Object","Reflect","_ownKeys","ownKeys","getOwnPropertyDescriptors","getDesc","desc","T","obj","_Object$defineProperty","__esModule","commonjsHelpers.unwrapExports","enumerableOnly","_Object$keys","_Object$getOwnPropertySymbols","filter","_Object$getOwnPropertyDescriptor","forEach","_Object$getOwnPropertyDescriptors","_Object$defineProperties","instance","Constructor","_defineProperties","props","descriptor","protoProps","staticProps","_objectGpo","getPrototypeOf","constructor","propertyKey","receiver","proto","check","_setProto","setPrototypeOf","test","buggy","__proto__","$getPrototypeOf","_getPrototypeOf","o","_Object$setPrototypeOf","_Object$getPrototypeOf","superPropBase","property","_get","_Reflect$get","base","_setPrototypeOf","p","_invoke","un","subClass","superClass","_Object$create","arraySlice","factories","_bind","bind","partArgs","bound","len","n","join","construct","invoke","rConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","isNativeReflectConstruct","_Reflect$construct","sham","Proxy","Boolean","symbol","_iterators","IteratorPrototype","returnThis","TO_STRING","ITERATOR","BUGGY","VALUES","_iterDefine","Base","NAME","next","DEFAULT","IS_SET","FORCED","setToStringTag","getMethod","kind","methods","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","entries","Iterators","values","$at","pos","s","String","charCodeAt","iterated","_t","_i","done","point","_iterStep","step","Arguments","TO_STRING_TAG","DOMIterables","Collection","_typeof_1","_typeof","_Symbol","_Symbol$iterator","assertThisInitialized","ReferenceError","possibleConstructorReturn","Derived","hasNativeReflectConstruct","NewTarget","Super","PluginUtils","_classof","tryGet","ARG","callee","_speciesConstructor","SPECIES","run","queue","defer","ArrayProto","core_getIteratorMethod","getIteratorMethod","classof","_forOf","BREAK","RETURN","iterable","iterFn","getIterFn","ret","process","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","ONREADYSTATECHANGE","listener","event","data","nextTick","now","port","channel","port2","port1","onmessage","postMessage","addEventListener","importScripts","cel","html","removeChild","setTimeout","_task","clear","macrotask","Observer","MutationObserver","WebKitMutationObserver","Promise","isNode","PromiseCapability","resolve","reject","promise","$$resolve","$$reject","_promiseResolve","x","promiseCapability","newPromiseCapability","_newPromiseCapability","_perform","v","navigator","_userAgent","userAgent","SAFE_CLOSING","head","last","notify","toggle","node","task","microtask","flush","standalone","then","createTextNode","observe","characterData","parent","domain","exit","enter","empty","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","PROMISE","versions","v8","$Promise","newPromiseCapabilityModule","FakePromise","PromiseRejectionEvent","indexOf","isThenable","isReject","chain","_n","_c","_v","ok","_s","reaction","exited","handler","fail","_h","emit","onrejectionhandled","reason","console","unhandled","isUnhandled","perform","onunhandledrejection","error","_a","$reject","_d","_w","$resolve","wrapper","executor","forbiddenField","anInstance","err","safe","require$$3","onFulfilled","onRejected","speciesConstructor","catch","require$$6","r","capability","promiseResolve","skipClosing","arr","iter","require$$7","all","remaining","forOf","$index","alreadyCalled","race","finally","onFinally","isFunction","try","callbackfn","EventStatus","performance","timing","loadEventEnd","readyState","str","replace","mesageEvent","createEvent","initMessageEvent","dispatchEvent","location","protocol","item","getData","viewportId","sequence","uniq","DataQueueSet","context","getInstance","unreportedEvents","reportEventsAfterLoad","removeEventListener","unreportedItem","shift","reportEventImmediately","GlobalUtil","isEmptyString","appKey","dispatchOmgLog","Error","errorreportedEvents","_this","removeAll","$assign","assign","_objectAssign","A","K","aLen","_extends","_Object$assign","attrs","info","trackerVersion","getContext","productName","url","href","modifyAppKey","noUrlParam","formatUrl","eventId","getType","timestamp","Date","getTime","appName","appVersion","omgId","osType","osVersion","userName","userId","bizId","locale","countyId","countryCallingCode","utcOffset","getAttrs","from","getFrom","latitude","longitude","cityId","telephone","_label","prop","eventData","dataKeyMap","getDataKeyMap","_JSON$stringify","newkeys","sort","kvs","attrsJsonStr","serializeAttrs2JsonStr","encodeURIComponent","serializedAttrs","attrsKeyMap","getAttrsKeyMap","thisAttrs","openId","getVersion","AEvent","FAILED","TIMEOUT","rawSerialized","cbObjName","ReportCallbackUtil","OMG_CALLBACK_OBJ_NAME","cbkMethodName","reportCallback","cbArg","bn","OMG_EVENT_BLACKLIST_NAME","eventid","splice","hash","encodeHash","forbidReportEventListKey","AH5EventReportor","forbidReportEventList","startForbidReport","reportForBidEvent","forbidReport","pop","cId","Number","ts","addForbidEvent","_Promise","onChangeForbidFalse","URL","getProtocol","_this2","uploadHost","reportPath","xhr","XMLHttpRequest","timeout","ontimeout","TimeoutEvent","setRequestHeader","cid","getOmgci","send","EncodeHash","encodeHashUrl","serialize","onreadystatechange","status","response","parse","responseText","state","code","add","msg","onerror","FailedEvent","sendBeacon","PostEventReportor","prefix","SequencedEvent","OMG_SEQUENCE_NAME_PREFIX","suffix","OMG_SEQUENCE_NAME_SUFFIX","NORMAL","EVENT_ID_RECEIVED","deviceVendor","BLOCKED","UPLOAD_DOMAIN_LOCAL","UPLOAD_DOMAIN_GLOBAL","UPLOAD_DOMAIN_RU","UA_BROWSER_REGEXPS","uaRegExps","UA_OS_REGEXPS","tracker","installed","AppKey","breadcrumbListName","getBreadcrumbListName","initialzedContext","uaRegExpNameItems","ua","idx","regExpExecArray","wx","miniProgram","getEnv","res","miniprogram","my","appInfo","getInfo","getBrowserRegExpsInUA","osInfo","getOSRegExpsInUA","getDeviceInfo","getUploadHost","eventArgs","cb","EVENT_ID_CLICK","sliceBreadcrumbList","some","BlockedEvent","compatibleCallback","finalEvent","dispatchTrackerEventUnderWindow","trackedEvent","generateEvent","addTrackerEventToBreadcrumb","getEventReportor","reportEvent","AReportingStrategyPlugin","PLUGIN_NAME_RECEIVED","SendStrategyChoice","switchSendStrategy","positionable","lng","lat","getTracker","setLocation","report","config","autoPosition","fetchPosition","setConfigHandler","setConfig","OMGH5ReceivedEvent","adviceSetConfigHandler","EVENT_ID_PAGE_LEAVE","reportLeaveUnderHashChange","reportLeaveUnderPopstateChange","PLUGIN_NAME_PAGE_LEAVE","reportFromLeave","hashRouterEnable","browserRouterEnable","OMGH5PageLeaveEvent","AOMGH5PageLeavePlugin","doc","viewportHeight","offsetHeight","body","viewportWidth","offsetWidth","element","hierarchies","tagName","toLowerCase","ElementUtils","getNodeIndexInSiblings","parentElement","reverse","children","toLocaleUpperCase","nodeName","toLocaleLowerCase","targetRect","getBoundingClientRect","targetTagName","getTargetTagName","targetId","targetName","getAttribute","targetHref","targetClassName","className","targetX","round","left","targetY","top","targetWidth","width","targetHeight","height","hierarchy","getHierarchy","ViewportUtils","getViewportBox","targetText","getViewportBoxAttrsMap","eventInfo","clickedCover","attr","getRealTarget","customClickedInfo","clickedCoverisChild","getTargetChildAttrs","clickedFilter","hasAttribute","customFilterClickedInfo","attrKey","parentNode","childNodeAttrs","childArr","nodeType","targetPostion","targetPosition","getElementExtraAttrs","pointX","pageX","clientX","scrollLeft","pointY","pageY","clientY","scrollTop","clickedExtraAttrs","clickedAttrs","getElementExtraAttrsMap","PLUGIN_NAME_CLICK","handleDocumentClick","autoClick","targetClassList","classes","contains","evt","getClickedFilter","eventTarget","correspondingUseElement","class","containClasses","classList","OMGH5ClickEvent","getClickedCover","getClickedCoverChild","aopHandlers","aopHandler","remove","AOMGH5ClickPlugin","AOMGH5ReceivedPlugin","PLUGIN_NAME_CUSTOM","OMGH5CustomEvent","creatInfo","AOMGH5CustomPlugin","EVENT_ID_JS_ERROR","byteToHex","substr","buf","offset","bth","UUID","getByte2Hex","rnds","bytesToUuid","_stringWs","space","spaces","ltrim","RegExp","rtrim","exporter","ALIAS","FORCE","trim","string","TYPE","$parseInt","parseInt","$trim","hex","_parseInt","ws","radix","Int32Array","ArrayBuffer","privateBuffer8","Uint8Array","privateBuffer","privateBuffer32","Uint32Array","start","privateDataLength","privateBufferLength","privateState","Md5","stateIdentity","buf8","buf32","bufLen","_md5cycle","input","buffer","fromCharCode","buflen","raw","buffer32Identity","subarray","dataBitsLen","matches","match","lo","hi","_hex","onePassHasher","appendStr","end","appendAsciiStr","hc","hexChars","ho","hexOut","d","PLUGIN_NAME_JS_ERROR","handleError","handlePromiseError","afterReport","autoError","proxyConsoleError","reportbeforeError","beforeErrorList","errorHook","jsErrorFilters","_Array$isArray","t","autoConsoleError","errEvent","message","stack","eventStack","eventMessage","errorMessage","startsWith","typeList","promiseRejectionEvent","occasion","isFilter","getErrorType","label","breadcrumb","getBreadcrumbList","v4","typeMd5","hashStr","line","lineno","filename","col","colno","OMGH5JsErrorEvent","AOMGH5JsErrorPlugin","EVENT_ID_PAGE_VIEW","webkitPerformance","msPerformance","mozPerformance","globalPerformance","FP","FCP","FMP","getEntriesByName","redirectDuration","fetchStart","navigationStart","dnsDuration","domainLookupEnd","domainLookupStart","tcpDuration","connectEnd","connectStart","ttfbDuration","responseStart","requestStart","transDuration","responseEnd","domParsedDuration","domInteractive","resourceLoadDuration","loadEventStart","domContentLoadedEventEnd","firstByteTime","htmlLoadCompleteTime","firstPaintTime","startTime","firstContentfulPaintTime","firstMeaningfulPaintTime","interactTime","domReadyTime","pageLoadTime","domContentLoadedTime","domCompleteTime","domComplete","trackerSDKLoadDuration","loadEventTime","memory","usedJSHeapSize","totalJSHeapSize","jsHeapSizeLimit","trackerPerformanceEntry","getEntries","entry","initiatorType","duration","performanceTiming","performanceMemory","FKMetrics","webviewLoadTime","offMode","screen","search","off_mode","t_wlt","webViewLoadTime","referrer","cookieEnabled","pageTitle","title","host","path","pathname","screenWidth","clientWidth","screenHeight","clientHeight","colorDepth","pvExtraAttrs","pvPerformanceAttrs","getPVExtraAttrsKeyMap","getPerformanceTimingAttrsKeyMap","getPerformanceMemoryAttrsKeyMap","pvType","pageId","seq","initUrlInfo","initTime","initPageStatus","hidden","visibilityState","onPageInHide","eventLabel","isStart","reportHeart","addPageVisibilityChange","init","inCreasePageId","startTimeReport","onPageShow","pageHidding","startHideTime","stopTimeoutReport","pageHideTime","reportTimeId","clearTimeout","pageInfo","seqInfo","_this3","liveTime","activeTime","tl","ta","ph","pt","pu","PV_TYPE","reportPVUnderHashChange","reportPVUnderPopstateChange","urlStatck","PLUGIN_NAME_PAGE_VIEW","autoSendPageView","xspmAttrs","getXspmAttrs","reportPV","openStayTime","stayTime","PageStayTime","trackEvent","OMGH5PageViewEvent","AOMGH5PageViewPlugin","EVENT_ID_ERROR","PLUGIN_NAME_ERROR","OMGH5ErrorEvent","AOMGH5ErrorPlugin","EVENT_ID_PERFORMANCE","perTimeFunc","entryLength","isReport","onVisibilityChange","getEntryLength","mark","PLUGIN_NAME_PERFORMANCE","performanceObserver","PerformanceObserver","list","lcpFilter","entryTypes","reportData","disconnect","once","capture","OMGH5PerformanceEvent","PositionPlugin","OMGH5PageLeavePlugin","OMGH5ClickPlugin","OMGH5ReceivedPlugin","OMGH5CustomPlugin","OMGH5JsErrorPlugin","OMGH5PageViewPlugin","OMGH5ErrorPlugin","AOMGH5PerformancePlugin"],"mappings":"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"}